TA的每日心情 | 慵懒 2018-6-6 15:51 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
希望这位会员下次注意~也在此提醒下其它的会员~请遵规则~
一.查壳得知为RLPack V1.15-V1.17 知道有这壳以前没搞过拿它来练手吧~看这位朋友坚持着破例写一次 OD载入看下入口点
004F2CD7 > 60 PUSHAD /F8
004F2CD8 E8 00000000 CALL 004F2CDD /F8到这里停下 看寄存器ESP值显红色,右链--跟随到数据窗口
004F2CDD 8B2C24 MOV EBP,DWORD PTR SS:[ESP]
004F2CE0 83C4 04 ADD ESP,4
004F2CE3 8DB5 53030000 LEA ESI,DWORD PTR SS:[EBP+353]
004F2CE9 8D9D 02020000 LEA EBX,DWORD PTR SS:[EBP+202]
004F2CEF 33FF XOR EDI,EDI
004F2CF1 E8 45010000 CALL 004F2E3B
004F2CF6 EB 0F JMP SHORT 004F2D07
//很明显的直接ESP定律试下(基础的知识还是要掌握的,好比打字开始要看着键盘打,熟练了可以不用看键盘打,甚至可以忘记掉五笔的字根,引用fonge兄弟的话,忘记掉一切意由我随行)
0012FFA4 7C930738 ntdll.7C930738 右链--断点-硬件访问-word 下好断之后SHIFT+F9 断在下面
004F2E16 61 POPAD
004F2E17 - E9 9C4DF9FF JMP 00487BB8 //断在这里 F8单步到过OEP
004F2E1C 61 POPAD
00487BB8 55 PUSH EBP //OEP 完整DUMP&FIX 之后程序为DELPHI程序但运行不起来,看了下应该是有自校验
00487BB9 8BEC MOV EBP,ESP
00487BBB 83C4 F0 ADD ESP,-10
00487BBE B8 B8794800 MOV EAX,004879B8
00487BC3 E8 84E3F7FF CALL 00405F4C
00487BC8 A1 7C9C4800 MOV EAX,DWORD PTR DS:[489C7C]
00487BCD 8B00 MOV EAX,DWORD PTR DS:[EAX]
00487BCF E8 288BFEFF CALL 004706FC
00487BD4 8B0D 789D4800 MOV ECX,DWORD PTR DS:[489D78] ; kRavSnCh.0048AC60
二.去除自校验 OD载入脱壳修复的文件 直接F9 产生异常来到
0041851B |. 8B73 08 MOV ESI,DWORD PTR DS:[EBX+8] /看信息栏,这样当然运行不起来了
DS:[00000019]=???
ESI=00E91804
向上翻几行来到此段的代码头
00418514 /$ 53 PUSH EBX //看这里,有N多CALL调用此处crtl+r查看所有调用 在每个调用的CALL上下好断点(一共52个)重载程序
00418515 |. 56 PUSH ESI
00418516 |. 57 PUSH EDI
00418517 |. 8BFA MOV EDI,EDX
00418519 |. 8BD8 MOV EBX,EAX
0041851B |. 8B73 08 MOV ESI,DWORD PTR DS:[EBX+8]
重载程序后SHIFT+F9运行程序 一直运行直到出现错误为止,然后按下小键盘上的 "-"号看看是哪个CALL调用了这里产生错误异常,于是发现是这里调用了这段代码导致出错.
00418118 /$ 53 PUSH EBX
00418119 |. E8 E2DDFEFF CALL 00405F00
0041811E |. 8B98 0C000000 MOV EBX,DWORD PTR DS:[EAX+C]
00418124 |. 85DB TEST EBX,EBX
00418126 |. 75 19 JNZ SHORT 00418141
00418128 |. B2 01 MOV DL,1
0041812A |. A1 205E4100 MOV EAX,DWORD PTR DS:[415E20]
0041812F |. E8 14B0FEFF CALL 00403148
00418134 |. 8BD8 MOV EBX,EAX
00418136 |. E8 C5DDFEFF CALL 00405F00
0041813B |. 8998 0C000000 MOV DWORD PTR DS:[EAX+C],EBX
00418141 |> E8 BADDFEFF CALL 00405F00
00418146 |. 8B90 08000000 MOV EDX,DWORD PTR DS:[EAX+8]
0041814C |. 8BC3 MOV EAX,EBX
0041814E |. E8 C1030000 CALL 00418514 //这个CALL调用了那段代码而产生了异常错误,好找到关键地方了,在此段代码的首(00418118)下好段,重载程序其它的断点暂时留着我也不知道还会有哪个CALL会调用那段代码,重载好了,SHIFT+F9运行直到停在"00418118"(刚才查得是这个CALL调用那段代码从而导致了异常).N十次SHIFT+f9之后停在了这里仔细的看下这两行
00418126 |. /75 19 JNZ SHORT 00418141 //我想这里一定是跳走了,从而导至了异常
00418128 |. |B2 01 MOV DL,1 //敏感的东西~不会用语言表达~算是一个标志位吧~或许在代码的前面还有关键点.暂时从上面这个跳转动手吧
00418126 |. /75 19 JNZ SHORT 00418141 //把它行NOP掉~让其不跳~直接附以标志
00418126 90 NOP // 修改完毕之后,禁用所有断点(因为之前下了好多断点,不先禁用会停好多次^_^),运行测试一下,结果正常~
00418127 90 NOP
三.小结
此壳不难关键在于去校验~首先要求大家要能区别什么情况是脱壳不正确产生的错误~什么样的情况是程序的校验~这就要求大家在平时要多做练习~多总结!欢迎遇到问题发贴出来讨论~而不是一味的把自己搞不定的程序放到论坛上来"求 脱"~如果哪位兄弟帮你脱好了放了个脱好的给你~你学到什么呢~如果单纯的是为了用这个程序你脱它目的何在?修改?把原创作者的信息改成自己的?这样不尊重别人劳动成果的人或许真的就是RPYWT.
[ 本帖最后由 glts 于 2007-9-27 12:01 编辑 ] |
|