本菜入门已有2天,花了近20小时终于成功完成第一次处女脱,小有心得。特写此文献给像我这样刚入门,而有不得要领,极其苦闷的菜鸟。
古人云:工欲善其事,必先利其器。我们先要准备好比备的软件。
1。 ollydbg, 及其插件 SV_isdebug, cmdline
2。 LordPe
3。 ImportRec, 以上软件可以在看雪学院主页工具下载中找到
4。 Asprdbgr 这个软件可以在本讨论区下载,搜索一下就可以了。
既然我是菜鸟,我的第一件作品应该是被人脱了又脱,很多菜鸟,老鸟都写了帖子总结其成功的经验。那就是小虾的notepad。 在动手之前,仔细阅读他人成功的经验,因为我是菜鸟,什么都不懂。 以下是我认为必读的帖子
小虾的心得,
http://bbs.pediy.com/showthread.php?s=&threadid=2744&highlight=asprotect+1.23 在此贴可以下载压过的记事本
hmimys的心得
http://bbs.pediy.com/showthread.php?s=&threadid=3131&highlight=asprotect+1.23
http://bbs.pediy.com/showthread.php?s=&threadid=3252&highlight=asprotect+1.23
fly大虾的作品
http://bbs.pediy.com/showthread.php?s=&threadid=1852&highlight=asprotect+1.23
http://bbs.pediy.com/showthread.php?s=&threadid=817&highlight=asprotect+1.23
看完文章,应该可以动手了。 动手之前,必须把掌握ollydbg基本操作,汗。。我第一次用ollydbg。
F2设置断点, F7,F8,类似debug的T,P, F9继续执行, hr设置硬件断点,这些基本操作要知道。
下面我说说每一步的要点。
1,用ollydbg打开notepady.exe,按照大师的方法,走到最后一个异常(从载入后,连续按26个shift-F9) 在ret处设置断点后,
shift-f9继续。然后照猫画虎,设置硬件断点等等,然后dump文件。 在哪里dump呢?
00C6571A 03C3 add eax,ebx <-当程序运行到这里,打住,切换到桌面,调出LordPE,开始dump
00C6571C BB AC000000 mov ebx,0AC
00C65721 0BDB or ebx,ebx
00C65723 75 07 jnz short 00C6572C
00C65725 894424 1C mov dword ptr ss:[esp+1C],eax
00C65729 61 popad
00C6572A 50 push eax
00C6572B C3 retn
00C6572C E8 00000000 call 00C65731
下面说说如何dump文件。调出loadpe后,可以看到上下2个窗口,从上面的窗口选中notepady.exe,鼠标右键,分别选dump full, 和dump region(软件没汉化T^T), 然后用选PE editor按钮,调入刚存的dump.exe,选旁边的section按钮,随便点section table中一个,鼠标右键,然后选择load section from disk,把刚存的****.dmp文件读入,这时我们发现多了个region00块,修改此块的voffset,具体的修改值,看上面的文章。然后按rebuild PE按钮,修复刚存的dump.exe。过于options的问题,打开options窗口,右下角有快叫rebuilder,只选validate PE,其他不管,至于其他的块,按缺省设置。
我之所以只写细节,主要因为以上文章的作者(都是高人呀)认为这些都是理所当然的东西。从而不提或一笔带过,因为软件的熟悉程度不够,而我们菜鸟往往卡在这些细节上,从而影响对文章的理解。 至于具体实施方法,大家说的已经很详细了,也用不着我多说了。我再这里卡了好几个小时,不知道怎么从硬盘加载section.
下面就应该修复dump.exe了,
首先,退出ollydebug.这很关键。然后运行asprdbgr, 用asprdbgr调入notepady.exe, 一路按Yes下去,等程序运行后,不要退出,运行importrec,在当前进程中选notepady.exe,oep先别管,RVA和size填入刚才asprdbgr的结果(IAT Start: 4062E4...Length: 240),RVA记得要减去0x400000,右边new import infos一块就不要动了,原来怎样就怎样,另外不要修改importrec的options,除非你不是菜鸟。
不要按IAT autosearch,直接点get imports。这时你就可以在上面地import funtions found窗口发现结果,点点show invalid看看有没有非法结果,要是有,鼠标右键,选trace level1,然后再挨个看非法结果,首先鼠标右键disamble/hexview,看看能不能看,要是说error,就鼠标右键cut thunk(s),要是能看,你就尽自己最大能力去看吧。目前我还是菜鸟,没有进阶到这一步
至于oep随便填,只要在region00内就可以,本菜推荐填刚才dump的地方,就是00C6571A,记住填的数值是00C6571A-400000哦,
然后用ollydbg打开dump_.exe文件,加入转跳语句。然后存盘。
好像没有更多地方的只得注意了。。本菜水平有限, 只是希望能给别的菜鸟椅点启发, 大虾高手们千万别见笑。
[培训]科锐逆向工程师培训第53期2025年7月8日开班!