2次内存断点快速脱tElock 0.98壳
【调试环境】:WinXP、PEiD、ODbyDYK v1.10、ImportREC1.42【学习目的】:手动脱tElock 0.98 -> tE!壳
【目标软件】:tElock 0.98加壳的win98记事本
【作者声明】:初学Crack,只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
------------------------------------------------------------------------------------------
1.前言
二哥的脱壳进阶教程第2课里早已有关于以tElock 0.98 -> tE!加壳软件的脱壳方法,今天无意在中国共享
天空(bbs.chinadev.net)看到一种新的脱壳方式,觉得脱法简单易学,对我这个新手来说比较直观简便,也
比较容易接受和掌握。本文可以说模仿其脱壳方法的一个过程,以此献给像我一样的菜鸟做参考,高手则略
过。
2.脱壳过程
OD载入程序,忽略所有异常,再添加以下几个异常C0000005(ACCESS VIOLATION)、C000001D(ILLEGAL
INSTRUCTION)、C000001E(INVALID LOCK SEQUENCE)、C0000096(PRIVILEGED INSTRUCTION)
入口代码:
0040DBD6 N>^\E9 25E4FFFF jmp NOTEPAD.0040C000
0040DBDB 0000 add byte ptr ds:,al
0040DBDD 00E8 add al,ch
0040DBDF F6EC imul ah
0040DBE1 FA cli
0040DBE2 1E push ds
0040DBE3 DC00 fadd qword ptr ds:
0040DBE5 0000 add byte ptr ds:,al
0040DBE7 0000 add byte ptr ds:,al
0040DBE9 0000 add byte ptr ds:,al
0040DBEB 0000 add byte ptr ds:,al
用快捷alt+M 打开内存映射,来到以下的地方:
00400000 00001000 NOTEPAD PE header Imag 01001002 R RWE
00401000 00004000 NOTEPAD .text code Imag 01001002 R RWE
00405000 00001000 NOTEPAD .data data Imag 01001002 R RWE
00406000 00001000 NOTEPAD .idata Imag 01001002 R RWE
00407000 00005000 NOTEPAD .rsrc resources Imag 01001002 R RWE
在00400000PEHeader下第一次内存断点,F9运行,shift+F9中断以下代码处:
77F51539 66:8139 4D5A cmp word ptr ds:,5A4D-----------中断在这里
77F5153E 75 1D jnz short ntdll.77F5155D
77F51540 8B51 3C mov edx,dword ptr ds:
77F51543 81FA 00000010 cmp edx,10000000
77F51549 73 12 jnb short ntdll.77F5155D
77F5154B 8D040A lea eax,dword ptr ds:
77F5154E 8945 E4 mov dword ptr ss:,eax
77F51551 8138 50450000 cmp dword ptr ds:,4550
77F51557 0F85 C00F0200 jnz ntdll.77F7251D
77F5155D 834D FC FF or dword ptr ss:,FFFFFFFF
77F51561 E8 E8760200 call ntdll.77F78C4E
77F51566 C2 0400 retn 4
再次用快捷alt+M 打开内存映射,再次来到以下的地方:
00400000 00001000 NOTEPAD PE header Imag 01001002 R RWE
00401000 00004000 NOTEPAD .text code Imag 01001002 R RWE
00405000 00001000 NOTEPAD .data data Imag 01001002 R RWE
00406000 00001000 NOTEPAD .idata Imag 01001002 R RWE
00407000 00005000 NOTEPAD .rsrc resources Imag 01001002 R RWE
这次在00401000 code下第二次内存断点,F9运行,shift+F9中断笔记本oep处:
004010CC 55 push ebp----------断在这里
004010CD 8BEC mov ebp,esp
004010CF 83EC 44 sub esp,44
004010D2 56 push esi
004010D3 FF15 E4634000 call dword ptr ds:
004010D9 8BF0 mov esi,eax
004010DB 8A00 mov al,byte ptr ds:
004010DD 3C 22 cmp al,22
004010DF 75 1B jnz short NOTEPAD.004010FC
004010E1 56 push esi
用OD插件直接将其dump出来,运行ImportREC1.42,填入OEP:10cc,"autosearch", 再"get import",
有无效指针,用level 3 或tElock 0.98插件追踪,发现有4个指针无法修复,将其"cut"掉,然后修复即可。修复后的
程序可正常运行。 看过了 支持下~ 怎么我就不行呢,我晕,我也是一样的做的啊 我也是.第一次中断后就跳到了下面,和楼主说的不一样啊
7C930806 66:8139 4D5A cmp word ptr ds:,5A4D
7C93080B 75 1D jnz short ntdll.7C93082A
7C93080D 8B51 3C mov edx,dword ptr ds:
7C930810 81FA 00000010 cmp edx,10000000
7C930816 73 12 jnb short ntdll.7C93082A 宫本就看不懂 此附件依照该脱法不完成,我的是在XP2下。 第一次: 00407000 00005000 NOTEPAD .rsrc resources Imag 01001002 R RWE下内存访问断点
第二次: 00401000 00004000 NOTEPAD .text code Imag 01001002 R RWE 下内存访问断点
这个可以到达OEP,但楼主说的,我也无法到达OEP~~不知道为什么?~ 呵```老贴都顶上来了```我的两次是这样的
第一次: 00405000 00001000 NOTEPAD .data data Imag 01001002 R RWE 下内存访问断点
修改MAGIC JUMP 后再
第二次: 00401000 00004000 NOTEPAD .text code Imag 01001002 R RWE 下内存访问断点
IAT完整,DUMP
------------------------------------
第一次用这个也可以
第一次: 00407000 00005000 NOTEPAD .rsrc resources Imag 01001002 R RWE下内存访问断点
只是这样得不到完好的IAT,有点怪 原帖由 风球 于 2006-5-10 15:32 发表
呵```老贴都顶上来了```我的两次是这样的
第一次: 00405000 00001000 NOTEPAD .data data Imag 01001002 R RWE 下内存访问断点
修改MAGIC JUMP 后再
第二次: 0040100 ...
呵呵,不明白!那位朋友来做个演示更好!
页:
[1]
2