0X01 初体验
作业一:??(OD入口和区段都很迷) exeinfo下界面显示 UPX
作业二:e语言 (界面显示是:nspack(我也不知道这是什么)) exeinfo区段信息没什么用,都被修改过了
作业三:VMP
问题:od怎么看区段信息.....界面稍有点复杂
要了解win32API
0X02 再分析
作业一:
(1)Exeinfo
UPX -> Markus & Laszlo ver. [ ] <- from file. [ ! Modified ! ] ( sign like UPX packer )
故可以确定为是UPX壳
(2) 手脱UPX壳
★ 新知识 ESP定律
ESP定律从我理解来说,就是程序开始时有个PUSHAD指令来保存所有寄存器状态,PUSHAD指令就像是大括号,有PUSH就有POP,两者共同的特点就是修改了ESP寄存器的值,所以我们需要在被修改的值上下硬件断点,来找到POP指令的位置,找到POP后就离原本的程序OEP不远了
第一条指令就是pushad,这显然不是普通程序应该有的第一条指令,pushad保存当前的上下文,即把寄存器的值存到堆栈中。
pushad后,可以看到堆栈中的内容正是之前的各个寄存器的值,其中栈顶保存的是EDI的值。栈顶的地址存储在ESP中。如果程序要正常运行,必定要从栈中取回这些值,因此可以到栈顶的内容表示的地址去看看会进行什么操作。
练习链接,感兴趣自取。
链接:https://pan.baidu.com/s/1K8nPCIefj8NwBuaXCXDYJQ
提取码:lgdd