PELock将原程序中的一些6字节指令重定向到外壳申请的空间去执行,这样脱壳以后程序就会出现访问异常。下面是PELock通常下毒手的一些指令:
第一组:
004011C6 JMP 00880187
004011CB DB 00
00880187 CALL DWORD PTR DS:[404008] ; call dword ptr [XXXXXXXX]
0088018D JMP ACP_Feed.004011CC
第二组:
0040190A JMP 00880341
0040190F CDQ
00880341 LEA EBX,DWORD PTR DS:[C5FCE76]
00880347 LEA EBX,DWORD PTR DS:[EBX+22CDBDF0]
0088034D LEA EBX,DWORD PTR DS:[EBX+459B7BE1]
00880353 LEA EBX,DWORD PTR DS:[EBX+8B36F7C3] ; mov ebx, XXXXXXXX
00880359 JMP ACP_Feed.0040190F
当然这里也有可能是eax, ecx, ebp ... whatever
第三组:
004010D8 JMP 008800FD
004010DD PUSH DWORD PTR FS:[EDX]
008800FD PUSH 40119A ; push XXXXXXXX
00880102 JMP ACP_Feed.004010DD
第四组:
00401293 JMP 008801B1
00401298 JE SHORT 004012A1
008801B1 CMP EAX,0D00 ; cmp eax, XXXXXXXX
008801B7 JMP ACP_Feed.00401298
当然这里也有可能是ebx, ecx, ebp ... whatever
Copyright by redoc (redoc at citiz.net)
指令的变形并不复杂,甚至可以说几乎没有变化,但是给转储带来困难。一种比较取巧的方法是把这些区段补到脱壳后的文件中,但是要完美还原的话还是要写代码来修复。jingulong达人曾经给出一段修复代码,没能耐心看完,自己写了一个ODbgScript脚本做了一下类似反汇编器的工作如下:
mov TmpOpcode, [TmpRemoteJmp], 1
cmp TmpOpcode, FF // call/jmp dword ptr [XXXXXXXX]
je CallJmpDwordIns
cmp TmpOpcode, 8D // lea reg32, [XXXXXXXX]
je AddRegIns
cmp TmpOpcode, 68 // push XXXXXXXX
je PushConstIns
cmp TmpOpcode, 81 // cmp reg32, XXXXXXXX
je CmpRegIns
msg "new mode" // more transforming modes to be revealed:)
ret
…………………………
完美还原所有的Redirected Code到原来的位置上,脚本比较长,不过理解了上述原理就很容易实现。
最后剩下需要处理的就是Delphi的那张表了,我们注意一下程序运行到入口点时eax的值:00356C20
@ACP_Feed_00356C20:
dd 000000007h, 000356C28h, 000401E24h, 000401DF4h, 000401C64h, 000401C10h, 000401E5Ch, 000401E2Ch
| |
~~~~~~~~~~~~~
dd 000401F2Ch, 000401EFCh, 000401F64h, 000401F34h, 000401FA4h, 000401F74h, 000000000h, 0004020E8h
这是一张地址表,既包含了数据又包含了代码指针,需要留意的是上面标出的这两个数据,第二个数据恰好是指向第三个数据的指针。
现在我们把这个表搬到脱壳以后废弃的区段中,把入口点处的 "mov eax, XXXXXXXX" 中的 XXXXXXXX 设定为这个表的指针。
今年的暖冬让人不禁战栗,也许在南太平洋的某块水域,一场完美的热带风暴正在紧张的酝酿之中……
PELock, u r TermiNated...
| 另类破解鸽子连接密码 | 03-21 | |
| 教菜鸟写注册机 | 12-27 | |
| QQ聊天记录察看器 5.2算法分析 | 12-04 | |
| 如何汉化一个软件 | 12-02 | |
| 扭曲变换加密 【目前防止软件被破 | 11-02 | |
| 破解利器Olldbg脚本教学(二)- | 10-31 | |
| 破解利器Olldbg脚本教学(一)- | 10-30 | |
| 破解WebEasyMail v3.6.2.1 企业版 | 10-24 | |
| 破解利器OllyDBG入门系列(五)- | 10-18 | |
| 破解利器OllyDBG入门系列(四)- | 10-17 | |
| 揭开高级游戏黑客的面纱,轻松打 | 10-17 | |
| 破解利器OllyDBG入门系列(三)- | 10-15 | |