• 标 题:Asprotect判断被其加壳的程序的标志是什么?---里面就是。 (1千字)
  • 作 者:ljttt
  • 时 间:2000-8-6 19:23:24
  • 链 接:http://bbs.pediy.com

Asprotect判断被其加壳的程序的标志是什么?---里面就是。

【前言】
这次就不写什么作者等等没意思的东东。只希望大家多多交流。只可惜我以前问的问题一直没人回答。



Asprotect是如何判断被其加壳的程序呢?我找到以下一处。(可能还有其他的地方,我没有进行更多的测试)
以下是程序代码。找个PE结构说明一对照,很简单。

:0043F85C 8B4034                  mov eax, dword ptr [eax+34]    <---得到IMAGE_NT_HEADERS首地址
:0043F85F 05F4000000              add eax, 000000F4        
:0043F864 F6400210                test [eax+02], 10        <---判断字节是否为10
:0043F868 7403                    je 0043F86D            <---相同,就说明是被其加壳过的程序
:0043F86A B001                    mov al, 01            
:0043F86C C3                      ret
:0043F86D 33C0                    xor eax, eax            <---设标志了        
:0043F86F C3                      ret


【说明】
由于脱壳后的程序一般比原程序要大得多,因此一旦把程序脱壳破解后,总会用压缩软件重新压缩。但是由于对Asprotect加壳的程序脱壳后文该标志没有改变。因此你想重新加壳的话,就要改变此标志。

以下是步骤说明:

由于脱壳后的程序一般比原程序要大得多,因此一旦把程序脱壳破解后,可以用以下方法重新加壳。

1、用Hex WorkShop打开脱壳后的可执行文件。
2、把光标定位到偏移176地址处。(因为一般80处为PE标志。80+F4+2=176)
3、这时加壳过的程序应该看到10,修改10为00即可。
4、用Asprotect重新加壳。

【后记】
另外,对已经用Asprotect加壳过的程序就不要改了。Asprotect再加壳时会出错。要不然,每个软件作者都用此法把程序加个十几遍壳,那还让大家活不活了 ;-) 。当然了,相反,你也可以改变此标志,使未加壳的程序让Asprotect误认为已经加壳。