WEB开发网
开发学院网络安全黑客技术 脱Aspack的壳 阅读

脱Aspack的壳

 2006-07-03 20:26:08 来源:WEB开发网   
核心提示:工具 : softice, trw2000, procdump前言 : 这个 netterm1.exe 被我用 aspack2000 加壳了,我是要练习脱壳...所以我就随便选一个来加壳奇怪的是, procdump 1.62 应该是可以脱掉 aspack2000但是我试了一下,好像脱不掉...不管,反正现在加壳之风以日

工具 : softice, trw2000, procdump

前言 :

这个 netterm1.exe 被我用 aspack2000 加壳了,我是要练习脱壳...所以我就随便选一个来加壳奇怪的是, procdump 1.62 应该是可以脱掉 aspack2000但是我试了一下,好像脱不掉...

不管,反正现在加壳之风以日渐盛行,若不会脱壳,是不行的.有看过我的上一篇教学吗 ? 是有关於脱掉 aspack1.08.03 的壳, 但是能脱掉我写的程式,其他不行...

如果有看的话,应该有看到我的参考文献,知道大概是要如脱壳吧, 通常被加壳的程式呢 , 一开始执行时,要把程式解压缩到记忆体, 在进入真正程式的 Entry point 所以只要找到程式的 Entry point, 就行了。 而你若走到一个回圈, 常常在那边绕来绕去, 那就很有可能是在解压缩了。若你突然走到一个地方, 位址变化很大,那可能就是程式进入点了. 若找到程式进入点 , 你就可以大笑三声了

ok, Let's go!!

1: 用 softice 载入 netterm1.exe, 奇怪, 在我的电脑无法载入...

没关系... 执行 procdump, 选 PE Editor-> 选 netterm1.exe

看到 Entry point : 0005E001

Size of image : 00061000

Image Base : 00400000

那就是说, 程式一启动的 EIP 应该是 00400000 + 0005E001 = 0045E001

所以, 但是, 要如何到这边呢 ? 直接进入softice,下 bpx 0045E001 ??

当然是不行的, 要等程式到了 netterm1 的 空在下 bpx 0045E001 才行

那要如何到 netterm1 的 空 呢 ?

有很多种方法, 随便下一个 netterm1 有用到的 API, 就可以拦截了

例如说下 bpx createwindowexa ,执行 netterm1, 立刻被拦到

下 bd*, 暂停刚刚的断点, 按几下 F12, 立刻回到netterm1 的 空了

如何知道是不是 netterm1 的 空呢 ? 仔细看下方的一条绿线, 若写著

netterm1 , 就是到了是 netterm1 的 空了 ,

到了时候, 下 bpx 0045E001 , 按 F5, 离开 softice .

2: 执行 netterm1.exe ,立刻被拦住,在 cs:0045e001

好啦, 开始 trace 了...

很罗唆喔,也很烦, 会一直绕来绕去...

这是就要用一点技巧来加快 trace,

就是设中断点... 看一下程式, 你认为最远会跳到哪里呢?

中断点就设那边, 在按 F5, 如此循环

要是预估错误呢导致 netterm1 跑出来了呢? 那就算了..再执行一次啊

好,到了

cs:0045e4f2 call 0045e577
cs:0045e4f4 jnz 0045e4fc
cs:0045e4f9 ret c
cs:0045e4fc mov eax,1
cs:0045e501 ret

走到这边时,就是快要走完了

3: 小心地按 F10 ... 到了,

cs:0043f3cd mov eax,fs:[0]

注意看一下位址, 差好多喔,

而且看一下下面几行程式码,

有在呼叫 GetVersion , GetCommandLineA

若是解压缩的 source code, 是不会有这些的

所以, 聪明的你, 猜到了吧...

猜他是程式进入点, 就是 Entry point

4: 下bd* 先暂停所有的断点,按F5, 回到 windows

启动 trw2000, 载入 netterm1.exe,

竟然可以 load, 发现 trw2000 load 的能力比 softice 还强喔

ok, 开始 trace ...

不过,真的要 trace 吗 ? 不觉得太累了吗..

好吧, 偷懒一下, 因为用 softice 已经知道位址了

下 g 0043f3c0,

到了之後, 下 pedump net1.exe , net1.exe 名字可自己取

找一下 c:\windows ; 或是 netterm1 的所在目录, 或是 trw2000 的目录

就可以找到 net1.exe 了,

将他 copy 到 netterm 的目录, 执行一下...发现没有错误...

5: 嘿嘿, 开始聚气(在玩 KOF吗? 干吗聚气 ?), 达到饱和时, 开始大笑三声吧, 哈 ! 哈 ! 哈 !

第一次自己脱掉 procdump 脱不掉的壳...

岂是一个爽字了得呢 ?

对於高手, 当然脱壳以不是问题, 而对於我这个菜鸟

我已经很满足了 ....

6: 不过美中不足的是,脱的壳比原本档案大, 原本的档案是 359936 byte

脱壳之後是 397312 byte, 比本来还大...

欢迎高手来信指教, 看是哪里我的做法有哪些要改进的,很差的,

谢谢

e-mail address: g8742099@ccunix.ccu.edu.tw

後言:

或许会有人觉得奇怪, 为什堋不直接用 trw2000 trace啊, 用softice 干吗 ? 因为我实在是用不惯 trw2000, 我唯一认同 trw2000 的优点是, 他可以 dump EXE,还有不用常驻, 更惨的是, 用 trw2000 1.03 版的, 有时还会当机... 而且有些指令不能用, 如 A , 天啊, A 不能用... 这岂不是在开玩笑吗... (难道是作者希望我们不要太 A ?? 因为 A 是...) 叫我注册...好吧, 等到 trw 在更成熟一点, 不会当机, 使用起来和 softice 相同时,我在考虑注册吧...毕竟这套软体实在不错,不过现在感觉还有很多改善的空间

Tags:Aspack

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接