.NETNet保护中字符串加密技术
点击次数:61 次 发布日期:2008-11-06 08:11:58 作者:源代码网
|
源代码网整理以下 学习过了名称混淆,最近又看了一些字符串加密方面的东西。 源代码网整理以下 如果再深入,可以实现自动将字符串还原到原程序集中。 再来看上面例子的IL代码。 加密前: ldstr "Hellow World!" call MessageBox.Show(string) 加密后: ldstr "A34579dfbbeyu346563345/==" call string Helper.Decode(string) call MessageBox.Show(string) 怎么还原,其实很简单,我们已经知道了decode的代码,而且已经能实现字符串的解密了。得到了字符串的对应表。 直接将 ldstr "A34579dfbbeyu346563345/==" call string Helper.Decode(string) 替换为 ldstr "Hellow World" 即可。写一个小工具使用正则表达式搜索替换就可以了。 第二类字符串加密保护: 实现就是直接对元数据中的String流进行加密。 这类保护有一个缺陷,程序运行后 元数据中的String流会解密后在内存中完整还原。在我前面的文章里面有介绍元数据的dump。这里就不重复罗嗦了。 对于第一类字符串加密保护,还有其它的形式,如 Helper.Decode这个函数可以是一个native的函数。 或者是和流程混淆结合。 源代码网推荐 源代码网供稿. |
