单机游戏下载单机游戏下载基地
最新游戏|热门游戏|游戏大全|游戏专题
压缩解压光盘工具文字输入杀毒软件文件处理转换翻译股票证券办公学习编程软件虚拟光驱
当前位置:首页应用软件编程软件 → 巨强悍的ASProtect脱壳机ASProtect unpacker by PE_Kill

巨强悍的ASProtect脱壳机ASProtect unpacker by PE_Kill

  • 巨强悍的ASProtect脱壳机ASProtect unpacker by PE_Kill截图0
< >
巨强悍的ASProtect脱壳机ASProtect unpacker by PE_Kill下载
好玩 好玩 0
坑爹 坑爹 0
  • 应用语言:中文
  • 应用大小:742KB
  • 更新时间:2017-03-07 12:0
  • 发行时间:
  • 应用类型:普通
  • 应用标签: 脱壳
巨强悍的ASProtect脱壳机ASProtectunpackerbyPE_Kill,我知道现在很多人谴责我,甚至会讨厌。但请记住,这是我的项目,当您的程序没有人使用它,它使开发人员在一个可怕的萧条。那些站在这个程序的起源,长退休,一年多了我不去bug报告,虽然我知道bug和知道如何解决它们[更多]
应用介绍

巨强悍的ASProtect脱壳机ASProtect unpacker by PE_Kill,我知道现在很多人谴责我,甚至会讨厌。但请记住,这是我的项目,当您的程序没有人使用它,它使开发人员在一个可怕的萧条。那些站在这个程序的起源,长退休,一年多了我不去bug报告,虽然我知道bug和知道如何解决它们。它只意味着那些特权访问计划破产了,这是非常难过。我自己没有upda

【分析】 

①寻找合适的中断进入加壳程序。(我称为找进入点) 
(注:在跟踪之前,最好用ICEPatch修补你的SoftICE,否则你就要手动跳过防跟踪代码了) 

对于 1 类程序,一般可以用以下方式进入: 
Ctrl-D中断,进入SoftICE。下指令 
bpx CreateFileA do "p ret" 
然后按F5返回Windows,运行加壳程序,中断在我们所设下的中断处。 

以后的跟踪可以直接继续,看见不远处有 ret 语句还可以按 F12 键快速返回到上一层调用中。 

对于 2 、3 两类程序,一般可以用以下方式进入(操作方法同上,只是设下的断点不同)。这次我们设断点 
bpint 3 

以后的跟踪与上有些不同,在《找Entry Point的又一方法 -----针对Asprotect v1.0加壳的程序》一文中我已有说明,这里简要说明一下。 

中断后一般你可以看到类似如下的屏幕: 
015F:004BF23C  CC                  INT      3            <--你中断在此 
015F:004BF23D  EB02                JMP      004BF241 
015F:004BF23F  E9025DEB02          JMP      03374F46 
015F:004BF244  E9FF33C05A          JMP      5B0C2648 
015F:004BF249  59                  POP      ECX 
015F:004BF24A  59                  POP      ECX 
015F:004BF24B  648910              MOV      FS:[EAX],EDX 
015F:004BF24E  EB0A                JMP      004BF25A 
015F:004BF250  E91305FFFF          JMP      004AF768        <--注意这个跳转语句,int 3过后就要到这里继续了。 
015F:004BF255  E8AA07FFFF          CALL      004AFA04 
015F:004BF25A  8A1518514C00        MOV      DL,[004C5118] 
015F:004BF260  8B45F8              MOV      EAX,[EBP-08] 

把光标移到第五个Jmp语句以后,按F7键。好,以后的跟踪和上面的方法相同。 

②检测CRC的地方 
在按了几个 F12后,一般就到了检测CRC的代码地方,这里我们不需要做什么,只是让大家明白,如果你改到了程序某处,在这里就要关心一下了。 

