Programming 版 (精华区)
发信人: Mice (鼠儿), 信区: Programming
标 题: 加密&解密----(11)
发信站: 紫丁香 (Sun Sep 14 15:41:41 1997)
如何破解:
在dos版输入字串时, 程式可能呼叫 int 21, int 16, int 9. 通常我们拦 int 16.
但如果程式呼叫 int 21, 我们拦 int 16 会不会不妥当呢? 不会! 我们多 P 几次, 直
到 iret 就从系统回到程式了. 记得这一点, 多P 几次到 iret 就从系统回来了.
在讲破解捷径前, 我们先作个小实验. 请先进任一程式(这里以abc.exe为例)的注册
画面,输入密码为121345,^D 叫出winice, 看看我们在那里, 如是 user, kernel, gdi
则按 ^D 回来, 再按一次 ^D, 直到模组为 vmm 为止. 好现在我们打入 winice 指令:
s ds:0000 l ffffff '121345' /* 6 个 f 比较稳 */
通常会在 30:????? 找到, 我们当作是 30:7777 好了.
打入:
bpm 30:7777 rw
按 ^d 回来, 再按下注册画面的 . winice 会因这个中断点的设置而停住一个mov
指令, 看一下, 你会发现在 user.??? 中. 我们多 P几次, 经过几个retf 会回到
abc.??? 中. 再以 dos 程式为例, vmm 犹如 int 16, user 是 int 21, 经过几个 retf
回到 abc.exe 即为经过 iret 回到dos程式. 在dos 里回来之後上一行一定是 int 21,
在 windows 下是什么呢? 我履试不爽-------GetDlgItemText.
~~~~~~~~~~~~~~
GetDlgItemText 的用法请用 bc4 的 API help 查询. 前面几个 push 就是参数位址,
取回来的就是我们输入的 '121345'.
通常程式写法如下:
--
我是一只好老鼠!
※ 来源:.紫丁香 pclinux.hit.edu.cn.[FROM: 202.118.226.75]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.294毫秒