首页
社区
课程
招聘
[原创]说说处理加密IAT的一种常用方法
发表于: 2007-4-14 08:07 17231

[原创]说说处理加密IAT的一种常用方法

2007-4-14 08:07
17231

【文章标题】: 说说处理加密IAT的一种常用方法
【文章作者】: wynney
【下载地址】: 打包下载
【作者声明】: 凑热闹~^_^
--------------------------------------------------------------------------------
【详细过程】

  零、前言

  在论坛上看到很多朋友说一些教程看不懂,需要多讲一些原理,抽点空写了这篇文章,大侠飘过:)

  一、引述
  
  在讲述这个方法之前,我们先看一个实例,壳子是CrypToCrackPeProtector 0.93的,最后一个区段名是.ccp3p。它加密
  的软件的输入表是加密了的,算是一个简单的加密壳了。
  
  忽略所有异常
  
  


0046B000 > 5B pop ebx ; EP
0046B001 81E3 00FFFFFF and ebx, FFFFFF00
0046B007 66:813B 4D5A cmp word ptr [ebx], 5A4D
0046B00C 75 33 jnz short 0046B041
0046B00E 8BF3 mov esi, ebx

00400000 00001000 CrypToCr PE header Imag R RWE
00401000 0004A000 CrypToCr .text code Imag R RWE
0044B000 0000C000 CrypToCr .rdata Imag R RWE
00457000 00009000 CrypToCr .data data Imag R RWE
00460000 00003000 CrypToCr .idata Imag R RWE
00463000 00008000 CrypToCr .rsrc resources Imag R RWE
0046B000 00002000 CrypToCr .ccp3p SFX,imports Imag R RW

004271B0 55 push ebp ; OEP
004271B1 8BEC mov ebp, esp
004271B3 6A FF push -1
004271B5 68 600E4500 push 00450E60
004271BA 68 C8924200 push 004292C8
004271BF 64:A1 00000000 mov eax, dword ptr fs:[0]
004271C5 50 push eax
004271C6 64:8925 0000000>mov dword ptr fs:[0], esp
004271CD 83C4 A8 add esp, -58
004271D0 53 push ebx
004271D1 56 push esi
004271D2 57 push edi
004271D3 8965 E8 mov dword ptr [ebp-18], esp
004271D6 FF15 DC0A4600 call dword ptr [460ADC] ; 应该是GetVersion,其他的IAT也都加密了

0046B338 893C8A mov dword ptr [edx+ecx*4], edi ; 中断在这,看寄存器
0046B33B 807F 05 55 cmp byte ptr [edi+5], 55
0046B33F 73 0C jnb short 0046B34D
0046B341 2B47 01 sub eax, dword ptr [edi+1]

EAX 7C8114AB kernel32.GetVersion
ECX 0000005A
EDX 00460974 CrypToCr.00460974
EBX 00400000 CrypToCr.00400000
ESP 0013FFB4
EBP 7C800000 kernel32.7C800000
ESI 00460014 CrypToCr.00460014
EDI 0046B823 CrypToCr.0046B823
EIP 0046B338 CrypToCr.0046B338

/*
Script written by wynney

Date: 2007-04-13
Script:CrypToCrackPeProtector Fixer
Environment : OllyDbg 1.1, ODBGScript 1.52,Winxp Sp2
Debugging options: Tick all items in OllyDbg's Debugging Options-Exceptions

Thanks :
kanxue - author of HideOD
hnhuqiong - author of ODbgScript 1.52
*/
var OEP
var temp
var IAT

Start:
find eip,#2D000000805055FF5424??5A595B8B7C2404#
cmp $RESULT,0
je Error
mov temp,$RESULT
mov IAT,temp
mov OEP,temp
sub OEP,25
add IAT,12
bp IAT
esto
bc IAT
repl eip,#893C8A#,#89048A#,3
bp OEP
esto
bc OEP
sti

Done:
dpe "\\UnPacked.exe", eip
cmt eip,"OEP"
ret

Error:
msg "错误"
ret

0098089F - FF25 E4314000 jmp dword ptr [4031E4]
009808A5 - E9 B014A8FF jmp Dll_Load.00401D5A
009808AA B0 FF mov al, 0FF
009808AC 15 C4314000 adc eax, 4031C4
009808B1 - E9 F214A8FF jmp Dll_Load.00401DA8
009808B6 F2: prefix repne:
009808B7 FF15 C0314000 call dword ptr [4031C0]

00034661 8919 mov dword ptr [ecx], ebx ; 中断在这,看寄存器
00034663 EB 03 jmp short 00034668
00034665 92 xchg eax, edx
00034666 E1 7C loopde short 000346E4