015F:004C6B74  EBF0                JMP      004C6B66 
015F:004C6B76  8B45EC              MOV      EAX,[EBP-14]    <--注意此处 
015F:004C6B79  3B45F0              CMP      EAX,[EBP-10]    <--注意此处 
015F:004C6B7C  7443                JZ        004C6BC1        <--如果比较的结果相同,就跳转了,否则就到下面显示File corrupted! 的框框了 
015F:004C6B7E  8A155CC94C00        MOV      DL,[004CC95C] 
015F:004C6B84  8B45F8              MOV      EAX,[EBP-08] 
015F:004C6B87  E848E4FFFF          CALL      004C4FD4 
015F:004C6B8C  8945F4              MOV      [EBP-0C],EAX 
015F:004C6B8F  837DF400            CMP      DWORD PTR [EBP-0C],00 
015F:004C6B93  742C                JZ        004C6BC1 
015F:004C6B95  8D85E4FEFFFF        LEA      EAX,[EBP-011C] 
015F:004C6B9B  8D95E9FEFFFF        LEA      EDX,[EBP-0117] 

大家注意其中三句的特征,以后跟踪时就知道这里是比较CRC的地方就行了。对于做inline patch的朋友就要记住了。 

③获得 import table 和 Entry Point 
在按过几下 F12 键后,就会来到类似如下代码的地方,这里我以ARPR.EXE来做例子,来一段段的分析一下,许多Asprotect加壳的程序都有这样一段,熟悉了特征以后,再对Asprotect脱壳你也可以很轻松了。 

015F:004C6EAB  E828FAFFFF          CALL      004C68D8 
015F:004C6EB0  33C0                XOR      EAX,EAX            <--你来到此处,一般 XOR EAX,EAX 是特征. 
015F:004C6EB2  5A                  POP      EDX 
015F:004C6EB3  59                  POP      ECX 
015F:004C6EB4  59                  POP      ECX 
015F:004C6EB5  648910              MOV      FS:[EAX],EDX 
015F:004C6EB8  EB11                JMP      004C6ECB            <--跳到下一段 
015F:004C6EBA  E9E900FFFF          JMP      004B6FA8 
015F:004C6EBF  33C0                XOR      EAX,EAX 
015F:004C6EC1  E89EEFFFFF          CALL      004C5E64 
015F:004C6EC6  E87903FFFF          CALL      004B7244 

以后我们重点关注几个Call调用,以后再跟踪这类Asprotect加壳的程序就有经验了。 

015F:004C6ECB  33C0                XOR      EAX,EAX 
015F:004C6ECD  55                  PUSH      EBP 
015F:004C6ECE  68086F4C00          PUSH      004C6F08 
015F:004C6ED3  64FF30              PUSH      DWORD PTR FS:[EAX] 
015F:004C6ED6  648920              MOV      FS:[EAX],ESP 
015F:004C6ED9  8B4508              MOV      EAX,[EBP+08] 
015F:004C6EDC  8B00                MOV      EAX,[EAX] 
015F:004C6EDE  50                  PUSH      EAX 
015F:004C6EDF  B804464C00          MOV      EAX,004C4604 
015F:004C6EE4  50                  PUSH      EAX 
015F:004C6EE5  6A00                PUSH      00 
015F:004C6EE7  8B4508              MOV      EAX,[EBP+08] 
015F:004C6EEA  8D4824              LEA      ECX,[EAX+24] 
015F:004C6EED  8B4508              MOV      EAX,[EBP+08] 
015F:004C6EF0  8D500C              LEA      EDX,[EAX+0C] 
015F:004C6EF3  8B4508              MOV      EAX,[EBP+08] 
015F:004C6EF6  8B4008              MOV      EAX,[EAX+08] 
015F:004C6EF9  E842F0FFFF          CALL      004C5F40            <--注意这个Call调用 
015F:004C6EFE  33C0                XOR      EAX,EAX 
015F:004C6F00  5A                  POP      EDX 
015F:004C6F01  59                  POP      ECX 
015F:004C6F02  59                  POP      ECX 
015F:004C6F03  648910              MOV      FS:[EAX],EDX 
015F:004C6F06  EB13                JMP      004C6F1B            <--跳到下一段 
015F:004C6F08  E99B00FFFF          JMP      004B6FA8 
015F:004C6F0D  66B80B00            MOV      AX,000B 
015F:004C6F11  E84EEFFFFF          CALL      004C5E64 
015F:004C6F16  E82903FFFF          CALL      004B7244 

