在od破解软件过程中,大家对于字符串应该是再熟悉不过了,但是往往事情不尽如人意,总是搜索不到想要的字符串,这时往往有的人会被迫用别的方法,消息断点,内存断点,硬件断点等等,今天咱们只谈字符串,把我所掌握的查找字符串的步骤都总结到这里,当然,本人水平有限,难免有不足和纰漏的地方,还请指正。也正是因为水平有限,随着知识的积累,这篇文章也会不定期添加新的发现。(以下是一步一步按照从无脑查找方法到一些另类方法)
当载入od后,自然会想到中文搜索引擎的智能搜索
如果没找到:
这时会想到,也许是加壳的原因
1:脱壳;
2:直接f9;
3:外面打开,od拖入
经过这3种方法,也许就能找到,当然前提是要在程序领空在搜索,例如401000
如果还没找到:
尝试ctrl+A分析一下,然后再智能搜索
如果还没找到:
尝试用去花插件如E junk code去花之后再搜索
如果还没找到:
这时多数人会想到,用Alt+M
然后ctrl+b:ascii和unicode各搜一次,很多朋友不知道如果搜到了该怎么处理呢?
1:在搜到的地址下内存访问断点
2:在搜到的地址下硬件访问断点
3:在反汇编窗口搜索命令:push + 内存中搜到的地址
4:在反汇编窗口搜索常量:内存中搜到的地址
5:在反汇编窗口ctrl+B搜索:内存中搜到的地址(这里要注意用小端的方式)
如果还没找到:
Alt+E:看看会不会在某个敏感的dll中,去dll中重复以上操作
如果还没找到:
尝试用资源工具:例如ResHacker,查找,搜索文本,查到了你也许会看到这种形式:2076,“这是你要找的字符串”,记下这个编号2076,去od反汇编窗口搜索常量十进制的2076或者搜索命令:push 81c (2076的Hex)
如果还没找到:
尝试用CE工具查找:
如果还没找到:
我曾经遇到过一个软件,软件是中文的,我要搜索的字符串是:“注册”,怎么搜都搜不到,以外的发现安装目录里面有个language文件夹,里面有个ini文件,格式是这样的:
registered:“注册”。此时就需要搜索“registered”了
如果还没找到:
尝试智能搜索字符串的ascii或者unicode或者base64
2017.5.11日更新:
今天在做易语言逆向的时候,怎么都搜不出字符串,反复百度,找到了一个方法。
先用e debug events调试,看什么事件发生,记下地址,下断,f9,然后再字符串搜索就行了(这程序比较变态,如果直接运行起来程序是几个没有字符串的)
2017.5.27日更新:
数据约束性的秘诀:如果注册码在程序运行过程中存在明文的话,多数情况下其地址会在一定的范围内,即:用户输入假注册码地址的±90个字节处
如果再找不到,那就有可能目标是图片或者加密了,恐怕只能放弃字符串这个方向了,由于这个主题只讲字符串,以上就是本人所掌握的所有有关字符串的找法,水平有限,难免有考虑不周或有所纰漏,还请大家在评论中多多指正。今后发现更好的方法还会添加在这里。