前言
(圖片來源網(wǎng)絡(luò),侵刪)
.Net作為一個托管的程序aot,它的破解/反編譯有幾種方法呢aot?本篇來盤點下。
概括
1.MSIL的破解
Dnspy/ILspy/Reflector/DotPeek
這種是最常見的aot,把托管DLL拖入進去,然后查看其源碼或者MSIL,進行修改。也是比較簡單的一種,不過如果對程序進行aot了加密,則反編譯出來大量無用的混淆的代碼,這三個里面Reflector收費,前兩個免費。低層次的破解/反編譯。
2.Roslyn/CLR/JIT破解
Roslyn這種是在生成托管DLL之前,干涉托管DLL的生成過程,通過篡改了的托管DLL,來生成篡改的機器碼。因為機器碼是根據(jù)托管DLL而來。而修改CLR的內(nèi)存模型,內(nèi)存布局可以更改機器碼生成的結(jié)果,JIT則是根據(jù)MSIL來生成機器碼,修改JIT的表象生成也即是IR也可以修改或者破解.Net程序生成的結(jié)果。
3.Obj/Exe破解
這種適用于,AOT的本地機器碼,本地機器碼是預(yù)編譯。它分為兩步,目標文件和可執(zhí)行文件。目標文件可以通過對照16進制編輯器和dumpbin tools進行修改和破解,而Exe則可以直接修改PE文件,來篡改結(jié)果。
以上三種方式,基本上可以破解/反編譯的方方面面。 只做技術(shù)研究,其它用途本人概不負責。
結(jié)尾 作者aot:江湖評談