第三个crackme之4c大法

今天做到第三crapeme,发现点开程序后总会弹出一个没用的弹窗,大概七八秒,点也点不掉,很浪费时间,所以打算去掉这个弹窗。

一开

一开始以为这个弹窗应该就和之前的程序一样,找到函数调用的地方然后nop掉或者跳过就可以了,但后来找来找去硬是找不到,然后在看了视频教程后才知道这个程序是用VB写的,所以和之前的有些不一样。这种烦人的弹窗叫nag,用VB写的我们一般会用4C大法来把它去掉,下面就来介绍一下4C大法。

把程序拖入OD

发现一开始就是一个push,一个call。然后F8单步步过,发现执行完call调用后就出现了我们程序的弹窗nag。这里我们要理一下:压入参数,调用函数,弹出nag。如果我们把这个call调用给nop掉或者跳过的话,那么后面真正需要的窗体也没了,所以我们想是不是能从参数入。然后我们可以看到参数其实是一个地址,所以我们跟进去看一下。数据窗口中跟随>立即数:

 

 我们跟进去后发现就是一堆数据,根本看不懂,只知道那些下面划了横线的是表示上面的数据表示一个地址,就类似于c++中的指针,指向某个地方。没办法,只能跟进去看看是什么东西。首先进去第一个地址:

毫无规律,完全看不懂。第二个:

咋一看,似乎毫无规律,但是仔细看看会发现:第一个5行和第二个五行似乎有什么联系,两个5行的第一个数据都是50,并且结尾的4个字节正好的数据是一样的,表示地址的位置也是一样的,还有很多有规律的地方,并且只有两个这样的有规律的数据段,而我们程序的窗口也是两个,所以这里很可疑。其实如果在网上查阅一些资料或者看过一些教学视频就会知道,这里其实就是VB程序的窗口部分,只是只有两个不是很明显,如果多几个窗口就会发现每个窗口的第三行的第五个字节表示其实就是窗口的编号 ,第三行的第九个字节表示的就是是否要执行这个窗口或者一些窗口的执行顺序,这个规律如果是换到一个窗口比较多的程序来的话是很好找出来的。

所以我们现在可以把窗口执行顺序改一下,把第二个窗口第三行第九个字节的数据10改成00,而第一个窗口相应数据改为10

 然后我们再执行一下程序,发现真的就直接跳过nag弹出我们的有用的窗口了

 这样就可以去掉nag了,然后我们来总结一下这个规律:先从函数参数那里入手,因为参数是一个地址,所以我们跟进去看,然后发现有很多表示地址的数据,在我们参数表示的地址后面4c的位置的那个地址,跟进去后就是弹窗的内容,我们可以再看一下

 4067d4加上4c正好是406820,也就是我们第二个地址那里。4c大法的名字也是由此而来。然后进入到弹窗那里后,再找到规律,一般决定执行弹窗与否的数据都在固定位置,也就是上面所讲到的位置,然后根据规律把那里修改一下就可以了。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值