在以上要注意的Call调用处我们可以停下来,下指令 
d 401000    (说明: 401000由来为 <Image Base>+<First Section RVA> ) 
我们可以看到在没有执行这个Call调用之前,数据窗口显示的为 ?? ??。这说明这段代码还没有加载到内存中。如果按 F10键执行这个调用过后,数据窗口就会显示各种十六进制数据。这说明这个Call调用的基本功能为加载数据。 

(按上段) 
015F:004C6F1B  33C0                XOR      EAX,EAX 
015F:004C6F1D  55                  PUSH      EBP 
015F:004C6F1E  68716F4C00          PUSH      004C6F71 
015F:004C6F23  64FF30              PUSH      DWORD PTR FS:[EAX] 
015F:004C6F26  648920              MOV      FS:[EAX],ESP 
015F:004C6F29  8B4508              MOV      EAX,[EBP+08] 
015F:004C6F2C  8B00                MOV      EAX,[EAX] 
015F:004C6F2E  50                  PUSH      EAX 
015F:004C6F2F  B8485E4C00          MOV      EAX,004C5E48 
015F:004C6F34  50                  PUSH      EAX 
015F:004C6F35  B85C5E4C00          MOV      EAX,004C5E5C 
015F:004C6F3A  50                  PUSH      EAX 
015F:004C6F3B  6A00                PUSH      00 
015F:004C6F3D  B8645E4C00          MOV      EAX,004C5E64 
015F:004C6F42  50                  PUSH      EAX 
015F:004C6F43  B8A4894B00          MOV      EAX,004B89A4 
015F:004C6F48  50                  PUSH      EAX 
015F:004C6F49  8B4508              MOV      EAX,[EBP+08] 
015F:004C6F4C  8B4020              MOV      EAX,[EAX+20] 
015F:004C6F4F  50                  PUSH      EAX 
015F:004C6F50  8B4508              MOV      EAX,[EBP+08] 
015F:004C6F53  8D4824              LEA      ECX,[EAX+24] 
015F:004C6F56  8B4508              MOV      EAX,[EBP+08] 
015F:004C6F59  8B500C              MOV      EDX,[EAX+0C] 
015F:004C6F5C  8B4508              MOV      EAX,[EBP+08] 
015F:004C6F5F  8B4008              MOV      EAX,[EAX+08] 
015F:004C6F62  E81DF1FFFF          CALL      004C6084            <--注意这个Call调用 
015F:004C6F67  33C0                XOR      EAX,EAX 
015F:004C6F69  5A                  POP      EDX 
015F:004C6F6A  59                  POP      ECX 
015F:004C6F6B  59                  POP      ECX 
015F:004C6F6C  648910              MOV      FS:[EAX],EDX 
015F:004C6F6F  EB13                JMP      004C6F84            <--跳到下一段 
015F:004C6F71  E93200FFFF          JMP      004B6FA8 
015F:004C6F76  66B80C00            MOV      AX,000C 
015F:004C6F7A  E8E5EEFFFF          CALL      004C5E64 
015F:004C6F7F  E8C002FFFF          CALL      004B7244 

我们再来关注一下上面这个要注意的Call调用。如果你用 F10 键带过这个Call调用。会发现数据窗口的内容改变了。好我们再来看看 idata Section所在位置的情况,下指令 
d 418000    (注:ARPR.EXE的Image Base为 400000,idata Section 的 RVA 为 18000) 
可以看到数据窗口显示的全是 00,向下翻页,仍然是 00,这说明这个Call调用的功能可能是解压还原代码,并且初始化 idata Section。 

