- UID
- 37127
注册时间2007-11-4
阅读权限30
最后登录1970-1-1
龙战于野
该用户从未签到
|
【破文标题】最简单的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:[EDX+C4]
0048B995 . 8B83 40030000 MOV EAX,DWORD PTR DS:[EBX+340]
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:[48B9C8] ; |
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:[EBX],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. |
评分
-
查看全部评分
|