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毫秒