(接上段) 
015F:004C6F84  B84B894B00          MOV      EAX,004B894B 
015F:004C6F89  40                  INC      EAX 
015F:004C6F8A  890530DA4C00        MOV      [004CDA30],EAX 
015F:004C6F90  B82B894B00          MOV      EAX,004B892B 
015F:004C6F95  890534DA4C00        MOV      [004CDA34],EAX 
015F:004C6F9B  FF0534DA4C00        INC      DWORD PTR [004CDA34] 
015F:004C6FA1  33C0                XOR      EAX,EAX 
015F:004C6FA3  55                  PUSH      EBP 
015F:004C6FA4  6805704C00          PUSH      004C7005 
015F:004C6FA9  64FF30              PUSH      DWORD PTR FS:[EAX] 
015F:004C6FAC  648920              MOV      FS:[EAX],ESP 
015F:004C6FAF  B8485E4C00          MOV      EAX,004C5E48 
015F:004C6FB4  50                  PUSH      EAX 
015F:004C6FB5  B8AC694B00          MOV      EAX,004B69AC 
015F:004C6FBA  50                  PUSH      EAX 
015F:004C6FBB  A130DA4C00          MOV      EAX,[004CDA30] 
015F:004C6FC0  50                  PUSH      EAX 
015F:004C6FC1  A134DA4C00          MOV      EAX,[004CDA34] 
015F:004C6FC6  50                  PUSH      EAX 
015F:004C6FC7  B8645E4C00          MOV      EAX,004C5E64 
015F:004C6FCC  50                  PUSH      EAX 
015F:004C6FCD  B894954B00          MOV      EAX,004B9594 
015F:004C6FD2  50                  PUSH      EAX 
015F:004C6FD3  B874954B00          MOV      EAX,004B9574 
015F:004C6FD8  50                  PUSH      EAX 
015F:004C6FD9  B834904B00          MOV      EAX,004B9034 
015F:004C6FDE  50                  PUSH      EAX 
015F:004C6FDF  8B4508              MOV      EAX,[EBP+08] 
015F:004C6FE2  8B4020              MOV      EAX,[EAX+20] 
015F:004C6FE5  50                  PUSH      EAX 
015F:004C6FE6  B9E0944B00          MOV      ECX,004B94E0 
015F:004C6FEB  8B4508              MOV      EAX,[EBP+08] 
015F:004C6FEE  8B5014              MOV      EDX,[EAX+14] 
015F:004C6FF1  8B4508              MOV      EAX,[EBP+08] 
015F:004C6FF4  8B00                MOV      EAX,[EAX] 
015F:004C6FF6  E8A5F5FFFF          CALL      004C65A0            <--注意这个Call调用 
015F:004C6FFB  33C0                XOR      EAX,EAX            <--这里一般就是Dump import table的地方 
015F:004C6FFD  5A                  POP      EDX 
015F:004C6FFE  59                  POP      ECX 
015F:004C6FFF  59                  POP      ECX 
015F:004C7000  648910              MOV      FS:[EAX],EDX 
015F:004C7003  EB13                JMP      004C7018            <--跳到下一段 
015F:004C7005  E99EFFFEFF          JMP      004B6FA8 
015F:004C700A  66B80D00            MOV      AX,000D 
015F:004C700E  E851EEFFFF          CALL      004C5E64 
015F:004C7013  E82C02FFFF          CALL      004B7244 

我们来看看上面这个要注意的Call调用有什么作用。如果你用 F10 键带过这个Call调用,再看看数据窗口的变化, 
我们向下翻页看看,这次不再是 00,变成各种数据。这说明这个Call调用的功能可能是还原 idata Section,因此在该调用后的 XOR EAX,EAX就是我们Dump出 import table的地方。对于前面划分出的三类程序中前两类,都可以在此处看到完整的 import table,是Dump出 import table的时候了,可以下指令 
/dump <Image Base + idata Section RVA> <idata Section Size> <FileName>    (这是ICEDump 1.61的指令用法) 
而对于第三类程序则要用其他方法。(补充说明:对于第三类程序的 import table重建问题由于我也没有找到一种统一的方法。只能不同情况不同对待。因此以后单独写文说明。) 

如果你喜欢用 bpm 跟踪 idata Section的变化来做进入点。那么一般在按几个 F12键后,就在处了。 

