| 关键词: nbsp 程式 netterm netterm1 位址 脱壳 softice 加壳 一下 exe |
土点,将就着看吧 工具 : 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: [email protected] 後言: 或许会有人觉得奇怪, 为什堋不直接用 trw2000 trace啊, 用softice 干吗 ? 因为我实在是用不惯 trw2000, 我唯一认同 trw2000 的优点是, 他可以 dump EXE 还有不用常驻, 更惨的是, 用 trw2000 1.03 版的, 有时还会当机... 而且有些指令不能用, 如 A , 天啊, A 不能用... 这岂不是在开玩笑吗... (难道是作者希望我们不要太 A ?? 因为 A 是...) 叫我注册...好吧, 等到 trw 在更成熟一点, 不会当机, 使用起来和 softice 相同时 我在考虑注册吧...毕竟这套软体实在不错,不过现在感觉还有很多改善的空间. |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|