基于变量的攻击应对强加密保护绕过讨论

此代码研究是2012年测试研究研究做的,其实原理很简单,就是简单的变量覆盖来绕过一些强保护,不提供代码,仅思路探讨。

如vmp,虽然使用了强加密,但有时候对于变量没有很好的做保护,加密vmp代码全部基于代码段加密,忽略了全局变量,导致简单覆盖check验证,即可通过这一层的验证保护,废话不多说如图:

bd8d78d4c204ec5c51a570ceacae6653

1.选取了一个用户量比较大的视频收费播放软件,此播放软件采用的是vmp1,(2年前),看了看该加密的代码区和算法区都加密了,但有一处漏掉了,在验证此处的流程出了点问题大概分析流程图如下:

8bb15a28978fc955230747729df6d953

1

2

2.具体代码实现:

1.马甲dll进去。

2.强力搜索ABCD值,此处的合法值可以根据界面上的来,以此值作为地址搜索的标准,建立一份合法的ABCD(此前买了一套,已经获取)。

bbc1602cfbef2f62bd1f19f12b474d7d

3.运行测试。

Msimg32.dll

重点代码截图,需要替换的特征值

byte pGlobal[] = {0xD4,0x83,0xA0,0x4F,0x5E,0x94,0x9B,0x4F,0xA3,0x51,0x31,0x88,0xEC,0xCF,0xE5,0xA5,0x22,0xD2,0x27,0x53};
//byte pGlobal[] = {0x18,0x1D,0xF8,0x0B,0xDC,0x70,0xBA,0x32,0x20,0x3D,0x37,0x29,0x22,0x71,0xCF,0xE5,0xC3,0x73,0xA2,0x3E};
byte pFake[] =   {0x18,0x1D,0xF8,0x0B,0xDC,0x70,0xBA,0x32,0x20,0x3D,0x37,0x29,0x22,0x71,0xCF,0xE5,0xC3,0x73,0xA2,0x3E};

配置机器.cfg(读取伪造的 配置文件,主要是ABCD的 特征值)

线程轮询扫描覆盖:

运行测试:

查看界面上的特征码即可。(以上代码片段只为了说明思路)

Tips:代码很简单,其实这种强保护,强加密,很多都是使用不当,而不是保护不强,最近出的问题https,证书使用不当,=== 很多类似的问题。

[本文为原创投稿文 作者:IntYmc 未经授权切勿转载!]