国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

淺談 DotNet 保護中字符串加密的技術

2024-07-21 02:28:20
字體:
來源:轉載
供稿:網友

學習過了名稱混淆,最近又看了一些字符串加密方面的東西。在混淆保護和加密殼中都有字符串加密保護功能。

總體上字符串加密可以分為兩類, 第一類是混淆保護中的字符串加密技術。主要特征是修改代碼執行路徑。大部分混淆保護工具的字符串加密都是這一類。

第二類就是加密殼中的字符串加密技術。這種不用修改il代碼,直接對元數據中的字符串加密。這一類以remotesoft,maxtocode為代表。

先看第一類,加密實現大致如下。

加密前:

messagebox.show("hellow world!");

加密后:

messagebox.show(helper.decode("a34579dfbbeyu346563345/=="));

簡單的說就是將原來使用字符串的地方,將直接使用字符串改為間接使用字符串。在這里保護軟件將字符串 "hellow world!" 進行加密 得到結果 "a34579dfbbeyu346563345/=="。 helper.decode 是保護軟件提供的一個解密函數,它實現將 "a34579dfbbeyu346563345/==" 還原為 "hellow world!" 。

因為是混淆保護,所以我們可以分析得到 decode 的代碼。然后直接用這個函數的代碼寫一個小工具將程序集中所有加密的字符串都還原。生成一個字符串對應表。以方便代碼閱讀和調試。

如果再深入,可以實現自動將字符串還原到原程序集中。

再來看上面例子的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的函數。或者是和流程混淆結合。

,歡迎訪問網頁設計愛好者web開發。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 阿克陶县| 迁安市| 武城县| 确山县| 灵武市| 陇川县| 裕民县| 武城县| 会理县| 溧阳市| 哈尔滨市| 蓬安县| 湘乡市| 柘城县| 四子王旗| 巴彦县| 内丘县| 嘉义县| 石狮市| 托克托县| 合阳县| 精河县| 运城市| 南和县| 资中县| 天峨县| 财经| 黑河市| 北宁市| 巴林右旗| 闽侯县| 连山| 镇坪县| 甘泉县| 房产| 德化县| 随州市| 温泉县| 玉屏| 浮山县| 五河县|