硬编码寻找序列号(四)
使用工具
- OllyDbg 1.10原版,简称
OD
; OD
插件:中文搜索引擎;OD
汉化
和插件
均来自互联网;- CrackMe来自互联网,仅供学习使用;
- 文中特殊数字均是
HEX
,为了书写方便采用DEC
;
逆向思路
事实证明:不能“以貌取人”。
刚打开软件的时候,心里还想着,这么简陋?分分钟就逆向完毕了,结果,“啪啪啪”实力打脸,针扎的疼。
首先,打开软件到处点点,逆向一个软件起码要会用吧,不会用就没必要说逆向了;
倒入
OD
开始分析:首先按下
Ctrl + A
让OD
分析一下代码;接着按下
Ctrl + N
查看使用了哪些API
,翻了翻,呀呵,看着简陋,用的API
还真不少,那就搜索吧,没有GetDlgItemTextA
?那就拿GetWindowTextA
下手吧:在GetWindowTextA
函数上设置断点,然后去断点窗口
双击断点进入反汇编窗口
给断点设置备注,这是一个好的习惯,请保持;然后
F9
运行程序,“随便输入” 一些字符后点击验证,可以随便输入,但请记住它;居然没有断下来,也没有弹窗,这让我很尴尬:
嗯,界面有按钮,那就试试消息断点,熟练的设置好
消息断点
,运行程序,输入,点击按钮,还是没有断下来;不怕,还有
内存断点
、硬件断点
,挨个试了一遍之后,没有一个成功的,灰心丧气呀,怎么像刺猬 🦔 一样无从下手?等等,看了看程序的界面,猛的想起了大佬说的一个工具:
中文搜索引擎
:这玩意儿可以参考,但不要过分依赖,友好的开发者可能只是关闭你的程序不让你调试,至于不友好的,知道为啥要用虚拟机吗?重载程序,在
反汇编窗口
右键选择中文搜索引擎
:然后
Ctrl + F
搜索熟悉的字眼儿Wrong Code DUDE
,果然有,双击来到反汇编窗口
,嘿嘿,这里看起来很重要嘛:- 一个失败的字样;
- 一个成功的字样;
- 紧挨着上面有一个跳转:可以猜测,如果跳转的话,可能就显示成功了;
- 跳转上面是一个
CALL
,那它很可能是比较的CALL
; - 至于更上面的代码,那肯定是获取用的呗,瞎猜的;
既然找到了可疑的代码,那就双击
CALL
给它下一个CC断点
,然后运行程序,输入序列号点击验证后,程序暂停在了CALL
的位置,那就F7
进CALL
看看,验证一下猜测;刚一进
CALL
,就在寄存器窗口发现了熟悉的字样:既然把“序列号”都传进来了,那应该就是比较了,开始分析:
分析完成,比较的部分是常规方法,就是中断程序有点麻烦!