使用OllyDbg动态分析程序

首先,用OllyDbg打开Traceme文件,如下图显示:

先运行一下该程序,弹出提示框,提示输入用户名和序列号
在这里插入图片描述
在此随便填入用户名为123456,序列号为234567,按下check,弹出提示框
在这里插入图片描述
所以这个程序的大概流程应该就是输入对应的用户名和序列号,然后程序将获得的用户名和序列号做一系列运算之后与正确的用户名和序列号进行计较。猜想大概流程之后重新运行一下程序,这次要给程序下断点,否则还是会出现和上次一样的结果。因为这个程序需要通过文本框来获得数据,又有程序通常读取文本框内容的字符串用的是以下两个函数:
-GetDlgItemTextA(GetDlgItemTextW)
-GetWindowTextA(GetWindowTextW)
所以可以运用插件里的api断点设置工具将这几个函数勾上,若有出现这些函数,则会在此下断点,然后跑一下程序。程序停在了断点处:
在这里插入图片描述
可知,本程序使用的是GetDlgItemTextA这个函数来读取字符串的,我们并不关心它的读取过程,根据刚刚的猜想下一步就是对读取的字符串进行判断,所以可以直接按Ctrl+F9跳到RETN处,按F8进行下一步
在这里插入图片描述
因为差不多接近判断的函数所以现在一步步按F8,再看寄存器的显示框肯定会有我们刚刚输入的数据,可以看到程序将数据压入寄存器中,旁边的寄存器窗口则正是我们刚刚输入的,接着程序对数据进行判断(call 函数Traceme.00401340),我们接着按F8看看会发生什么在这里插入图片描述
可以看到判断函数完后寄存器里的数据为0了,接着进行了跳转,继续按下F8,再次跳出“序列号错误,再来一次”的提示框,说明刚刚的跳转是一个关键跳转,找到关键后再重新按之前的做法跑一下程序,停在跳转前,改一下代码,将JE改成JNE让它不进行跳转接着运行程序看看会发生什么:

在这里插入图片描述
弹出了“恭喜你!成功!”提示框。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值