菜单View-executable modules - show names,找到ReadFile和MessageBoxA,打上断点
在反汇编窗口右键,Search for - all referenced strings, 找到output字符串,并设断点
有了这几个断点,你就可以在运行中观察寄存器/栈/内存等内容,以及汇编指令来了解整个程序的运作机理。多走几遍,多观察思考,适当添加断点与注释。特别注意哪些条件测试指令与call指令,确定其行为后继续跟进去。
这样,就找到了其内部获取系统信息的函数调用,与根据系统信息算出授权码的函数调用,从而得到了正确的授权码,结束。
当然,要做的好一点的话,还可以:
分析其授权码产生函数的算法,自己写一个产生器
或者,动态修改其可执行文件,将其产生的授权码用一个MessageBox输出。
但对于第一项,这需要阅读很多汇编代码,我没时间;对于第二项,需要插入对windows API函数的调用,这比简单的修改一个指令要复杂,暂时还不会,也不打算仔细研究。毕竟,是朋友所托,完成任务即可,不打算仔细研究 - 我还有很多其他重要的事情要做。
四、技巧总结
你可以通过猜测可能调到的Windows API函数,设置断点作为突破口
你也可以通过可能reference到的字符串设置断点
查到指令也是一个方法,但估计不是很有用 - 在没有源代码的情况下你很难预测一个特殊的指令被调用到了
选中指令后,你可以右键-help on command来查到汇编指令帮助
你可以双击汇编指令进行修改
你可以添加注释 - 在一个漫长的破解过程中,记下你发现的是蛮重要的
选中指令后,你可以看到其跳转关系
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-41790-2.html
千千
拜托
先进些