.net流程混淆简单示例
主要就是利用了ilasm对程序不进行优化(汇编程序编译时不会对程序做优化处理)
用过Reflector的都知道,这是一个功能非常强大的反编译工具,几乎能够将你的.net代码完全还原,并且能够立即重新
编译运行,本文提供了一个方法让Reflector的反编译不能正常工作,据研究,目前很多代码混淆工具已经使用了该技术,
为了便于理解,我将该方法姑且叫做代码顺序扰乱技术。
下面来研究一个具体的例子:
1。StrConv.cs源代码如下:
using System; public class StrTool { public static void Main(String[] argv) { String s1 = "\ud7d1\udec3\ue5b9\ueca6"; int num = 0x4308d77e; Console.WriteLine(conv(s1, num)); } public static string conv(string str, int num) { char[] chArray1 = str.ToCharArray(); for (int num1 = 0; num1 < chArray1.Length; num1++) { chArray1[num1] = (char) (chArray1[num1] - num); num += 0x6fd; } return new string(chArray1); } }
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步