(接上段) 
015F:004C7018  33C0                XOR      EAX,EAX 
015F:004C701A  55                  PUSH      EBP 
015F:004C701B  6838704C00          PUSH      004C7038 
015F:004C7020  64FF30              PUSH      DWORD PTR FS:[EAX] 
015F:004C7023  648920              MOV      FS:[EAX],ESP 
015F:004C7026  8B4508              MOV      EAX,[EBP+08] 
015F:004C7029  E8D6FCFFFF          CALL      004C6D04            <--注意这个Call调用 
015F:004C702E  33C0                XOR      EAX,EAX 
015F:004C7030  5A                  POP      EDX 
015F:004C7032  59                  POP      ECX 
015F:004C7033  648910              MOV      FS:[EAX],EDX 
015F:004C7036  EB13                JMP      004C704B            <--跳到下一段 
015F:004C7038  E96BFFFEFF          JMP      004B6FA8 
015F:004C703D  66B81100            MOV      AX,0011 
015F:004C7041  E81EEEFFFF          CALL      004C5E64 
015F:004C7046  E8F901FFFF          CALL      004B7244 

如果我们用 F10 键带过这个Call调用,会发现数据窗口的内容又有所变化。不过这次我们看到的数据都比较大。如果你进入此调用跟踪会发现它的作用就是获取idata Section中的各个函数的指针放入此处,如果你对可执行文件的加载机制有所了解的话,那么就知道这是加壳程序在做Windows的工作,把各个Fircc转换成真正函数入口指针。因此过了此处,你再就无法获得"干净"的import table了。 

(接上段) 
015F:004C704B  33C0                XOR      EAX,EAX 
015F:004C704D  55                  PUSH      EBP 
015F:004C704E  6884704C00          PUSH      004C7084 
015F:004C7053  64FF30              PUSH      DWORD PTR FS:[EAX] 
015F:004C7056  648920              MOV      FS:[EAX],ESP 
015F:004C7059  B8645E4C00          MOV      EAX,004C5E64 
015F:004C705E  50                  PUSH      EAX 
015F:004C705F  8B4508              MOV      EAX,[EBP+08] 
015F:004C7062  8B4810              MOV      ECX,[EAX+10] 
015F:004C7065  8B4508              MOV      EAX,[EBP+08] 
015F:004C7068  8B5004              MOV      EDX,[EAX+04] 
015F:004C706B  8B4508              MOV      EAX,[EBP+08] 
015F:004C706E  8B00                MOV      EAX,[EAX] 
015F:004C7070  E833F6FFFF          CALL      004C66A8            <---注意此Call调用 
015F:004C7075  A22CDA4C00          MOV      [004CDA2C],AL 
015F:004C707A  33C0                XOR      EAX,EAX 
015F:004C707D  59                  POP      ECX 
015F:004C707E  59                  POP      ECX 
015F:004C707F  648910              MOV      FS:[EAX],EDX 
015F:004C7082  EB13                JMP      004C7097            <--跳到下一段 
015F:004C7084  E91FFFFEFF          JMP      004B6FA8 
015F:004C7089  66B80E00            MOV      AX,000E 
015F:004C708D  E8D2EDFFFF          CALL      004C5E64 
015F:004C7092  E8AD01FFFF          CALL      004B7244 

对于此Call调用是什么作用,我现在还说不出来。如果你用 F10 键带来,一点事没有。但是如果你是一个好奇心太强的人,按 F8 键进入看个究竟的话,那么我恭喜你,你进入了 Asprotect 的圈套。也许你会在带过某个Call调用时程序运行了。因此你一定以为其中有 Entry Point ,于是重新来过,又进入那个Call调用看看,如此反复,也许你会某一层中发现 Entry Point,果真如此,那么我十分钦佩你的精神。我在跟踪到第四层时依然没有找到,就放弃了。至今我还没有弄明白这种圈套是怎么实现的。不过Asprotect作者一定很高兴他写的代码一行也没有浪费。 

