• 标 题:请教各位用Aspack V2.000加壳的软件怎么脱!!! (88字)
  • 作 者:bandi
  • 时 间:2000-7-26 15:20:14
  • 链 接:http://bbs.pediy.com

各位高人,我前天下载了一个软件是用Aspack V2.000来加的壳,不知怎样来脱它,请赐教!!!非常感谢.

  • 标 题:转贴一篇文章,希望会对你有帮助。 (4千字)
  • 作 者:sbing
  • 时 间:2000-7-26 23:20:03

工具 : softice, trw2000, procdump
      procdump 到这边抓最新版
      http://soft2.gz168.com/wcx/exe/pd32-162.exe
目标程式
http://home.todo.com.tw/computer/metalken/zip/netterm1.zip
    抓下来解开之後,放到 netterm 的目录里,若没有 netterm
    就去抓下来安装吧

前言 : 这个 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 相同时
  我在考虑注册吧...毕竟这套软体实在不错,不过现在感觉还有很多改善的空间.