函数的调用不是直接调用,而且指针的间接调用。
并且COM盾中的函数指针数组都是临时不同时期随机装载的,必然会出现两种状态,一个是正确的函数指针数组顺序,即每个函数都有正确的入口地址,一个就是未装载,必然函数指针不对,如果强行调用,必然发生异常。
COM盾的表达式为:
COM.fnPtrArray[Tab[Dog(Hash[T])]](…)->fn(…)
其中:
fn()为实体函数,…为函数的参数。
COM为COM盾结构
fnPtrArray为函数指针数组
Tab为随机散列数组表格
Dog为看门狗监视器
Hash为带有时效T的可逆哈希表
从表达式中可以看出,不同的T会有不同的Hash表。T是分不同阶段的,例如COM盾装载过程即反跟踪过程,文件校验即反篡改过程,数据确认即反注册过程。
所以,COM盾没有得到合法的注册授权,就无法知道函数的入口!!!
即非法用户连跟踪的资格都没有,必须到合法用户的电脑上进行跟踪!!!
所以COM盾不是一般人可以逆向的!!! |