(接上段) 
015F:004C7097  8B4508              MOV      EAX,[EBP+08] 
015F:004C709A  8D4818              LEA      ECX,[EAX+18] 
015F:004C709D  8B4508              MOV      EAX,[EBP+08] 
015F:004C70A0  8B10                MOV      EDX,[EAX] 
015F:004C70A2  8B4508              MOV      EAX,[EBP+08] 
015F:004C70A5  8B401C              MOV      EAX,[EAX+1C] 
015F:004C70A8  E887F6FFFF          CALL      004C6734            <---注意此Call调用 
015F:004C70AD  5F                  POP      EDI 
015F:004C70AE  5E                  POP      ESI 
015F:004C70AF  5B                  POP      EBX 
015F:004C70B0  5D                  POP      EBP 
015F:004C70B1  C20400              RET      0004 

如果你是个懒人,直接到此。那么我说你真有福气。这个Call调用一定要按 F8 键进入。其中你可以找到 Entry Point。 

④获取整个内存映象 
在进入Call调用后,对于前两类程序和后一类程序的情况有所不同 

(注:这里以跟踪BrickShooter时截取的屏幕和跟踪ARPR时截取的屏幕做一比较) 

跟踪BrickShooter的情况(代表前两类程序,以下简称 ㈠) 
015F:0056EB4A  8BC0                MOV      EAX,EAX 
015F:0056EB4C  55                  PUSH      EBP 
015F:0056EB4D  8BEC                MOV      EBP,ESP 
015F:0056EB4F  83C4F8              ADD      ESP,-08 
015F:0056EB52  53                  PUSH      EBX 
015F:0056EB53  8BDA                MOV      EBX,EDX 
015F:0056EB55  8945FC              MOV      [EBP-04],EAX 
015F:0056EB58  8B01                MOV      EAX,[ECX] 
015F:0056EB5A  8945F8              MOV      [EBP-08],EAX 
015F:0056EB5D  6A04                PUSH      04 
015F:0056EB5F  B944565700          MOV      ECX,00575644 
015F:0056EB64  8D45F8              LEA      EAX,[EBP-08] 
015F:0056EB67  BA04000000          MOV      EDX,00000004 
015F:0056EB6C  E803E7FFFF          CALL      0056D274            <--Call调用 
015F:0056EB71  015DF8              ADD      [EBP-08],EBX 
015F:0056EB74  EB01                JMP      0056EB77            <--JMP跳转语句 

跟踪ARPR的情况(代表后一类程序,以下简称 ㈡) 
015F:004C6732  8BC0                MOV      EAX,EAX 
015F:004C6734  55                  PUSH      EBP 
015F:004C6735  8BEC                MOV      EBP,ESP 
015F:004C6737  83C4F0              ADD      ESP,-10 
015F:004C673A  53                  PUSH      EBX 
015F:004C673B  56                  PUSH      ESI 
015F:004C673C  57                  PUSH      EDI 
015F:004C673D  894DF0              MOV      [EBP-10],ECX 
015F:004C6740  8955F4              MOV      [EBP-0C],EDX 
015F:004C6743  8945FC              MOV      [EBP-04],EAX 
015F:004C6746  33C0                XOR      EAX,EAX 
015F:004C6748  55                  PUSH      EBP 
015F:004C6749  6871674C00          PUSH      004C6771 
015F:004C674E  64FF30              PUSH      DWORD PTR FS:[EAX] 
015F:004C6751  648920              MOV      FS:[EAX],ESP 
015F:004C6754  33C9                XOR      ECX,ECX 
015F:004C6756  B201                MOV      DL,01 
015F:004C6758  B8088A4B00          MOV      EAX,004B8A08 
015F:004C675D  E8AE3CFFFF          CALL      004BA410            <--第一个Call调用 
015F:004C6762  E86D0AFFFF          CALL      004B71D4            <--第二个Call调用 
015F:004C6767  33C0                XOR      EAX,EAX 
015F:004C6769  5A                  POP      EDX 
015F:004C676A  59                  POP      ECX 
015F:004C676B  59                  POP      ECX 
015F:004C676C  648910              MOV      FS:[EAX],EDX 
015F:004C676F  EB0A                JMP      004C677B            <--JMP跳转语句 

