硬编码寻找序列号(四)
使用工具
- 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,就在寄存器窗口发现了熟悉的字样:![call]() - 既然把“序列号”都传进来了,那应该就是比较了,开始分析: ![分析]() 
- 分析完成,比较的部分是常规方法,就是中断程序有点麻烦! 
 




