1.权值发生器数组,在第一次动态链接库初始化产生,若多次动态链接库初始化则会摧毁权值发生器。
它负责系统的CRCn的权值,初值和出值(CRC密钥),特别是COM16中的CRC4 逆运算函数的序号。
解不出来这个序号,就无法反汇编。
在文件和源码中是无法看见的,必须动态运行并且解码。
即HotCOMInit()只能运行一次!!!
特别指出,即使有源代码,也无法看到权值发生器数组的真面目。
2.“COM盾”细分为COM16和COM32,其中COM16负责16个函数指针的存放和管理,COM32负责32个函数指针存放和管理。
COM16主要负责COM32指针装载前的运行。
COM32分三次装载,第一次为发行版本,只装载生成UID硬件标识文件的程序,其他程序此时不装载,无法反汇编。注册成功(得到REG注册授权文件),由注册机开放COM32的前32个主要功能,即第二次装载。
HotCOMInit()测试通过后,再在COM32中覆盖装载其他最重要的运行函数指针。
即初始化成功后,才能“看到”有效的运行时函数指针,即第三次装载。
3.COM16内16个ROM函数指针由注册机在动态链接库文件中随机排队,排列位置由12个(4位权值,4位初值和4位出值,即CRC密钥)比特位在动态链接库中存放,具体位置由CRC4的逆运算算出。
故COM16天生反“反汇编”。
4.COM32内32个RAM函数指针由每次运行时15个(5位权值,5位初值和5位出值,即CRC密钥)比特位随机数随机排队,由CRC5的逆运算算出。
而且分四个时间段动态装载,每个函数指针都绑定硬件标识,导致了每个应用程序都不同。
而且每次每个应用程序发布时,都会产生大量的随机数字节,故两个用户应用程序之间无法做比对。(逆向非常需要多个文件的比对找到不同之处,加入大量的随机数字节,就是为了反跟踪和反汇编)
故COM32天生具备“反跟踪”(每次函数指针位置在变化)。
5.反篡改,应用程序采用CRC校验保护,但是COM盾采用“利用CRC初值碰撞保护版权信息不被篡改”,安全强度大大高于(需要CRC逆运算)目前广泛采用(只需要CRC正运算)的CRC校验和比对的方式。
前者只留出了CRC初值的位置,并且无分支,而后者至少有CRC初值和校验和两个可以修改的位置,而且有分支可以修改。
故COM盾的反篡改能力要远远大于后者。
故COM盾天生具备反篡改的能力。
6.反跟踪,COM盾留给逆向者三秒的时间跟踪,只要发现被跟踪时间超过三秒,程序必然发生错误,故调用错误记录日志,并返回错误标志,如果debug修改地址,也无用,因为已经自毁,例如自毁权值发生器数组。
因为COM盾的反篡改,使得在文件中改写分支成为不可能。
故COM盾天生具备反跟踪。
7.反注册。**软件主要有两种,一种是找到分支的“绿色免安装软件”,一种是注册机,它是**界的“天花板”,因为它**了注册算法,即找到了**的密钥。
COM盾由于反篡改的能力,并且注册阶段无分支(无判断和比较),故“绿色免安装”是不可能的,那么只有**注册算法了。
因为算法的安全必须基于密钥的安全,而COM盾的密钥就是本机的唯一硬件标识,故想要得到其硬件标识(COM盾有多种不同的生成方法,因为一种输出格式很容易**),就必须**(读懂)读取硬件标识的程序,由于COM盾具备的各种针对逆向的天生功能,故读取硬件标识程序几乎是不可能的。
8.结论:“COM盾”无法**!!!
即使有源代码也无法看懂,并且需要动态运行,但是有反跟踪。
故结论:即使有源代码也是无法看懂“COM盾”的。
菜农HotPower@163.com 2022.8.31于西安雁塔菜地
|