第三届上海市大学生网络安全大赛crackme
用PEID查壳
发现是个nSPack的壳
手脱
OD自动载入之后停在了这里,发现是pushfd和pushad
所以有两种方法
A:popad寻找法
用Ctrl+F去查找popad
B:ESP定律法
第一个命令先F8,单步执行
在ESP右击,选择数据窗口中跟随
跟踪这个值
选中46 02 00 00这四个字节,右击断点,硬件访问,Dword,选择
然后F9运行,跳转到这儿
看到了这个长跳转,知道了401336离OEP很近了,单步F8,再次单步
所以,1621是OEP的RVA
接下来是用PETools来DUMP文件
在PETools选中这个crackme,右击选择,完整转存
然后是使用Import REC
点击IAT AutoSearch,Get Imports
然后把OEP改成1621
Fix Dump
然后再使用PETools
脱壳成功
IDA查看Strings,发现有error和right:
开头的t就是74h换算过来的ASCII码116,摁R就能看到
Python脚本
python
serial_1 = "this_is_not_flag" |
得出
flag{59b8ed8f-af22-11e7-bb4a-3cf862d1ee75}