对比我们可以发现,㈠ 中只有一个Call调用就跟着一个JMP跳转语句。㈡ 中有两个Call调用才跟着一个JMP跳转语句。 
对于 ㈠ 在JMP跳转过后,就可以很快找到Entry Point。(当然这以后要按 F8 键跟踪为妙) 对于 ㈡ 则不同,请记住这个特征,如果有两个连续的Call调用,在跟踪时,在第二个Call调用处按 F8进入看看,如果你发现类似以下代码 

015F:004B71D2  8BC0                MOV      EAX,EAX 
015F:004B71D4  5A                  POP      EDX 
015F:004B71D5  54                  PUSH      ESP 
015F:004B71D6  55                  PUSH      EBP 
015F:004B71D7  57                  PUSH      EDI 
015F:004B71D8  56                  PUSH      ESI 
015F:004B71D9  53                  PUSH      EBX 
015F:004B71DA  50                  PUSH      EAX 
015F:004B71DB  52                  PUSH      EDX 
015F:004B71DC  54                  PUSH      ESP 
015F:004B71DD  6A07                PUSH      07 
015F:004B71DF  6A01                PUSH      01 
015F:004B71E1  68CEFAED0E          PUSH      0EEDFACE 
015F:004B71E6  52                  PUSH      EDX 
015F:004B71E7  E914E3FFFF          JMP      KERNEL32!RaiseException 
015F:004B71EC  C3                  RET 

那么这就是我在《找Entry Point的又一方法 -----针对Asprotect v1.0加壳的程序》中所介绍的异常地方了。按该文可以继续跟踪找到Entry Point。在经过三个异常后,会发现同 ㈠ 一样的代码特征,只有一个Call调用和JMP语句了,那么以后你可以放心大胆地跟踪了,没有什么陷阱了。(当然在Call调用处不要用F10带过,那可能这只是一个简单的JMP语句的变形而已) 

在Entry Point处我们可以下指令得到全部内存映象 
/dump <Image Base> <Image Size> <FileName>    (注:此为ICEDump 1.61用法) 

以上介绍了跟踪部分的所有要注意的地方,以及Asprotect加壳程序的一点特征。下面说一下我们要做的修补工作。 
(至于你用 ProcDump 还是 PE Editor 随你的爱好,我一般用 PEditor,它太棒了。简直就是为脱壳设计的) 

首先,把 各个Section的 Raw Offset 改成 Virtual Offset 大小, Raw Size 改成 Virtual Size大小。 

然后,把 Entry Point 改成你发现的大小 。比如我发现的ARPR.EXE的Entry Point为401000,由于Image Base为400000,所以Entry Point就改为 1000,(因为 401000-400000=1000)。 

然后,再把 import table 的 RVA改成 idata Section的 RVA,Size改成 idata Section的Size大小。 

最后,我们还有一样工作要做,就是要把 我们得到的内存映象文件中的idata Section部分用我们前面方法得到的idata Section文件替换掉。你可以用Hex WorkShop来做这项工作,它做起来很方便。 

相关应用
下载地址

巨强悍的ASProtect脱壳机ASProtect unpacker by PE_Kill

    热门评论

    最新评论

    发表评论 查看所有评论(0)

    昵称:
    表情: 高兴 可 汗 我不要 害羞 好 下下下 送花 屎 亲亲
    (您的评论需要经过审核才能显示)

    配置需求

    推荐专题

    up对战平台up对战平台

    关于飞翔 | 联系我们 | 大事记 | 下载帮助(?) | 广告联系 | 版权声明 | 网站地图 | 友情链接

    Copyright 2010-2013 单机游戏下载 (R) 版权所有 飞翔下载所有游戏及软件下载资源来源互联网,并由网友上传分享。如有侵权,请来电来函告之。
    飞翔忠告:抵制不良色情、反动、暴力游戏 合理安排游戏时间 享受健康生活【鄂ICP备13011873号-1】