13年360举办的某几个逆向题的简单分析
逆向1:bmp图片修复
首先有一个坑,winhex搜索key就能找到一个key,不过当然false
下面就是解题思路:
094fce+36 = 094f98
修改1:BM标识,在windows的标识
修改2:0xA处的大小为固定值0x0036
逆向2: c#破解
ILlasm或者reflector静态调试软件
reflector直接就可以反编译出源码,代码没加混淆以及反调试或者壳,
所以很简单。
reflector反编译结果:
private void btn_ok_Click(object sender, EventArgs e) { if (this.textBox_Pass.Text == "") { MessageBox.Show("请输入密码!"); } else { char[] array = this.textBox_Pass.Text.Replace(".", "-").Replace("7", "t").Replace("4", "a").Replace("1", "I").Replace("0", "o").Replace("O", "0").ToCharArray(); Array.Reverse(array); string s = new string(array); s.ToUpper(); char[] chArray2 = Convert.ToBase64String(Encoding.GetEncoding("UTF-8").GetBytes(s)).ToCharArray(); Array.Reverse(chArray2); string str2 = new string(chArray2); string str3 = new string(Convert.ToBase64String(Encoding.GetEncoding("UTF-8").GetBytes(str2)).ToCharArray()); if (str3 == "PTBpVGxSM1lqTWtVaE4yU0pOM1J2Qnph") { MessageBox.Show("密码正确!密码就是Key!", "成功"); } else { MessageBox.Show("密码错误!", "失败"); } } }
字符转换:
小写字母o换成数字0
数字0换成大写0
_ .
t 7
a 4
I 1
PTBpVGxSM1lqTWtVaE4yU0pOM1J2Qnph
解密得到 =0iTlR3YjMkUhN2SJN3RvBza
逆序 azBvR3NJS2NhUkMjY3RlTi0=
解密得到 k0oGsIKcaRC#cteN-
逆序 -Netc#CRacKIsGo0k
最后变换得到key
key: .Netc#CR4cK1sG0Ok
逆向3:PE文件修复+异常的构造
经过分析我们只需在4010C2处构造一个异常即可,这里我构造了一个访问异常。
SetUnhandledExceptionFilter函数设置了一个对异常的处理,参数就是异常处理函数地址。
异常处理函数:
key就是MessageBox弹出框的内容。