为什么我玩fs2008老是会被初
HShield更新了,过时的文章了,所以发出来。
逆向hackshield的一些总结
作者:Isaiah
感谢shoooo的指点。
仅仅出于对技术的好奇,请勿用于商业目的。
转载请保持文章完整性
hackshield是一款网游反黑客系统。
1。主要功能在EHSvc。dll中。
2。通过驱动来修改SSDT进行反调试。驱动文件是作为附加数据绑在EHSvc。dll文件尾部。动态的解出,加载完毕马上删除(大概存在几秒钟就被删掉了)。
目前的成果:
1。让EHSvc。dll被脱壳后,也能通过hackshield系统的自效验。
2。去掉反调试。
函数的作用:
#1:初始化 return val...全部
HShield更新了,过时的文章了,所以发出来。
逆向hackshield的一些总结
作者:Isaiah
感谢shoooo的指点。
仅仅出于对技术的好奇,请勿用于商业目的。
转载请保持文章完整性
hackshield是一款网游反黑客系统。
1。主要功能在EHSvc。dll中。
2。通过驱动来修改SSDT进行反调试。驱动文件是作为附加数据绑在EHSvc。dll文件尾部。动态的解出,加载完毕马上删除(大概存在几秒钟就被删掉了)。
目前的成果:
1。让EHSvc。dll被脱壳后,也能通过hackshield系统的自效验。
2。去掉反调试。
函数的作用:
#1:初始化 return value: 0
#2:加载驱动 return value: 0
#10:初步的自效验 return value: 0
#14:内存效验。
临时的解决方法如下:
1。修改EHSvc。dll的#10函数让其eax永远返回0。
2。修改EHSvc。dll的#2函数让其不加载驱动,并且eax返回0
上面的方法不是很好。
下面是#1函数的流程分析:
9个参数
0。
属于Freestyle模块的函数的地址,估计是freestyle提供的回调函数。
1。验证主程序freestyle。exe文件名的key=3ECh。(发现只要文件名前面为freestyle就可以通过)
2。
主程序文件名Hash后的散列。用peid算法的识别插件显示使用的hash函数为HAVAL-128
3。DWORD标志字段,每一位都有含义。目前意义不祥
4。注册表中packver的键值,本机为3032601h
5。
一个标志字段。freestyle。exe传过来的值为2。和驱动加载有关,具体用途不明。这个值要影响一系列的标志位。
6。 Hackshield Ehsvc。dll的文件名(带路径)
7。GetTickCount的地址
8。
GetSystemTime的地址
大概的流程:
首先在注册表HKCU下创建Software\\AhnLab\\HShield项。如过存在就打开。
将Ehsvc。dll的路径信息写入默认的键值,将3032601h键值写入 packver
然后查询log键的值,但是我的注册表里面没有这个键。
(奇怪的地方),这个log键关系到一个全局变量的值。
接下来:
用参数3当作标志
第9位是否置1
如果是则设置一系列全局变量----这里必为1
根据全局变量,判断#1是否已经成功的调用过。
判断是否传入了回调函数的地址
判断是否传入了主程序文件名的Hash值
如果通过
1。检查当前运行主程序的文件名是否和原始的一样
用参数3当作标志
第15位是否置1
如果是则设置一系列全局变量----这里必为0
不为0,将要启动一个新的线程,作用不明。
用参数3当作标志
第10位是否置1
如果是则设置一系列全局变量----这里必为0
不为0也要执行一些不明作用的操作。
判断操作系统,如果是2000以上,操作系统版本全局变量=1
参考资料: 。
收起