iawen 发表于 2007-11-11 15:26:44

标题:针对tElock的IAT加密

标题:脱tELock方法总结
说明:主要针对tElock的IAT加密

tElock的特点主要为:IAT的加密

用通常的脱壳方法也可壳,如内存镜像法,但是修复IAT时却很麻烦,需要用到等级三。

我们可以在跟踪程序时,通过修改MAG跳,跳过外壳对IAT的加密,具体方法如下:
1、OD载入程序
2、Alt+M,打开内存镜像,在包含为空在段下断点,然后Shift+F9运行
   如果没有空段,一般可在rsrc资源段下断,即可

3、程序中断后,按Ctrl+B,搜索:0A F6 89 54
一般如:

/ 0040D346    0AF6            or      dh, dh
| 0040D348    895424 1C       mov   dword ptr , edx
| 0040D34C    61            popad
| 0040D34D    C685 D7CC4000 0>mov   byte ptr , 0
\ 0040D354    74 24         je      short 0040D37A============MAG跳
                  //将这修改为:jmp      short 0040D37A

4、Alt+M打开内存镜像,在代码段下断,按Shift+F9运行,就可以直达OEP了,
此时脱壳修复,IAT全为有效!

见附件的记事本程序!


针对tElock 0.98b1的一些补充:
1、首先Alt+M打开内存镜像,在data段下断点,然后按Shift+F9运行,中断在:
01019D38    AC            lods    byte ptr
01019D39    02C2            add   al, dl

    注:如果直接在rsrc段下断,就会直接步过MAGIC跳了!^#^
    针对IAT的加密,主要就是找到这个MAGIC的位置,大家可以对一些分别下断,就可以找到了,具体情况,具体对待!

2、按Ctrl+B,搜索:0A F6 89 54
0101A346    0AF6            or      dh, dh
0101A348    895424 1C       mov   dword ptr , edx
0101A34C    61            popad
0101A34D    C685 D7CC4000 0>mov   byte ptr , 0
0101A354    74 24         je      short 0101A37A

3、修改了MAGIC跳之后,在MAGIC跳下断,而不要直接到内存镜像下代码段断点,Shift+F9运行后断在:
0101A354    74 24         jmp      short 0101A37A    //F2下断

单步F8步过后,再Alt+M到内存镜像下断资源段断点:
Memory map, 条目 27      //F2下断
地址=01016000
大小=00003000 (12288.)
属主=tElock_0 01000000
区段=.rsrc
包含=资源
类型=Imag 01001004
访问=RW
初始访问=RWE

按Shift+F9运行断下后,再Alt+M,下代码段断点:
Memory map, 条目 25      //F2断点
地址=01001000
大小=00013000 (77824.)
属主=tElock_0 01000000
区段=.text
包含=代码
类型=Imag 01001004
访问=RW
初始访问=RWE

Shift+F9,就直接到OEP了,^@^,此时dump下来后用ImportREC修复就没有无效指针了

测试的两个程序:

jimpy 发表于 2009-4-30 02:52:10

为什么是查找 0A F6 89 54啊

oldmanguo 发表于 2009-7-6 18:33:31

就是啊,同楼上一样迷茫。。。

幽雅的心 发表于 2010-2-19 22:01:12

支持下,学习了。

天佑乐天 发表于 2010-5-26 15:28:13

支持下,学习了。

ctt 发表于 2010-5-31 02:32:59

这个壳应该不南把

fsf359 发表于 2010-8-30 11:00:58

我觉得这样的帖子没有实际意义。。 没有方法。。 脱壳好像在背书
页: [1]
查看完整版本: 标题:针对tElock的IAT加密