今天早上在论坛下载了一个软件 DeepFreezePasswordRemover
DeepFreezePasswordRemover
,看了下软件的大小23k,本能反应应该是加壳了,看看是什么壳。右键Peid
Peid
FSG 2.0 -> bart/xt的壳,一款很老的壳了。今天周末,那就拿来脱壳练习下吧!
--------------------
FSG脱壳要领:找到OEP后,填写IAT地址,IR修复就可以了
--------------------
那就开始脱壳吧!OD载入
OD载入FSG
本人OD脱壳的习惯是:
直接在跳转单击,然后按F4,碰到程序执行之后,再按下键盘上的-号按键,OD会自动返回
刚才跑飞的地方,在跑飞的跳转处还有可以的跳转处下断后,在重新载入。
按照上面的方法开始脱壳,在 004001DA ^\EB EE jmp short DeepFree.004001CA 按下F4后程序跑飞了
F4跑飞
程序跑飞了,说明OEP就在附近了,按下键盘上的-号按键。OD自动返回到
004001DA ^\EB EE jmp short DeepFree.004001CA
OD界面往上拉,仔细观察后没有发现大的跳转,较为可疑的就是
004001D1 FF63 0C jmp dword ptr ds:[ebx+0xC]
直接下断,OD重新载入,运行
magic jmp
程序断下来,看到 信息框显示的内容是
ds:[00411CB0]=0040109C (DeepFree.0040109C)
也就是004001D1 FF63 0C jmp dword ptr ds:[ebx+0xC]
的跳转地址就是 jmp 0040109C,这是个大跳转,基本可以肯定OEP就是109C (= 0040109C -0040000 )。
单步进入跳转,右键移除分析,看到了熟悉的VB代码的入口点
VB_oep
往上面拉就是此款程序的API了。
API
使用LoedPe Dump出文件,ImpRECv1.7修复IAT
dump
运行后,就直接错误了!
00000000错误
然后我就纳闷了,哪里错了呢?
于是就打开通用脱壳工具之小米脱壳来脱壳试试
小米脱壳给力,成功脱下了壳,脱壳文件76k,并且能成功运行。
小米脱壳
自动脱壳机能脱壳成功,我咋就脱壳失败了,这个壳很简单的。
然后就OD载入脱壳后的错误文件,开始单步调试,调试了很多次,没有结果
于是纠结中。。。哪里错了,程序没有自校验啊!
思考中。。。IAT也修复了!
渐渐忘记了。。。
下午重新想起来的时候,为什么不对比一下IAT呢?
-----------------------
使用LordPE添加API
-----------------------
于是打开了两个LordPE,查看小米脱壳机脱壳的IAT和ImpRECv1.7修复后的IAT
这时有了发现,发现少了一个API,下图中绿色框框住的部分
那么在OD中对应的地址就是0040106A
iat对比
问题应该就是在这里,立马使用OD分别载入两个脱壳文件
前往0040106A,发现真的是有一个API掉了
0040106A .- FF25 38104000 jmp dword ptr ds:[<&MSVBVM60.#rtcRightCharVar_619>>; msvbvm60.rtcRightCharVar
0040106A FF25 38104000 jmp dword ptr ds:[0x401038]
OD对比
为了验证下,就直接修改0040106A 处的汇编代码为 jmp msvbvm60.rtcRightCharVar
在OD中按下F9程序成功跑起来了
-----------------------
接下来开始修复,这里使用LordPE添加输入表,然后填写Dll:msvbvm60.dll,API:rtcRightCharVar,
点击加号,点击OK
添加IAT
记下图中的偏移地址:1301F,加上400000,就是0041301F
偏移地址
LordPE保存退出
OD载入脱壳后的文件,在数据窗口中 ctrl + g ,输入0041301F,回车,
手动添加的API,已经成功添加进去了。
数据窗口
接下来就是使用OD修改代码,右击保存修改后的文件为dump_fix.exe
OD修复
双击,发现错误消失了,程序正常运行起来了,手动脱壳后的文件大小为76K。
----------------------
发现的一些问题,自己无法解决,请教下有经验的人
----------------------
1、为什么ImpREC在修复iat的时候不会自动查到0x401038处的api :msvbvm60.rtcRightCharVar
但是0x401034处的Api msvbvm60.rtcLeftCharVar 却能够找到,两个地址就相差了4。
就算是扩大了ImpREC的搜索大小size还是找不到msvbvm60.rtcLeftCharVar,我就纳闷了。
2、还有像这个错误是不是都是API错误,00000000的00000000错误。
附件下载:
DeepFreezePasswordRemover.rar
(61.79 KB, 下载次数: 38)
|