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

Armadillo V2_xx标准加壳方式的脱壳--Virtual Personality4.0

更新时间:2008-5-13 0:12:55
责任编辑:果果龙
热 点:

dump取内存中己脱壳的文件

00F8EEF1    FFD7          CALL      EDI

现在这一行,键入以下命令:

a eip (然后按回车)

jmp eip (然后按回车)

按下F5 这样将改变001B:00F8EEF1行的代码. 你会注意到在键入"jmp eip"并按下回车后,00F8EEF1的指令现在是一个jmp.这将有效地使程序"暂停"(有点类似TRW2000suspend命令). 按下F5使你回到window XP。运行LordPE,在进程列表中选择"Virtual Personality.exe"(注意要选择下面的那个进程)然后点击鼠标右键选中"Dump (Full)",给脱壳的程序起名dump存盘.

[],修复引入表

一般步骤如下:

1)找被脱壳的入口点(OEP);

2)完全Dump目标文件;

3)运行Import REConstructor和需要脱壳的应用程序;

4)在Import REConstructor下拉列表框中选择应用程序进程;

5)在左下角填上应用程序的真正入口点偏移(OEP);

6)按"IAT AutoSearch"按钮,让其自动检测IAT位置, 出现"Found address which may be in the Original IAT.Try 'Get Import'"对话框,这表示输入的OEP发挥作用了。

7)按"Get Import"按钮,让其分析IAT结构得到基本信息;

8)如发现某个DLL显示"valid :NO" ,按"Show Invalids"按钮将分析所有的无效信息,在Imported Function Found栏中点击鼠标右键,选择"Trace Level1 (Disasm)",再按"Show Invalids"按钮。如果成功,可以看到所有的DLL都为"valid:YES"字样;

9)再次刷新"Show Invalids"按钮查看结果,如仍有无效的地址,继续手动用右键的Level 23修复;

10)如还是出错,可以利用"Invalidate function(s)""Delete thunk(s)"、编辑Import表(双击函数)等功能手动修复。

11)开始修复已脱壳的程序。选择Add new section (缺省是选上的) 来为Dump出来的文件加一个Section(虽然文件比较大,但避免了许多不必要的麻烦)

12)按"Fix Dump"按钮,并选择刚在(2)步Dump出来的文件,在此不必要备份。如修复的文件名是"Dump.exe",它将创建一个"Dump_.exe",此外OEP也被修正。

13)生成的文件可以跨平台运行。

 

1.先用importREC试试,输入我们找到的正确的OEP:0041657E,注意输入0041657E-00400000=0001657E

有很多指针无效。

 

运行Virtual Personality,先等提示注册框出来,再下断bpx GetModuleHandleA,再按OK

断下20次左右,每次断下都F12看看回到哪儿了,直到到了如下:

001B:00F75B87  FF15AC80F900        CALL      [KERNEL32!GetModuleHandleA]

001B:00F75B8D  394508              CMP       [EBP+08],EAX

001B:00F75B90  7507                JNZ       00F75B99

001B:00F75B92  B968B4F900          MOV       ECX,00F9B468

001B:00F75B97  EB52                JMP       00F75BEB

001B:00F75B99  393D68BAF900        CMP       [00F9BA68],EDI

001B:00F75B9F  B968BAF900          MOV       ECX,00F9BA68

001B:00F75BA4  0F8491000000        JZ        00F75C3B ======>magic jump!

001B:00F75BAA  8B35581CFA00        MOV       ESI,[00FA1C58]

001B:00F75BB0  A1085DFA00          MOV       EAX,[00FA5D08]

001B:00F75BB5  F6410801            TEST      BYTE PTR [ECX+08],01

001B:00F75BB9  740E                JZ        00F75BC9

001B:00F75BBB  8B507C              MOV       EDX,[EAX+7C]

001B:00F75BBE  335078              XOR       EDX,[EAX+78]

001B:00F75BC1  335064              XOR       EDX,[EAX+64]

001B:00F75BC4  F6C280              TEST      DL,80

001B:00F75BC7  7513                JNZ       00F75BDC

001B:00F75BC9  8B507C              MOV       EDX,[EAX+7C]

001B:00F75BCC  33506C              XOR       EDX,[EAX+6C]

001B:00F75BCF  335048              XOR       EDX,[EAX+48]

001B:00F75BD2  33502C              XOR       EDX,[EAX+2C]

001B:00F75BD5  3316                XOR       EDX,[ESI]

001B:00F75BD7  395508              CMP       [EBP+08],EDX

001B:00F75BDA  740C                JZ        00F75BE8

001B:00F75BDC  83C10C              ADD       ECX,0C

001B:00F75BDF  83C604              ADD       ESI,04

001B:00F75BE2  3939                CMP       [ECX],EDI

001B:00F75BE4  75CF                JNZ       00F75BB5

这里面有几个跳转,其中最后一个00F75BE4是往上跳的.我们看一个就可发现:  

00F75BA4  JZ  00F75C3B,这个跳正好可跳出这个循环.只要改这个跳,就不会破坏引入表了.  

再来,出现注册框后OK,程序再断下来,00F75BA4JZ  00F75C3B改成JMP  00F75C3B,

清除所有断点,F5运行,程序运行后打开importREC,选中程序(注意选择上面那个进程),入口填入0001657E,-->RVA0006F000 SIZE0017B85C-->获得输入信息",如果还有无效的大可放心的cut,因为它们本来就不是有用指针了.然后修复脱壳后的文件.OK,大功告成. 脱壳后的程序,运行正常,圆满成功.

总结:这两天连续脱了两个Armadillo标准方式加壳的软件,这次脱的Virtual Personality很狡猾,在运行时,它有两个进程,一开始我还以为是CopyMem-II方式加壳,结果按照CopyMem-II方式加壳,脱壳流程试验始终没有进展。后来以标准方式加壳的脱壳流程居然走下来了。

上一页 1 2 

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