EAX 77BF27FA msvcrt.__CxxFrameHandler
ECX 004031E4 ASCII """:"
EDX 77BE0000 msvcrt.77BE0000
EBX 003B0325
ESP 0013FFAC
EBP 0003062D
ESI 003A0426
EDI 003A038F ASCII "MSVCRT.dll"
EIP 00034661

00034351 2B848D 143B0000 sub eax, dword ptr [ebp+ecx*4+3B14] ; 到这就走不下去了
00034358 D3C0 rol eax, cl
0003435A 49 dec ecx

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 7
支持
分享
最新回复 (28)
雪    币: 170
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
全收在一块了,GOOD!
2007-4-14 08:32
0
雪    币: 2506
活跃值: (1030)
能力值: (RANK:990 )
在线值:
发帖
回帖
粉丝
3
MoleBox的IAT加密是根本没用的。在某个时间IAT在内存中是完整的,只要通过在IAT上设内存写入断点就能找到合适的位置dump,完成后填一下IAT的RVA和大小就可以了。
2007-4-14 09:26
0
雪    币: 148
活跃值: (140)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
刚刚从CCDebuger的MoleBox 总结分析过来...IAT的修复的确麻烦 ... 在某个时间IAT在内存中是完整的..经典..如果没有前辈们的分析...拿个aspr的来恢复iat..真的是..
2007-4-14 09:53
0
雪    币: 2943
活跃值: (1788)
能力值: ( LV9,RANK:850 )
在线值:
发帖
回帖
粉丝
5
妙文一篇,不顶不好意思呢。
2007-4-14 13:51
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
赞赏及学习,谢谢楼主!
2007-4-14 14:57
0
雪    币: 347
活跃值: (30)
能力值: ( LV9,RANK:420 )
在线值:
发帖
回帖
粉丝
7
这个是不是传说中的"手动查找IAT"?

手动查找IAT貌似还有别的法子的
2007-4-14 16:06
0
雪    币: 7309
活跃值: (3788)
能力值: (RANK:1130 )
在线值:
发帖
回帖
粉丝
8
不错,很经典的教程
2007-4-14 21:05
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hxx
9
经典的教程妙文
2007-4-15 05:48
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
收藏下来慢慢学习。
2007-4-15 09:25
0
雪    币: 277
活跃值: (312)
能力值: ( LV9,RANK:330 )
在线值:
发帖
回帖
粉丝
11
请楼主帮忙写个 Softwrap 脚本,这个主要是输入表加密。
谢了。
2007-4-15 09:57
0
雪    币: 10914
活跃值: (3288)
能力值: (RANK:520 )
在线值:
发帖
回帖
粉丝
12
非常感谢,真是雪中送碳!
壳CrypToCrackPeProtector 0.93 成功脱壳后 ,用oddump后,再用ImportREC修复 仍然不能运行
请教下怎么样修复呢?

到  call    [460ADC] (GetVersion )执行不下去了

PELock.exe程序,F9 后程序就直接运行了.
2007-4-15 15:06
0
雪    币: 224
活跃值: (147)
能力值: ( LV9,RANK:970 )
在线值:
发帖
回帖
粉丝
13
[QUOTE=netwind;298174]非常感谢,真是雪中送碳!
壳CrypToCrackPeProtector 0.93 成功脱壳后 ,用oddump后,再用ImportREC修复 仍然不能运行
请教下怎么样修复呢?

到  call    [460ADC] (GetVersion )执行不下去了

PELock.e...[/QUOTE]

1、你所说的成功脱壳后是修复了IAT的?修复IAT后不需要怎样修复就可以运行
2、PELock的看下我之前发的脚本吧
2007-4-15 20:13
0
雪    币: 10914
活跃值: (3288)
能力值: (RANK:520 )
在线值:
发帖
回帖
粉丝
14
"把edi改成eax,然后到00401000段下断,F9,到达OEP
  IAT全部都恢复了"

按你说的方法到oep后 我用od  dump 后运行 出错,然后我用ImportREC修复 却不能运行
2007-4-15 21:01
0
雪    币: 239
活跃值: (59)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
这个值得收藏
2007-4-15 21:53
0
雪    币: 206
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
不错,收藏中。
2007-4-16 10:44
0
雪    币: 214
活跃值: (70)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
17
好贴,收藏``
2007-4-16 13:26
0
雪    币: 110
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
学习了,感谢楼主的好文
2007-4-16 19:08
0
雪    币: 690
活跃值: (1826)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
19
sustain
2007-4-17 13:42
0
雪    币: 888
活跃值: (2370)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
20
讲了这么多种壳的情况?学习了。收集起来
2007-4-17 16:13
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
学习了,最近被这个搞的头都大了
2007-5-6 19:59
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
太爽了,最近都在这
2007-5-7 18:04
0
雪    币: 4441
活跃值: (805)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
23
好东西啊,谢谢楼主了
2007-7-3 14:28
0
雪    币: 461
活跃值: (93)
能力值: ( LV9,RANK:1170 )
在线值:
发帖
回帖
粉丝
24
加密IAT,好文收藏!
2007-7-3 19:36
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
不错。。收下了。谢谢楼主!
2007-7-3 23:43
0
游客
登录 | 注册 方可回帖
返回
//