PersonalCorpus 版 (精华区)

发信人: lofe ()感激生活(), 信区: Hacker
标  题: Win 软件破解之一: 去处对话框
发信站: 哈工大紫丁香 (Tue Sep  5 19:21:03 2000), 转信

发信人: jianzi ( 甜甜的,胖胖的~~~), 信区: Hacker
标  题: 转帖: Win 软件破解之一: 去处对话框
日  期: Wed Oct 23 17:47:22 1996

发信人: bigmouth (大嘴), 信区: Hacker
标 题: Win 软件破解之一: 去处对话框
日 期: Wed Apr 17 19:55:27 1996


嗯,先申明,我不是破解高手啦,我也是刚刚玩破解, 
才 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 的地方改一下
如果还是破不了呢? 那就是程序很难破啦,在版上请高手出马吧 :)
唉,好久没有写这么长的东东了,竟花了一个小时
有什么不对的地方请告诉我啦      



--
1m        __   __
       /  \./  \/\_
   __{^\_ _}_   )  }/^\
  /  /\_/^\._}_/  //  /
 (  (__{(@)}\__}.//_/2m__A____A_______A_____A_____A_____A___A___A______
1m  \__/{/(_)\_}  )\\ \\2m---v-----V-----V---Y--v----Y----v---V-----v---
1m    (   (__)_)_/  )\ \>
     \__/     \__/\/\/
        \__,--'
7m
  送你一朵玫瑰花....嘻嘻...小心刺哦
7;40m0m
                             爱 笑 的 jianzi...
--

                  jesse (捷思)
                   潇洒逛一回
※ 修改:.haojs 于 Sep  5 19:18:29 修改本文.[FROM: bbs.hit.edu.cn]
--
※ 转寄:.武汉白云黄鹤站 bbs.whnet.edu.cn.[FROM: bbs.hit.edu.cn]

--
☆ 来源:.哈工大紫丁香 bbs.hit.edu.cn.[FROM: haojs.bbs@bbs.whnet.]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.544毫秒