-
-
[求助]关于代码自检测的编写。
-
发表于:
2005-6-25 05:14
6517
-
很早玩过一款网络游戏。 当时很多数据是在本机计算的。 所以可以修改指令达到一些特殊效果。 但后来一修改就会导致程序退出。 到指令上下内存读断点发现原来是有个timer不停的读指令来效验完整性。
现在做一个程序, 想把这个功能加上。 以下是我的设想。
1: 得到自运行程序文件名字, 解吸pe格式得到隐射的虚拟地址
2: 创建一个线程序对全部指令地址进行crc效验,为了不影响指令的执行
把crc比较值记录在文件某个位置,比如追加到exe结尾部分。
开个timer或者thread来检测
伪代码如下
int iCrc = GetCrcFromFile();
if ( GetCrcFromFileMapping() != iCrc ) ExitProcess(-1);
但是我必须跟踪程序来得到GetCrcFromFileMapping的值,从而最后手动修改
exe的时候把这个值放进去。但问题是。
但一跟踪程序就需要设置断点, 只要设置断点产生的int 3(CC)就一定会
影响到GetCrcFromFileMapping的返回。 从而得不到正确crc值。
不知道有什么好办法吗?
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课