1、1 目录目录 1.题目要求 . 2 2.使用工具 . 2 3.破解正文 . 2 3.1 查看程序 . 2 3.2 查找关键点 3 3.3 逆向主要函数 4 4.总结 15 6.参考文献 . 21 2 简单程序的密码破解简单程序的密码破解 1.题目要求题目要求 自己写一个简单的 Windows 程序,要求输入密码,在密码不正确时,提示 “password error” 。如果正确,则出现一个新的界面。对于生成的执行文件进行 反汇编,阅读和跟踪执行,暴力破解(生成新版本的执行程序)或找出密码。 2.使用工具使用工具 Olldbg , IDA , PEid , RadASM , VC+ 3.破解正文
2、破解正文 3.1 查看程序查看程序 先使用 PEid 载入程序,如图 3.1.1 所示,显示界面为 win32 GUI,情况确实 如此,此程序界面是用 VC6+直接做出来的。有最下面那个 Nothing found*可知 程序并没有使用任何加壳手段。 图 3.3.1 直接运行程序,输入任意字符如:123456,123456 点击注册,查看是否有任 何提示信息,如图 3.1.2 所示 3 图 3.1.2 3.2 查找关键点查找关键点 首先用 OD 载入程序,这里使用三种方式查找关键点,第一种方式是查找关 键字符串 password error,右键 中文搜索引擎搜索 ASCII 码,即可查看所有
3、 字符串。 中文搜索引擎 地址 反汇编 文本字符串 0040113F push KeShe.00402050 汇编 00401144 push KeShe.00402038 password error 00401172 push KeShe.00402050 汇编 00401177 push KeShe.00402038 password error 0040126F push KeShe.00402050 汇编 00401274 push KeShe.00402047 注册正确 004012FB call (Initial CPU selection) 0040133A push KeSh
4、e.00402050 汇编 0040133F push KeShe.00402038 password error 这里有三处出现关键字符 password error,而且字符串 注册正确肯定也 很重要。分别双击跟进去,即有可能找到关键代码段。 第二种方式是给相关函数下断点,这里首先要输入字符串,则很有可能用到 GetDlgItemText 之类的 API, 所以给 GetDlgItemText 下断点, 就能在输入用户名, 密码后跟踪到程序,来分析关键代码。 第三种方式是根据程序的类型结构,直接分析。 004012FB call ; InitCommonControls 00401300 push 0x0 ; /pModule = NULL 00401302 call ; GetModuleHa