查壳
UPX的壳很好脱,可以在网上找现成的脱壳工具、或者是手动用单步跟踪法、ESP定律法。
下断点
- 找到OEP然后下断(这里入口点感觉被修改过变异过 不像正常的vc++2015程序的入口点)
- 右键字符串智能搜索
- 找到关键字 input Your Flag 单步跟踪
分析
1 2 3 4 5 6 7 8 9 10
| 01355386 52 push edx 01355387 68 68A03501 push reverse.0135A068 ; fmcj2y~{ 0135538C E8 16C0FFFF call reverse.013513A7; 比较最后输入的命令行参数是否为(fmcj2y~{) 01355391 83C4 08 add esp,0x8 ; 类似于c:\tset\reverse.exe fmcj2y~{ 01355394 85C0 test eax,eax 01355396 74 19 je Xreverse.013553B1 01355398 68 307E3501 push reverse.01357E30 ; Input Error!\n 0135539D E8 D8BFFFFF call reverse.0135137A 013553A2 83C4 04 add esp,0x4 013553A5 33C0 xor eax,eax
|
关键函数1
关键函数2
41A078地址的值为:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| 41A078[0] = 50 41A078[1] = c6 41A078[2] = f1 41A078[3] = e4 41A078[4] = e3 41A078[5] = e2 41A078[6] = 9a 41A078[7] = a1 41A078[8] = a7 41A078[9] = de 41A078[10] = da 41A078[11] = 46 41A078[12] = ab 41A078[13] = 2e 41A078[14] = ff 41A078[15] = db
|
最后将每个值减1
得到flag
flag{4fc5f0e3e2e199a0a6ddd945aa2dfeda}
欢迎加入QQ群:一起研究逆向 、PWN、WEB安全、物联网安全