9。findingcmps
对于那些简单的在启动时就通过常量来判断注册状态的软件来说,我们很容易找到wheretopatch。找到与unregisted,registered相关的字符串,然后检查他们附近的哪些jmp是跳过,跳入registered状态的,跟踪条件跳转前的比较或者返回值就可以看到程序判断注册与否的常量了。强制执行跳入到registered状态的跳转就是plain,stupid,buteffective的破解,或者将比较用得常量改成与跳出registered状态相同的比较常量就可以。也可以将条出registered状态的跳转nop掉。还可以试试moval,1:)
最左边三个绿底色:打开新文件返回汇编窗口关闭当前进程或窗口
中间的七个粉红底的调试:运行暂停F7F8单步跟踪CTRL+F7F8自动单步跟踪ALT+F9执行到用户代码
中间的绿底工具栏输入要跟随的表达式
蓝底色查看工具栏:LEMTWHC/KBR...S
ALT+L打开LOG窗口
ALT+E打开MODULES窗口
ALT+M打开内存窗口
ALT+T打开THREAD窗口
ALT+W打开WIN窗口
ALT+H打开HELP窗口
ALT+C打开CPU窗口
/PATCHES
ALT+K调用堆栈
ALT+B打开断点窗口
ALT+ROLLYmachinerecentfiles
...RUNTRACE
SSOURCE
ALT+F5使OLLYDBG界面位于其他WIN窗口之上。
最右边的三个绿底:调试选项界面选项帮助
第八章NAG窗口的位置确定---OD的独特魅力
这个软件老是跳出一个时间限制的注册(NAG)窗口。个人的理解:这方面是OD的
拿手好戏。
方法1:
OD载入脱壳后的执行文件,CTRL+F8,出现注册窗口时停在:
005057EC|.FF5618calldwordptr[esi+18]
设断此CALL,单步一过此CALL,NAG窗口就出现了。
设断此CALL,单步F7进此CALL,CTRL+F8:
004018D6.E8FDA90C00call004CC2D8
004018DB.A100E65200moveax,dwordptr[52E600]
重复设断子CALL,CTRL+F2,F7进入,CTRL+F8:
004CC309.FF572Ccalldwordptr[edi+2C]
004CC30C.33C0xoreax,eax
重复以上步骤:
004029F1|.E863741000call00509E59
004029F6|>8BE5movesp,ebp
重复以上步骤:
0040887A|.FF92E8000000calldwordptr[edx+E8];001.004C8F04
00408880|>8B4DDCmovecx,dwordptr[ebp-24]
命令解释:Ctrl+F8→自动步进扫描,按F12可停止。
方法2:
F12暂停和Ctrl+F9的组合寻NAG窗口位置:
004C90DA.33C0xoreax,eax
Ctrl+F9几次,直到一个CALL下一行:
0040887A|.FF92E8000000calldwordptr[edx+E8]
00408880|>8B4DDCmovecx,dwordptr[ebp-24]
设断CALL,发现此CALL一单步过就出NAG窗口。
总结:OD有两个确定NAG窗口的组合。
第九章提示杀手---F12暂停和Ctrl+F9的组合
算法分析的三个基本问题:
1.注册判断的关键位置在哪?具体又分为两部分:
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-32335-7.html
难道是“碰瓷”