blitz 发表于 2007-12-24 15:47:44

最简单的NAG去除术

【破文标题】最简单的NAG去除术
【破文作者】blitz
【破解工具】OD,PEiD
【破解平台】WinXP SP2
【软件名称】ASCII及进制转换
【软件大小】483 KB
【原版下载】见附件
【保护方式】ASPack 2.12
【软件简介】破解者常用软件,顺手修改下,就是因为关闭时的NAG.
【破解声明】一些常见破解方式的应用.
------------------------------------------------------------------------
【破解过程】Peid检测 :ASPack 2.12 -> Alexey Solodovnikov

ESP轻松脱壳,顺便捎带下,熟悉者可跳过.

用OD载入,根据ESP定理,在第一句压栈操作后hr esp,本例操作,运行第一步后hr 0012ffa4.

F9运行,中断在0050D3B0   . /75 08         JNZ SHORT turns4.0050D3BA

F8单步到返回(retn)后即到程序入口点OEP.

可直接在0048D254点右键Dump.


用OD载入脱壳后的程序,选择OD的插件-超级字串-查找ASCII,在文本字串里找到"真的要退出?",双击来到相关代码.

0048B98F   .FF92 C4000000 CALL DWORD PTR DS:
0048B995   .8B83 40030000 MOV EAX,DWORD PTR DS:
0048B99B   .E8 4401FBFF   CALL 2222.0043BAE4
0048B9A0   .5B            POP EBX
0048B9A1   .C3            RETN
0048B9A2      8BC0          MOV EAX,EAX
0048B9A4   .53            PUSH EBX
0048B9A5      EB 1D         JMP SHORT 2222.0048B9C4
0048B9A7   .6A 00         PUSH 0                     ; /Arg1 = 00000000
0048B9A9   .66:8B0D C8B94>MOV CX,WORD PTR DS:; |
0048B9B0   .B2 03         MOV DL,3                     ; |
0048B9B2   .B8 D4B94800   MOV EAX,2222.0048B9D4      ; |真的要退出?          //来到这一行了.
0048B9B7   .E8 08D5F9FF   CALL 2222.00428EC4         ; \2222.00428EC4
0048B9BC   .83F8 07       CMP EAX,7
0048B9BF   .75 03         JNZ SHORT 2222.0048B9C4
0048B9C1   .C603 00       MOV BYTE PTR DS:,0
0048B9C4   >5B            POP EBX
0048B9C5   .C3            RETN

我们往上看,因为程序的在OD的运行顺序是从上往下的(当然,除了执行了跳转或相关指令外),我们来关注下

0048B9A4   .53            PUSH EBX

这一行.它的上边是

0048B9A1   .C3            RETN
0048B9A2      8BC0          MOV EAX,EAX

retn把它上边的子程序都返回了,所以根据经验0048B9A4就是按钮"确定"的相关程序,而这一行就是子程序的开头.

因为人家把EBX压栈了,我们就从子程序的第二行

0048B9A5      8BD9          MOV EBX,ECX

修改代码,直接跳过此窗口.我们在压栈完后直接把下边的运算命令强跳到EBX出栈那一句,因为出栈后就返回了.

所以其结果是我们修改0048B9A5的内容为JMP SHORT 0048B9C4

我看很多人直接JMP到RETN上,我试了好多次,都会引起程序出错.所以还是有进(PUSH)有出(POP)保险.



------------------------------------------------------------------------
【破解总结】修改的关键,在于找到正确的子程序开头和正确地修改跳转.

希望各初学者可以理解,高手指教!
------------------------------------------------------------------------
【版权声明】转载请注明来自PYG.

ThanksBoy 发表于 2007-12-24 16:57:25

学习一下啊/:014 不错啊   谢谢

magic659117852 发表于 2007-12-24 18:14:10

:loveliness: 新手学习了 照着来一次

pw2000 发表于 2007-12-25 08:45:18

下载学习,谢谢分享。

lmg7005 发表于 2007-12-25 22:23:17

自己测试下!
Peid检测 :ASPack 2.12 -> Alexey Solodovnikov
用AspackDie直接脱壳!
OD载入插件-超级字串-查找ASCII,在文本字串里找到"真的要退出?",双击来到相关代码.
0048B9A7   .6A 00         PUSH 0                                 ; /Arg1 = 00000000                                                      我将这里修改jmp0048B9C5
0048B9A9   .66:8B0D C8B94>MOV CX,WORD PTR DS:             ; |
0048B9B0   .B2 03         MOV DL,3                              ; |
0048B9B2   .B8 D4B94800   MOV EAX,unpacked.0048B9D4               ; |真的要退出?
0048B9B7   .E8 08D5F9FF   CALL unpacked.00428EC4                  ; \unpacked.00428EC4
0048B9BC   .83F8 07       CMP EAX,7
0048B9BF   .75 03         JNZ SHORT unpacked.0048B9C4
0048B9C1   .C603 00       MOV BYTE PTR DS:,0
0048B9C4   >5B            POP EBX
0048B9C5   .C3            RETN

如果直接将 0048B9A7后修改jmp   0048B9C5

保存后可以运行!
没有错误提示!
不知道是什么原因,期待高手指点!

[ 本帖最后由 lmg7005 于 2007-12-25 22:26 编辑 ]

blitz 发表于 2007-12-26 08:36:48

回5楼.
0048B9A7   .6A 00         PUSH 0                     ; /Arg1 = 00000000
0048B9A9   .66:8B0D C8B94>MOV CX,WORD PTR DS:; |
0048B9B0   .B2 03         MOV DL,3                     ; |
0048B9B2   .B8 D4B94800   MOV EAX,2222.0048B9D4      ; |真的要退出?          //来到这一行了.
0048B9B7   .E8 08D5F9FF   CALL 2222.00428EC4         ; \2222.00428EC4

几行应该是对弹出对话框CALL的参数设置.

需要声明的是,文中的修改方式是我个人总结的,所以很可能不尽人意,但基本可以保证程序不出错.

网上好多教程修改都是从子程序入口的.我在调试的过程中,不出栈操作的话很容易出错.

谢谢指教!.

[ 本帖最后由 blitz 于 2007-12-26 08:39 编辑 ]

nszy007 发表于 2007-12-26 08:50:51

谢谢分享,学习了。。。

darling995 发表于 2007-12-26 09:07:24

学习不少呀,我也照着来试试

太星 发表于 2007-12-26 11:01:49

感谢!!学习了..

angelfish 发表于 2007-12-26 14:05:06

感谢!!学习了../:good /:good
页: [1] 2 3
查看完整版本: 最简单的NAG去除术