老文章档案 · 2003 年

手工脱ASPR壳的一点思路

网络学院 · 破解文章 · 2003-08-27 · 出处:赢政天下整理收藏

我就简单的把脱壳的思路讲一下吧!

一,经过ASPR加壳的程序采用了以下几种反脱壳的手法:

1,破坏引入表。

2,把程序中的一部分代码移到壳的空间中。这个空间在WIN98上的地址在:80000000以上。在WINXP上的地址为:00F00000~01XXXXXX处。

3,花指令加异常等ANTIDEBUG手法,让跟踪的难度加大。

4,用注册码来解码,解码的数据在程序运行中要用到。没有正确的注册码就不可能解出正解的程序代码来。

二,对付上面几种反脱壳的方法:

1,修复引入表。

如果一个程序未被加壳的话,它的API函数调用一般是这样子的:

CALL 00412345

在00412345处的代码如下:

00412345 JMP [004XXXXX] 这个004XXXXX处保存的数据就是函数的地址。(一般是WINXP:FFXXXXXXXX,WIN98;BFXXXXXXXX),但是在被加壳的程序中这个数却不是API函数的地址,而是在壳的空间中。我们所要做的就是把004XXXXX中的数据还原。

在加壳的程序中,它自己会模拟操作系统来重定位API函数的地址。一般来说要用到GETPROCADDRESSA这个函数来获得API函数的地址。在得到 了API函数的地址后,它并没有把函数地址填入到004XXXXX中去,而是把它保存到壳的空间中,并且把这个函数在壳中的地址填入到004XXXXX中去。我们要想知道API函数的正确名字就要拦截在程序调用GETPROCADDRESSA的地方。这个地方也就是在程序写引入表数据的地方。如何才能找到程序写引入表数据的地方呢?

我们先在程序运行出现窗口后DUMP出主程序。反编译这个DUMP程序。找到JMP [004XXXXX]

JMP [004XXXXX]

JMP [004XXXXX]

JMP [004XXXXX]

。。。。。。。。,这样子的地方很好找的,一长串的JMP连着的就是了。我们记下004XXXXX中的值。回到OLLYDBG中载入加壳的程序,下断点

BPM 004X0000,接下来不停的按SHIFT+F9,

当我们停在MOV [EDX],EAX这样的指令处,看EDX中的值为004XXXXX。这个地方就是程序写引入表的地方了。这个时候EBP-101处就是函数名,

EBP+C处就是DLL名,我们可以用SMC的技术自己编一个程序来把函数名和DLL名保存下来,得到一个正确的引入表。(这个程序我已写好了。大家只要输入MOV [EDX],EAX处指令地址就可以得到正确的引入表。)原理就是这样子的。没有例子,如果大家对引入表有了解的话,应该容易理解。

二,对于程序代码在壳中的解决。

我推荐大家用WINXP,正如前面所说的壳的空间在WINXP上在00FFXXXX处,在WIN98上在80000000处。我们可以把这部分的代码用LORDPE来DUMP出来,并把它贴到DUMP主程序中去,并把这并且部分代码的RVA改成00FFXXXX-400000。如果你是WIN98这样做就会程序非法,因为程序映射的空间太大。所以我推荐大家用WINXP或WIN2000。

相关资讯:

·AZPR3.0的脱壳教程.

相关软件:

→ 特别推荐

→ 热点TOP10

我为人人《《==》》人人为我

关于我们 |

帮助(?)|

广告服务 |

版权声明 |

商业合作 |

发展历程 |

加盟我们 |

联系我们

Copyright (C) 1998-2004 winzheng.com All Rights Reserved.

特别感谢 蓝芒科技 提供下载站及论坛服务器

2003-2004 年,宽带刚刚普及,下载站的文章区是许多人学电脑的第一课堂。
🕰 → 🤖 从那时到现在

当年一篇教程能让一台电脑焕然一新;今天的效率工具换成了 AI。 想知道当下最可靠的 AI 模型怎么选?看 赢政指数——我们用了 28 年的选软件严谨,现在用来评测大模型。

档案性质声明:本页为赢政天下(1998-2011)老文章的历史档案复原, 内容反映当年发表时的原貌——包括当年的技术表述、软件版本与观点,部分方法在今天已不适用或不合规,仅作互联网历史记录与研究用途, 不提供任何形式的下载。原始数据经由公共网络存档(Internet Archive)复原。发现问题请联系我们
← 返回老文章档案 · 软件史档案馆 · 赢政天下站史