查壳

UPX的壳很好脱,可以在网上找现成的脱壳工具、或者是手动用单步跟踪法、ESP定律法。

截屏2019-11-09下午9.45.21

下断点

  1. 找到OEP然后下断(这里入口点感觉被修改过变异过 不像正常的vc++2015程序的入口点)
  2. 右键字符串智能搜索
  3. 找到关键字 input Your Flag 单步跟踪

截屏2019-11-09下午10.26.46

截屏2019-11-09下午10.29.31

分析

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

111

关键函数1

截屏2019-11-09下午10.55.47

关键函数2

截屏2019-11-09下午11.01.54

截屏2019-11-09下午11.00.05

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}


截屏2019-11-09下午11.18.50

欢迎加入QQ群:一起研究逆向 、PWN、WEB安全、物联网安全

Pwn菜鸡学习小分队群聊二维码