首页
社区
课程
招聘
[求助]simonzh2000大哥进来下,EncryptPE的问题!
发表于: 2005-7-17 11:41 4415

[求助]simonzh2000大哥进来下,EncryptPE的问题!

2005-7-17 11:41
4415
http://bbs.pediy.com/showthread.php?s=&threadid=1990&highlight=EncryptPE

研究了好长时间,文件算是dump出来了,但是修复IAT遇到了麻烦
引用:
―――――――――――――――――――――――――――――――――――
// 写一段恢复 API 的补丁程序, 放到 7119CF60

7119CF60    60                 PUSHAD
7119CF61    B8 50124000        MOV EAX,401250                              ; // 搜索从 401250 开始
7119CF66    BA 00000101        MOV EDX,1010000                             ; // 把 API 放到 1010000 开始的空闲区域
7119CF6B    66:8138 90E9       CMP WORD PTR DS:[EAX],0E990                 ; // 90 E9 = NOP, JMP XXXXXXX
7119CF70    0F85 2F000000      JNZ V1200351.7119CFA5
7119CF76    8BC8               MOV ECX,EAX                                 ; // [EAX] is  90 E9
7119CF78    8B40 02            MOV EAX,DWORD PTR DS:[EAX+2]                ; // EAX = XXXXXXXX
7119CF7B    03C1               ADD EAX,ECX
7119CF7D    83C0 06            ADD EAX,6
7119CF80    3D 00000070        CMP EAX,70000000                            ; // > 7000 0000 就是 API
7119CF85    0F87 0E000000      JA V1200351.7119CF99
7119CF8B    83C0 05            ADD EAX,5
7119CF8E    8BD8               MOV EBX,EAX                                 
7119CF90    83C0 02            ADD EAX,2
7119CF93    8B00               MOV EAX,DWORD PTR DS:[EAX]
7119CF95    8B00               MOV EAX,DWORD PTR DS:[EAX]
7119CF97    33C3               XOR EAX,EBX                                 ; // < 7000 0000 的 API
7119CF99    8902               MOV DWORD PTR DS:[EDX],EAX                  ; // 保存 API Address
7119CF9B    83C2 04            ADD EDX,4
7119CF9E    8BC1               MOV EAX,ECX
7119CFA0    90                 NOP
7119CFA1    90                 NOP
7119CFA2    90                 NOP
7119CFA3    90                 NOP
7119CFA4    90                 NOP
7119CFA5    83C0 04            ADD EAX,4
7119CFA8    3D 208C4300        CMP EAX,438C20                             ; // 搜索到 438C20 结束
7119CFAD  ^ 72 BC              JB SHORT V1200351.7119CF6B
7119CFAF    61                 POPAD

60 B8 50 12 40 00 BA 00 00 01 01 66 81 38 90 E9 0F 85 2F 00 00 00 8B C8 8B 40 02 03 C1 83 C0 06 3D 00 00 00
70 0F 87 0E 00 00 00 83 C0 05 8B D8 83 C0 02 8B 00 8B 00 33 C3 89 02 83 C2 04 8B C1 90 90 90 90 90 83 C0 04
3D 20 8C 43 00 72 BC 61               

IMPortRec,  VA=1010000, RVA = C10000, Size = 688, Get Imports 得到IAT

OEP: 00099780  IATRVA: 00C10000  IATSize: 00000688

FThunk: 00C10000  NbFunc: 000001A2
1  00C10000  kernel32.dll  001F  CloseHandle                                          
1  00C10004  kernel32.dll  0039  CreateFileA                           
1  00C10008  kernel32.dll  012D  GetFileType        
1  00C1000C  kernel32.dll  012A  GetFileSize
1  00C10010  kernel32.dll  016D  GetStdHandle
1  00C10014  kernel32.dll  0237  RaiseException
1  00C10018  kernel32.dll  0244  ReadFile
1  00C1001C  kernel32.dll  025E  RtlUnwind
............
―――――――――――――――――――――――――――――――――――

我是这样做的:
载入目标文件,运行到OEP处中断下来,然后把这段恢复 API 的补丁程序, 覆盖7119CF60处的原本的程序,再F9运行,程序报错,说是内存读取错误,打开ImportREC,得到的还是一团乱七八糟的IAT,并没有解密出来的IAT表?

并且,在7119CF60处下过断点,也没有看见程序被断下来,这段补丁程序根本就没有被运行过??

怎么回事哦?是我的做法出问题了么?
请指教!

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 398
活跃值: (1078)
能力值: ( LV9,RANK:970 )
在线值:
发帖
回帖
粉丝
2
这段程序是针对 EPE2003 的,  不一定能用于你的程序,
其中 401250, 101000, 438C20 需要你自己确定.

到 OEP 后, 上述代码能不能放到 7119CF60 也不一定,
你自己找一空地放, 更改 EIP到那里,  执行完后再更改 EIP 到 OEP.
2005-7-17 11:56
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
原来如此,谢谢指教,偶继续研究去了:),如果碰到其他问题还要麻烦大哥哦~
2005-7-17 12:17
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
哈哈,终于把壳脱掉了,不过奇怪的是,我并没有修复过乱序的IAT,程序也照样可以跑?
2005-7-21 07:57
0
雪    币: 234
活跃值: (104)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
最初由 deitytoday 发布
哈哈,终于把壳脱掉了,不过奇怪的是,我并没有修复过乱序的IAT,程序也照样可以跑?


试试跨平台。
2005-7-21 12:55
0
游客
登录 | 注册 方可回帖
返回
//