|
破解Windows 程序技巧(2) (阅览
次)
嗯,先申明,我不是破解高手啦,我也是刚刚玩破解, 才 3 个星期喔 ^______& 写这篇文章的目的是为了活跃版面气氛,而且希望各位高手也多多的 把自己的心得 post 出来, 让大家都会一点基础的破解知识啦 下面是我这 3 个星期里破解 windows 程序中关于去处对话框的一些 方法, 写出来呢,让还不会的人了解一下 windows 程序的破解, 让高 手给我挑一挑错. 嗯, 希望高手看了不要把下巴笑掉的啦
windows 的众多 shareware 中最普遍的方式就是跳出一个对话框让你 交上钱来, 如果不能按他的要求去做,嘿嘿,你就不要想舒舒服服的用 它啦 ^___& 所以去除对话框就是 windows 程序破解的最基础,也是最 有用的方法啦
要除掉一般的 windows 程序的对话框并不是很难, 只要你懂一点点汇 编语言( 也只要能认识 jmp jz call jnz 这几个指令啦 ) 然后,嘻嘻 英文或者是 windows SDK 了解一点就可以了
下面呢,我就以去除 gifcon.exe 的对话框为例来说明去掉对话框的一般 方法, gifcon.exe 是一个处理 gif 图的好工具, 可以组合几张 gif 图 gifcon.exe 从 ftp://ftp.bd748.pku.edu.cn/pub/graphics/gifcon.exe 得到,这东西用到是好用,可是每次用完后不能直接退出,要弹出一个对话框 向你宣告一下版权法, 嗯,不是很爽啦, 我只好让它闭上它的鸟嘴啦 ^_&
过程如下:
1. 退出 windows, 启动 softice for windows 2. 用 wldr ( softice windows loader ) 加栽要破解的程序, 就是 gifcon.exe 啦 3. 用 load 来运行程序, 这是会激活 softice, 进入调试窗口 此时敲入以下的内容 bpx createdialog bpx createdialogindirect bpx createdialogindirectparam bpx createdialogparam bpx dialogbox bpx dialogboxindirect bpx dialogboxindirectparam bpx dialogboxparam bpx messagebox 为什么? 嘿嘿,这就是 windows SDK 调对话框的常用的函数啦 现在是把他们统统设成一执行就激活的断点 ( bpx softice 命令之一,后面接要中断的函数或代码地址 ) 4. 轻轻的摁一下 F5 让程序继续执行, 如果是开始是出现对话框 的一类程序,这时就会给中断掉, 但是 gifcon 是属于结束时出 对话框的, 所以这时程序正常执行 ( F5 softice 的命令啦, 让程序继续的 另外 F4 可以看程序的 画面, 按一键后退回 , 嗯,命令是很多的啦,可以用 F1 看在线 帮助, 当然啦,你的英文要好的喔, 也可以参考 softice for DOS 的中文说明 ) 5. 我们要让那锅该死的对话框出现,所以我们现在什么也不干,直接 退出 , 按下 EXIT 按钮, 这时, 由于要产生对话框,所以调对话框 的函数执行, softice 被激活, 我们看到如下的信息: Break Due to BPX USER!DIALOGBOX C=01 这就是说, 系统调用了 dialogbox 这一函数来产生对话框 这时我们还可以看到 softice 画面的最下面的窗口上的绿线上写着 , 喔? 写着什么呀,我给忘记了喔, 不过不要紧,一般是什么 user(xx) 之类的东西, 就是说还在 windows 的系统调用之下,没有返回主程序 于是,最麻烦的事开始了,我们开始跟踪, 不管中间有什么事件发生, 比如这里会有跳回 windows 让你按一下 OK 按钮,不过不用怕,按完了 还是回到 softice 里执行的啦. 我们按 F10 一直到绿线上的字变成 主程序的名字,例如 gifcon 呀什么的,反正是和程序有关的字符串 或者是改程序调的 DLL ( 动态库 ) 的名字时,我们马上停下来, 这时 呢,我们是刚刚跳出产生对话框的函数 ( 刚刚说的那么麻烦其实就是 跟踪到调对话框的函数的返回啦 ) 在 gifcon 中是停在 abou.dll 中 所以那锅绿线上的字是 abou ,这时候呢,我们可以看到加亮的上面的指 令就是那个 dialogbox 啦 6. 唉, 5 写了好长,换成 6 啦 :) ,我们记下 dialogbox 的地址, 然后呢, 我们上下找找看有没有 jmp jz jnz 的指令, 方法是 按一下 F6 ,光标 会上到代码窗口, 用箭头键上下移动来查看指令, 咦,怎么下面 012d 处 是一个 jmp 指令跳到好后面, 喔? 上面 010a 怎么是一个 jz 的指令, 而且刚刚跳到 012d, 哇赛,如果它是一个 jmp 012d 不就不会有那个对话 框了吗? 嘻嘻,别急,先敲入指令 bc * 去除所以的断点, 再把光标移到 010a 的上面一跳指令上,按一下 F9, 为什么?唉,不就是在这条指令处做 一个断点吗? ( F9 在光标所在行设一个断点 , bc * 去除所以的断点 ) 7. 这时我们按 F5 让程序继续执行, 也就是结束. 8. 在一次运行 gifcon ( 可以直接运行, 不用用 wldr 加栽 ), 这次会在上面 做的断点处 , 也就是 010a 前停下来, 我们为了怕改错,先看一下以前的 指令, 敲入命令 db cs:010a 看一下程序的机器码,并记下来, 应该是这样 7421ff3610131e6857 然后我们用 a cs:010a 来改变一下程序 :a ds:10a 1A6F:0000010A jmp 12d 1A6F:0000010C 把 jz 改成 jmp 试试, 然后在看一下改后的机器码 应该是只改了 74 为 eb 9. 按下 F5 继续执行程序, 哇赛, 怎么这次没有对话框了说, 看来是改对地方 了喔. 10. 刚刚看到了那个绿线上的字是 abou ,然后到程序的目录下看看,哇, 有一个 abou.dll 很可疑的说, 嗯,用能编辑二进制文件的编辑器来 search 一下吧 嗯,找到了,先不要急,把文件先 save as 成另一个名字, 然后再改 74 为 eb 存盘退出,这时再运行 gifcon.exe 哈哈,怎么弄对话框也不出来了喔
嗯,写了这么多,终于去掉了对话框, 上面的方法呢,就是去对话框的一般的方法,再总 结一下, 先把调对话框的函数全设成断点,运行程序激活断点, 跟踪至对话框函数 结束, 找到此函数上面的 jmp 到函数之后的代码,改变之就可以了, 如果还是破 不掉怎么办呢? 可能是你的功力还不够,多跟踪几次,多找几个 jmp 的地方改一下 如果还是破不了呢? 那就是程序很难破啦,在版上请高手出马吧 :)
唉,好久没有写这么长的东东了,竟花了一个小时 有什么不对的地方请告诉我啦
-- 快乐啦喔, 别问我为什么快乐, 我只是想让你知道我很快乐
发信人: Alex (阿飞), 信区: Hacker 标 题: 破戒 Windows 程序技巧 [转载] 日 期: Wed Apr 17 20:57:52 1996
==> bigmouth (大嘴) 提到: > bpx createdialog > bpx createdialogindirect > bpx createdialogindirectparam > bpx createdialogparam > bpx dialogbox > bpx dialogboxindirect > bpx dialogboxindirectparam > bpx dialogboxparam > bpx messagebox 补充一点 如果是Win32的程序的话,函数后面要加个A,表示是32bit函数 如bpx messageboxA之类
上面说的第5点,在对话框函数内跟踪比较麻烦,要耐心,如果是winice 1.3的话 用F10(即p)来单步,如果熟悉的话,用F7(go here)会快一些 如果是winice1.95或2.0的话,可以用p ret 来直接跳到函数ret处
--
返回
|