用特征码定位关键代码,秒杀MFC程序

本文介绍了一种通过特征码定位MFC程序关键代码的方法,特别是在MFC42.DLL中查找CALL [EBP+14]指令。通过在程序中插入特定汇编代码触发断点,然后在OllyDbg中搜索该特征码,可以迅速找到如OnOK()等函数。这种方法不仅适用于MFC,还可以扩展到其他应用程序框架。
摘要由CSDN通过智能技术生成

【文章标题】: 必杀技公布——用特征码定位关键代码,秒杀MFC程序
【文章作者】: 书呆彭
【下载地址】: 自己搜索下载
【使用工具】: VC与OllyICE
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
本文所讲的方法,其实是一个很古老的方法了。以前,考虑到此法的杀伤力巨大,不便于公布。

随着软件开发者保护意识的提高和软件保护技术的发展,此法的杀伤力逐渐下降成为普通等级。

我本人这学期的课程和任务十分多,打算暂时把程序调试这个业余爱好放一放,估计至少会有半年时间不常来看雪了。

把这个方法写出来,算是给大家的告别礼物。



对于直接使用SDK而不使用第三方库的程序,我们要定位到程序的“关键代码”并不困难。通常在CreateWindow函数或DialogBoxParam函数下断点,可以直接获得其主界面的窗口过程或对话框过程。但是对于使用了MFC的程序,我们找到的窗口过程或对话框过程是在MFC提供的程序框架的内部,经过层层的分发和筛选,消息才最终到达用户代码,直接分析起来比较繁琐。

幸好,有一个Olly的脚本,可以直接帮助我们找到诸如OnOK()之类的函数。这个脚本用到的方法,是建立在对MFC内部机制充分理解的基础上,通过在消息分发的代码处下条件断点而完成的。

然而,我马上要讲到的这个方法,在一定程度上,比这个脚本还好使,可以一下就定位到我们感兴趣的代码处。而且,可以举一反三,如果你看明白了其中的思路,可以自己扩展成为十分强大的“必杀技”,不仅对MFC,对其它的应用程序框架也有效果。


我就不讲我如何想到的这个方法,只讲两个例子。如果你看懂了这个例子,其中的思路肯定会明白了。而且,十分简单。


我以MFC42为例。先打开VC6,创建一个MFC的对话框程序,按默认设置。我们在“OK”按钮的处理函数OnOK()的开头,写上这样一句:

__asm int 3
  
然后,按Release编译。

现在,用OD调试程序,不要忽略int3异常,F9运行,点击“OK”࿰

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本来想写如何做免杀,但是要是单个步骤贴图的话太的多了,想了想,还是先把需要的软件都介绍一边吧,然后再讲的时候就比较容易了。 这次我们讲如何使用mycll定位特征定位特征的软件有mycll,cll, multiCCL,还有伯乐。当然功能都差不多。不同的杀软的特征是不一样的,所以对于不同的杀软需要定位不同个特征进行修改。这样做出的免杀比较单一,对卡巴免杀的对瑞星不一定免杀,但是修改特征做的免杀效果比较好。加花,加段,加密,压缩,加壳,这些方法做出来的免杀可使用很多个杀软,也比较简单,但是需要尝试很多种不同的软件版本和组合才能做出好的免杀,等具体做免杀的时候再讲吧。 今天讲mycll的使用,需要定位特征是pcshare1125中update文件夹下的PcMain.dll。 打开mycll,界面如下: 文件:选择需要定位的文件 目录:生成的临时文件的目录,默认的是当前目录,文件名是OUTPUT。 分块个数:分的越多杀毒的时候越慢,建议刚开始的时候分的块少一点,这样定位的时候块。 特征区间(灰色字体):检测出来的特征的区间。一般刚定位出来的时候区间很大,我们的目的是把它定位到2个字节,因为16进制显示的最小单位都是两个字节。 正向:点一下就成了反向了,就是从头到位或者从尾到头的意思,按照个人习惯。一般就是正向就是了。 复合定位,单一定位:此处我们选择复合定位,因为现在的特征都是复合特征了,没有单一特征了。单一特征即是说文件里只有一个特征,复合特征就是说里面有好几个特征。有机会再详细解释特征的原理和东西。 Mycll使用起来很简单。 第一步,加载文件,分块个数设置为10。Output文件路径可以自己定义。如图: 下面显示的是相关的信息,点生成。 点yes。弹出对话框: 点ok。然后对output文件夹进行杀毒。 报告有木马选择“应用到所有”,点删除。然后点二次生成。点“二次处理”, 点ok。对output文件夹进行杀毒。 已经没有病毒了。如果有病毒,吧病毒删除掉,然后继续点二次处理,知道杀不到病毒为止。 此处已经没有病毒了,再一次点击“二次处理”,就会出现病毒的区间,就是那个特征分布示意图。 然后点击“特征区间”,打开特征区间。特征区间上右键,选择复合定位此处特征,或者复合精确定位此处特征,这两项我感觉没有说明区别。 然后分块个数还是设置为10。这次我们查找的是从EFA4长22c1个字节长度的特征,这也是我们刚才定位特征区间。我们可以看下图,和第一次的时候开始为止和分段长度都不一样了。我们用和上面同样的方法定位,一直定位到长度为2个字节。 点生成,杀毒。然后点“二次处理”,再次杀毒,再点“二次处理”,杀毒,“二次处理”,直到出现特征。 和上面同样的方法,加载特征区间,生成,杀毒,二次处理,杀毒,二次处理,杀毒,二次处理。直到没有特征出现。当文件小一点的时候,可以吧单位长度改成2,这就定位精确了。 直到定位到2个字节。如下图: 两个特征。 文件名:D:\studysoft\pcshare1125\update\PcMain.dll ------------------------------------------------ 特征 物理地址/物理长度 如下: [特征] 0000FD31_00000002 [特征] 0000FFBB_00000002 特征分布示意图: [--------------------------------------------------] [--------------------------------------------------] [--------------------------------------------------] [-----------------------------------M-M------------] [--------------------------------------------------] 特征定位完毕。我们定位出来的地址是文件偏移地址,exe定位出来以后用od修改的时候的地址是内存地址,我们可以用OC这个软件吧这个文件偏移地址转化成内存地址。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值