版权声明:墨痕诉清风 https://blog.csdn.net/u012206617/article/details/88090413
分析程序情况
第一次进入call为neg
第二次进入call为主程序
第三次退出程序进入call为neg
这个跳转如果改为jmp,那么主程序也没有了
那么我们可以试想写一段C程序做判断
int i = 0;
for (i=0; i<3; ++i)
{
if (i == 2)
不跳转
else
跳转
}
寻找PE头,双击数据
寻找空间
00445E80
下断点,运行程序测试是否有被占用
没有问题,我们寻找的位置是安全的,程序未使用
找到代码段未使用的指令
选择NonaWrite插件
点击Assemble,自动修改填充我们写的代码
修改,跳转到我们的代码(注意下面就是显示对话框CDialog)
破解成功
总结:
1. 在PE头数据段找到一处程序未使用的数据,做我们的变量i(记住地址)
2. 在代码界面寻找一处程序未使用的数据,写程序 (记住地址)
3. 学会使用NoneWrite填充我们的汇编代码
4. 最后修改源跳转对话框的地方跳转到我们写的代码处(注意指令是否被覆盖)
5. 保存两处修改的代码