OD笔记3 一次简单的尝试

今天看完鱼c论坛的OD教程之后,尝试用自己的思路做一做。

目标:     ①去除使用次数限制。

               ②去除退出时的广告。

思路:①先让使用次数达到上限,打开时出现注册对话框。这时在OD里暂停,通过查看堆栈调用,可以大致定位到判断节点。

②对照未达到使用上限的软件,观察①中节点附近的运行状况,并进行修改。

具体步骤:

1、      首先将软件反复运行,直至出现次数限制提示,如下:

2、      载入可执行文件,F9运行,出现上面的对话框之后暂停。

这时程序停在系统领空,等待接受消息。Ctrl+K查看堆栈内的函数调用,如下图:

从“调用来自”窗口可以看到,程序领域内的VisualSi.004899B3处调用了系统领空的MFC43模块,双击查看该位置。并按下F2设置下断点。对于使用次数是否为0的检测大概就在这之前。

往前观察,发现以下函数被调用:

RegQeurtValueExA()

RegCloseKey()

到这里猜到程序应该是根据注册表来判断是否达到使用限制,这也就将判断点定位到了一个区间内(从读注册表到出现提示注册对话框)。

 

下面对未到达使用上限的程序进行调试。定位到该区间内,并留意具体的每个跳转语句是否实现跳转,并在对应语句后面写下注释(Y代表跳转实现,N代表跳转未实现)。

这里我是在另外一台主机上进行的,因为在原先主机上,即使打开新的软件依然会提醒使用限制,因为注册表内容已经被修改。

然后返回已经被限制的程序,单步执行,对比上述区间内差异,同时修改。

应该跳转的时候未跳转,可以用无条件跳转指令jmp替换条件跳转指令;

不应该跳转的地方跳转了,可以用nop将跳转指令填充掉。

实际上修改的只有下面这一处。


修改完成保存上述修改,并在修改处作注释。运行结果ok。

二、去除退出时的烦人广告。

1、重新载入可执行文件,F9运行,退出程序,出现广告。暂停执行,这时程序应该停在系统领空,等待接受消息。与之前一样,Ctrl+K呼出堆栈,查看函数调用,如下图:


观察到在用户领空00480c24处调用了MFC24,双击跟进。


F2下断点。Ctrl+F2重新载入,执行到断点,单步执行,显示广告,关闭广告后,程序停在下一条语句。所以可以把整条语句用nop填掉,不影响程序退出。保存修改之后可以发现广告已经去除。


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值