安全中国首页 > 文章中心 > 脱壳技术
 
安全中国网友投稿专用上传FTP空间:
Ftp服务器:download.anqn.com
Ftp端口:21
用户名:anqn
密 码:anqn.com
 

Unpack Acprotect 1.21 (三)程序修复

更新时间:2008-4-19 0:16:08
责任编辑:流火
热 点:
呵呵,又回家了。各位兄弟好! 
该说说这第三个问题了。前有shinegood的脱壳版,后有tDasm的修复文章,我这个不会又...?管他的,一则说过的话总要兑现,二则各有各的方法,更何况他们的不是都还有点问题吗。(二者使用了相同的方法来修复) 
修复中主要要解决的是Replace Code的地址,一般情况下,程序把Replace Code放到堆中执行,堆的结构由壳代码初 

始化时建立,这样,去了壳的程序就会出错。这里采用的方法就是修改放置Replace Code的地址。 
od载入已修复iat的程序,隐藏od、忽略所有异常、eip定位到修复的oep、在6d540c处设断,执行程序。断下光标移到6b55b7,按F4,看到: 
006D55B7  CALL Acprotect.006E1460 
006D55BC  MOV EAX,DWORD PTR SS:[ESP+20]                 ;获得返回地址 
006D55C0  XOR ECX,ECX 
006D55C2  MOV EBX,DWORD PTR SS:[EBP+ECX*4+4026E2]       ;取表中元素 
006D55C9  ADD EBX,DWORD PTR SS:[EBP+40D2AA]             ;加Image Base 
006D55CF  CMP EAX,EBX                                   ; 
006D55D1  JE SHORT Acprotect.006D55DA                   ;查表 
006D55D3  NOP 
006D55D4  NOP 
006D55D5  NOP 
006D55D6  NOP 
006D55D7  INC ECX 
006D55D8  JMP SHORT Acprotect.006D55C2                  ;再找 
006D55DA  MOV DWORD PTR SS:[EBP+ECX*4+4026E2],0         ;找到后把这个元素从表中删除 
006D55E5  LEA ESI,DWORD PTR SS:[EBP+4055C2]             ;取(变形)Replace Code表基地址 
006D55EB  MOV EAX,0A 
006D55F0  MUL ECX 
006D55F2  ADD ESI,EAX                                   ;得到本次应取(变形)Replace Code地址 
006D55F4  PUSH ESI 
006D55F5  PUSH ECX 
006D55F6  MOV AL,BYTE PTR SS:[EBP+4023FC]               ;取还原Replace Code的操作数 
006D55FC  OR AL,AL 
006D55FE  JNZ SHORT Acprotect.006D5628                  ;跳,则操作数已经存在 
006D5600  NOP 
006D5601  NOP 
006D5602  NOP 
006D5603  NOP 
006D5604  MOV EAX,DWORD PTR SS:[EBP+40D2AA]             ; 
006D560A  MOV ESI,DWORD PTR DS:[EAX+3C]                 ; 
006D560D  ADD ESI,DWORD PTR SS:[EBP+40D2AA]             ; 
006D5613  ADD ESI,28                                    ; 
006D5616  LODS DWORD PTR DS:[ESI]                       ;得到Entry Point值 

1 2 下一页

 
相关文章
一日一文章
 
一日一软件
一日一动画