对付自校验

转载 2007年10月04日 17:07:00
现在的软件为了保护自身不被修改,防止脱壳,不少都加上了自身的完整性校验,一旦发现自己的关键指令被修改或被脱壳了之后,毫无提示地就拒绝运行。这种令人头疼的自校验相信难住了不少跟我一样的菜鸟!后来再遇到自校验,就只好开2个OD,下断CreateFilaA,然后,一步一步地跟,一句一句地对照,不知道经过多少步之后,哈,发现了一个跳转不一样,激动地改掉,成功。对于这样直接比较的软件校验还可以用这种不怕脏不怕累的方法搞定,但是对于那种将自身一个字节一个字节读取出来,然后经过超级变态复杂地算法运算过后,得到了几个值,偷偷记下来,或作为后面程序运行的关键值,或者分开几个地方偷偷比较,如果不对,就异常啦!这样的校验,相信光凭耐心和运气是不行的吧?前几天在FLY老大的论坛偶尔看到了fxyang大侠的文章:浅谈cool edit pro2.1脱壳后解决自校验,就是这样的校验方法。fxyang大侠的解决方法是:跟踪原版程序,由于校验算法复杂,不分析过程,只看得到几个结果,记下他们的值,然后在脱壳后的文件中强行将原版的值写入,最后问题解决。这种方法虽然巧妙,但是还是要分析原版计算出的几个值,并且要在脱壳文件中一个一个写入,修改字节过多,容易出错,毕竟如果有一个地方没有看到就会前功尽弃。有没有更好更简便的方法呢?呵呵,终于到主题了,呼~ 静下心来仔细想一下,总结一下程序是如何校验的:首先GetModuleFileName得到自身路径和文件名,然后CreateFile打开自身,接下来,如果是简单地比较大小,就调用GetFileSize得到程序大小,和原版大小比较,size大了就OVER,这种比较简单;如果要进行CRC等算法校验,就会CreateFileMapping映射的一块内存中准备ReadFila读取计算,最后计算出几个值... 呵呵,注意到了吗?无论哪中方法,都要CreateFile打开自身,才能进行下一步操作,那想到了吗?既然程序要打开文件校验,我们就想办法让它不打开自身而是打开原版去计算、校验,这样无论它怎么变态,复杂,计算结果都是正确的 .

相关文章推荐

对付无法删除文件的绝招

  • 2011年12月01日 16:01
  • 24KB
  • 下载

对付身体小毛病的80妙招

1.打嗝的时候,舌头下面含白糖!打嗝的时候 捏着鼻子喝水 就好了,打嗝的时候用大拇指用力掐中指指腹。就不会了     2.每天用红红的上海药皂洗脚,洗袜子鞋垫神秘的,可以去脚臭。   3....

输出文件的最后几行,可以对付超大文件

当一个文件,特别是系统日志文件大于2个G时,1000多万条数据,如果用file打开返回所有行的数组,系统会直接卡死或者内存爆满。 这时,我们可以用文件指针fseek来定位、fgetc来获取换行符和f...

对付EXC_BAD_ACCESS的再一次胜利——暴力调试法

一波未平,一波又起,这不,下午继续开发进度的时候,又遇到了新的问题: // *************************************************************...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:对付自校验
举报原因:
原因补充:

(最多只允许输入30个字)