破解第一课-TrackMe

 

这篇文章就来展开菜鸟们进行软件破解的第一课吧~

我们在看雪论坛上下载一个例子TraceMe进行分析。

破解第一课-TrackMe_第1张图片

这是一个模拟序列号验证的的程序,如果信息填写不正确将会提示错误消息

破解第一课-TrackMe_第2张图片

我们的目的就是在不知道序列号加密算法的情况下将序列号破解。

首先打开OllyDbg,加载我们要破解的程序

破解第一课-TrackMe_第3张图片

暂时不要被眼前眼花撩轮的汇编代码所迷惑,让我开始认真的进行逆向思维吧~

首先,我们应该明白Windows应用程序在获得一个空间的内容时会调用GetDlgItemText()API函数,这个程序是ANSI版的,所以调用的具体API是GetDlgItemTextA();

所以这是一个突破点,让我们找到核心逻辑代码的附近区域。

按下“Ctrl + G” 然后搜索我们要找的API

破解第一课-TrackMe_第4张图片

之后OllyDbg会进入USER32.DLL中的GetDlgItemTextA()的入口点,我们在此设置一个断点,运行程序会到达这个断点处

破解第一课-TrackMe_第5张图片

按下“Alt + F9”跳转至函数调用的入口,我们会发现程序调用了两次GetDlgItemTextA()函数,查阅MSDN我们可知该函数的定义,然后根据压栈顺序确定出我们输入的字符串参数位置

破解第一课-TrackMe_第6张图片

我们在用户名输入框输入pediy,并调试到Call指令之后查看eax寄存器的值证明我们的猜想是正确的

破解第一课-TrackMe_第7张图片

继续单步执行直到一个跳转语句后程序发生跳转,显示错误,至此我们发现跳转指令的位置

破解第一课-TrackMe_第8张图片

由于是“暴力”破解,直接改为nop写入文件即可 ~~~~0~~~~

破解第一课-TrackMe_第9张图片

大功告成!

破解第一课-TrackMe_第10张图片

你可能感兴趣的:(加密,算法,windows,api,汇编,破解)