这里就是HackShield文件夹内景了。。。
其中,我们需要注意 EHSvc.dll,这是一个集成数据库,相当重要
刚才我们已经提到了,HackShield 是 nProtect插件中的一部分,它的主要功能就体现在EHSvc.dll中,方式是通过驱动来修改SSDT进行反调试。驱动文件是作为附加数据绑在EHSvc.dll文件尾部。动态型解出,加载完毕马上删除,大概只存在几秒钟就被删掉了。
还记不记得这个图?
这个就是用来标记调试状况的。
接下来附上调试流程:
#1:初始化 return value: 0
#2:加载驱动 return value: 0 修改EHSvc.dll的#2函数让其不加载驱动,并且eax返回0
#10:初步的自效验 return value: 0 修改EHSvc.dll的#10函数让其eax永远返回0.
#14:内存效验. 9个参数
依次校验
属于Freestyle模块的函数的地址,估计是freestyle提供的回调函数。
主程序freestyle.exe文件名的key=3ECh.(发现只要文件名前面为freestyle就可以通过) 主程序文件名Hash后的散列.用peid算法的识别插件显示使用的hash函数为HAVAL-128
DWORD标志字段,每一位都有含义
注册表中packver的键值
一个标志字段.freestyle.exe传过来的值为2,加载驱动这个值要影响一系列的标志位. Hackshield Ehsvc.dll的文件名(带路径)
GetTickCount的地址
GetSystemTime的地址
在注册表HKCU下创建Software\\AhnLab\\HShield项.如过存在就打开.
将Ehsvc.dll的路径信息写入默认的键值,将3032601h键值写入 packver
然后查询log键的值这个log键关系到一个全局变量的值.
用参数3当作标志,第9位是否置10,如果是则设置一系列全局变量----这里必为1
根据全局变量,判断#1是否已经成功的调用过.
判断是否传入了回调函数的地址
判断是否传入了主程序文件名的Hash值
检查当前运行主程序的文件名是否和原始的一样
用参数3当作标志,第15位是否置1 ,如果是则设置一系列全局变量----这里必为0,不为0,将要启动一个新的线程.
用参数3当作标志,第10位是否置1,如果是则设置一系列全局变量----这里必为0
判断操作系统,如果是2000以上,操作系统版本全局变量=1
END,DEBUG OVER
通常呢,大家总感觉在开始的时候里面的绿条慢的和蜗牛一样。。。
其实人家也不容易啦,执行那么多操作,大家多忍忍吧。。。另外,游戏在这个时候出错就是调试时出的问题,大家可以对照着调试步骤一点一点看哦。。。