- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第十四章-硬编码序列号寻踪-Part2
首先我来解答一下上一章留下的那个Crac
kMe。
用OD加载名为mielecrackme1的CrackMe。
断在了入口点处,我们单击鼠标右键选择-
Search for-Name(label)in current mod
ule看看该CrackMe使用了哪些API函数。
下面是找到的API函数列表:
其中有几个API函数比较重要,GetWindowT
extA :获取用户输入的序列号。lstrcmpA,
上一章最后提到的,用于字符串的比较。M
essageBoxA :用于显示一条消息,提示是正
确或者错误的序列号。
我们可以给这几个API设置断点,当我们输
入错误的序列号的时候,就会断下来。但
这里我们使用更加简单,快速的做法,我们
来看看程序中使用的字符串。
我们通过在反汇编窗口中单击鼠标右键选
择-Search for-All referenced text st
rings打开字符串列表窗口。
我们可以看到上面列表中有提示成功以及
失败的字符串。如果我们在该字符串上面
双击鼠标左键,就可以来到MessageBoxA调
用代码附近。现在我们在”You entered
the right password!”字符串上面双击
鼠标左键。
来到了比较关键的地方。
首先是GetWindowTextA获取用户输入的序
列号,然后lstrcmpA将输入序列号与正确
的序列号进行比较,相同的话就MessageBo
xA显示”You entered the right passwo
rd”的提示框,如果不相同就MessageBoxA
提示”Maybe, you should try again,it
’s sooo easy!!”的提示框。
所以我们给lstrcmpA函数设置一个断点,
看看是如何进行比较的。
按F9键运行起来。
我们在弹出的窗口中随意输入一个序列号
,例如:这里我们输入989898。
单击Check按钮,就会断在我们刚刚设置的
断点处。
我们可以看到OD中显示的参数,进行比较
的两个字符串,分别是”989898”和”can
nabis”。
我们按F8键单步步过这个API调用。
EAX中存放的返回值为FFFFFFFF,意味着比
较的两个字符串不相同。
因为比较的结果不为零,所以零标志位Z不
置位。JNZ跳转就会实现。(记住:JNZ当零
标志位Z置0跳转,置1不跳转)
跳转实现以后就弹出一个错误消息框。所
以,与我们输入序列号进行比较的”canna
bis”就是正确的序列号。我们继续运行
程序。
单击OK,我们回到主窗口,输入正确的序列
号”cannabis”。
单击Check按钮,依然断在了我们设置的断
点处。
可以看到待比较的两个字符串是相同的,
按F8键单步步过这个API函数。
因为两个字符串是相同的,所以EAX中保存
的返回值为0,并且零标志位Z置1。
现在JNZ跳转将不会实现。
我们直接运行程序,将会弹出一个显示序
列号正确的消息框。
这就是第13章遗留下的CrackMe。正确的
序列号是”cannabis”。
我们再来看一个更加复杂的硬编码的Crac
kMe(比之前的两个复杂)。
这个CrackMe并不是序列号直接进行比较
。用OD加载这个名为”crakmeeasy”的Cr
ackMe。
我们像之前一样查看API列表,该列表中有
GetDlgItemTextA,我们给这个函数设置一
个断点。
我们在命令栏窗口中输入bp GetDlgItemT
extA。
我们现在按F9键运行程序并输入序列号。
随便输入一个错误的序列号
单击Check按钮,断在我们刚刚设置的断点
处。
我们来看看堆栈中参数。
这里我们可以注意到Buffer参数:用于保
存用户输入的序列号,我们在这个参数上
单击鼠标右键选择-Follow in Dump。
这里缓冲区是空的,因为该函数还没有执
行,我们选择主菜单项-Debug-Execute ti
ll return。
执行到函数返回。
我们按下F7键,返回到主程序代码中。
我们可以看到,缓冲区里面保存了错误的
序列号。
这里我们看到了一长串数字字符串。有些
人可能会问这是正确的序列号吗?呵呵,我
也不知道。
这里EAX保存了401222这个常量地址,该地
址指向一个固定的字符串。
单步一行,EAX就等于401222了。
MOV EDX,DWORD PTR DS:[EAX]
等价于:
MOV EDX,DWORD PTR DS:[401222
您可能关注的文档
- 糖尿病教育-01-糖尿病基础知识.pptx
- 糖尿病教育-02-从关键指标看糖尿病的诊断与治疗.pptx
- 糖尿病教育-05-糖尿病降糖药物的选择.ppt
- 糖尿病教育-08-HbA1c测试介绍.pptx
- 糖尿病教育-09-糖尿病与并发症.pptx
- 糖尿病教育-11-关注下肢血管病变和糖尿病足.pptx
- 糖尿病教育-12-β细胞功能知多少.pptx
- 糖尿病教育-16-体重控制.pptx
- 糖尿病教育-17-肥胖糖尿病患者的治疗与管理.pptx
- 人工神经元网络模型.pptx
- 使用OllyDbg从零开始Cracking-15第十五章-硬编码序列号寻踪-Part3.pdf
- 使用OllyDbg从零开始Cracking-16第十六章-序列号生成算法分析-Part1.pdf
- 使用OllyDbg从零开始Cracking-17第十七章-序列号生成算法分析-Part2.pdf
- 使用OllyDbg从零开始Cracking-18第十八章-序列号生成算法分析-Part3.pdf
- 使用OllyDbg从零开始Cracking-19第十九章-OllyDbg反调试之IsDebuggerPresent.pdf
- 使用OllyDbg从零开始Cracking-20第二十章-OllyDbg反调试之检测OD进程名.pdf
- 使用OllyDbg从零开始Cracking-21第二十一章-OllyDbg反调试之检测OD进程名,窗口类名,窗口标题名.pdf
- 使用OllyDbg从零开始Cracking-22第二十二章-OllyDbg反调试之UnhandledExceptionFilter,ZwQueryInformationProcess.pdf
- 使用OllyDbg从零开始Cracking-23第二十三章-OllyDbg反调试之ProcessHeap,NTGlobalFlag,OutputDebugStringA.pdf
- 使用OllyDbg从零开始Cracking-24第二十四章-OllyDbg反调试之综合CrackMe.pdf
原创力文档


文档评论(0)