源码混淆相关文章

http://www.21road.net/?action=show&id=591

 

MaxToCode加密过程全解析!

 xToCode大体的执行过程就是这个样子的。可能会略有出入。不过思路应该是一致的,


根据上面的执行过程我们也不难猜出其的加密过程(不一定完全一致,思路差不多)

1.利用ildasm.exe反编译程序,得到IL代码。(调用Win32API:CreateProcess或者WinExec,并加上程序运行参数)
2.去掉签名和注释。
3.分析IL代码(应该是利用正则表达式)
4.判断Assmebly中每个Class是否含有静态构造函数,如果没有加上自己的函数作为该类的静态构造函数,否则将原有的方法改名,添加自己的函数并在函数末尾调用被改名的函数。该函数就是动态解密的函数,这个函数在它附带的DLL中。
5.保存更改好的IL代码。并利用 ILAsm.exe 编译更改的代码。(这时候并没有加密原有函数)
注:MaxToCode中间处理的IL代码被保存在“C:\Documents and Settings\[用户名]\Local Settings\Temp”临时目录里,好像是这个,因为破解太久了记不清了,你可以搜索一下“C:\Documents and Settings\[用户名]”而且在其编译IL完后,好像没有删除更改和没有更改的IL代码。你可以利用windows的搜索上面这个目录后缀为il的文件。应该就是了。
6.打开编译好的文件(DLL或EXE)根据文件的原数据,找到每个类方法的文件偏移量以及大小,读取其内容进行加密,写入文件的其它位置(具体我没有分析,你可以新建一个Section,也可以修改原有的Section,然后更改偏移量。具体做法很多,你可以参考PE文件结构),最后修改原有每个类方法的数据(不知道是不是糊填的,没有研究)并保存该DLL或EXE,并将MaxToCode附带的解密DLL拷贝到程序目录下。
7.加密过程完成。

基本思路是如此,此外还会涉及到别的比如资源等等。

 

 

 http://www.21road.net/?action=show&id=589

 

MaxtoCode对.Net程序加密的原理及解密探讨 

 

你可能感兴趣的:(源码)