某壳对.Net程序加密的原理及解密探讨五(元数据还原以及IL解码的改进)

简介: 前一回讲了 IL字节码的解码问题,并提供了一个小工具,但解码的效果和 ildasm还是差很多,给阅读也带来了一些困难。还有就是有些文件选择文件后解码会出错,这是因为maxtocode对文件里面的元数据进行了随机加密。

前一回讲了 IL字节码的解码问题,并提供了一个小工具,但解码的效果和 ildasm还是差很多,给阅读也带来了一些困难。还有就是有些文件选择文件后解码会出错,这是因为maxtocode对文件里面的元数据进行了随机加密。这一回主要解决元数据的还原以及对解码进行改进。


题外话:国庆后maxtocode推出了3.12版,称对.net formwork 2.0获取msil代码的方式进行了限制。即在不作任何改进的情况下,我们前面介绍的方法将无法取得IL字节码。dreaman已经找到了取消这个限制的方法了,不久tankaiha 就会整合完成新的 injectReflector 。就是前一回贴的第二张图片,该工具已经在看雪发布了。

言归正卷,maxtocode对net程序加密时还能对元数据进行随机部分加密,即破坏静态元数据的完整性。直接磁盘文件里面读取的元数据是不完全正确的,所以导致了解码程序取元数据信息时出错。解码程序现在已经更新处理了这样的异常。同时增加了元数据还原的功能。
怎么还原?这个比il字节码要容易,根据元数据的特性,程序运行后在内存中必然有完整的元数据,我们所要做的就是从内存中直接dump出来就ok了。

元数据在内存中的位置可以从PE的CLI Header中取得,CLI Header的位置有可以从PE可选头部中取得。
首先参考PE文件结构取得PE文件的可选头部。在这个结构中有一个成员是 DataDirectory 数组。
其中DataDirectory[14] 就是记录的 CLI Header的偏移和大小。
在CLI Header结构:
 struct  _CLIHeader
{
 DWORD cbSize;//size of 72
 INT16 nMajor;//2
 INT16 nMinor;//0
 DWORD mdRVA; //元数据在内存中的便宜量
 DWORD mdSize;//元数据的大小
 DWORD dwFlags;
 DWORD tkEntry; //mdtMethodDef
 INT64 Resources;
 INT64 SrongNameSig;
 INT64 CodeManagerTable;//0
 INT64 VTableFixedup;
 INT64 ExprotTableJump;//0
 INT64 ManagedNativeHeader;//0}
在这个结构里面就能找到元数据的偏移量和大小。

dump的功能已经增加到新版的ilbytedecoder中了。

完成界面如下:



这个界面上上一回的界面,解码的是同一段IL字节码。
效果已经类似ildasm的了,基本上可阅读了。
同时提供了选择 Raw MetaData的进行解码的功能,这样就不用担心因为
原文件的元数据被破坏导致解码不正常了。
程序新加的dump功能可以将内存中的元数据保存为 Raw MetaData文件中。
下载地址:http://www.bbsftp.com/temp/ILByteDecoderV1.5.rar

另附injectReflector效果图:


该工具可在看雪论坛下载。

目录
相关文章
|
1天前
|
Linux C# iOS开发
如何用 WinDbg 调试Linux上的 .NET程序
【7月更文挑战第13天】 1. `dotnet-dump`: Collects process dumps with `dotnet-dump collect -p <process_id>`. 2. `lldb`: Debugs Mono runtime apps on macOS/Linux. 3. **Visual Studio Code**: Remotely debugs .NET via the C# extension. 4. **JetBrains Rider**: Supports remote debugging of .NET on Linux.
|
29天前
|
存储 安全 C#
技术心得记录:强命名的延迟与关联在.net程序集保护中的作用及其逆向方法
技术心得记录:强命名的延迟与关联在.net程序集保护中的作用及其逆向方法
|
29天前
|
开发框架 前端开发 JavaScript
程序与技术分享:ASP.NET发展史(【译】)
程序与技术分享:ASP.NET发展史(【译】)
19 0
|
1月前
|
网络协议
技术好文:Smark.Net实现简单聊天程序
技术好文:Smark.Net实现简单聊天程序
15 0
|
1月前
|
自然语言处理 C# 图形学
​一款开源的.NET程序集反编译、编辑和调试神器
本文介绍了.NET反编译和调试工具dnSpyEx的使用方法。dnSpyEx是dnSpy的非官方Fork版本,支持.NET Framework、.NET Core和Unity程序集的调试和编辑,具有多种语言界面。主要功能包括:浅色、蓝色和深色主题,调试支持,代码编辑以及多语言支持。用户可以从GitHub下载并直接运行dnSpyEx,无需安装。通过创建测试项目,编译成dll文件,然后使用dnSpyEx进行调试和编辑程序集中的代码和IL指令。此外,文章还提供了项目源码地址和相关优秀项目的链接。
|
1天前
|
SQL 安全 网络安全
网络安全与信息安全:漏洞、加密技术及安全意识的探讨
在数字化时代的浪潮下,网络安全和信息安全成为了全球关注的焦点。本文将深入剖析网络漏洞的成因及其对系统安全性的影响,探讨加密技术在保障数据安全中的关键作用,并强调提升个人和企业的安全意识的必要性。文章旨在为读者提供一个全面的视角,了解网络安全的重要性,以及如何通过技术和意识的提高来防范潜在的网络威胁。
|
2天前
|
存储 安全 算法
网络安全的隐形盾牌:漏洞、加密与安全意识
【7月更文挑战第25天】在数字时代的不断演进中,网络安全已成为保护个人隐私和企业资产的关键防线。本文将深入探讨网络安全的三大支柱:网络漏洞、加密技术和安全意识。我们将分析常见的网络漏洞类型,揭示黑客如何利用这些漏洞进行攻击,并讨论防御策略。同时,文章将介绍加密技术的原理,包括对称加密、非对称加密和哈希算法,并阐述它们在保护数据传输和存储中的应用。最后,我们将强调培养良好的安全意识的重要性,并提供实用的建议来提高个人和组织的安全防护能力。通过这篇文章,读者将获得关于网络安全的全面知识,以及如何实施有效的安全措施来抵御网络威胁。
|
2天前
|
SQL 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
【7月更文挑战第25天】在信息技术日新月异的今天,网络安全和信息安全成为了我们不得不面对的重要问题。本文将从网络安全漏洞、加密技术以及安全意识三个方面,对网络安全与信息安全进行深入探讨。我们将分析常见的网络安全漏洞,介绍加密技术的基本原理和应用,以及强调安全意识的重要性。希望通过这篇文章,能够帮助读者更好地理解和应对网络安全与信息安全的挑战。
13 5
|
21小时前
|
机器学习/深度学习 人工智能 安全
数字堡垒之下:网络安全漏洞、加密技术与安全意识的现代博弈
在数字化浪潮中,网络安全成为维护信息资产的重要防线。本文深入探讨了网络安全的薄弱环节—漏洞的存在与利用,分析了加密技术在数据保护中的关键作用,并强调了提升个人与企业的安全意识的必要性。通过具体案例和技术解析,旨在为读者提供一套网络安全的知识框架和实践指南,以期在日益复杂的网络环境中构筑起坚固的数字堡垒。
|
19小时前
|
存储 安全 算法
网络安全的盾牌:漏洞、加密与意识的三位一体
【7月更文挑战第26天】在数字时代的浪潮中,网络安全成为维护信息完整性和私密性的关键防线。本文将深入探讨网络安全的三大支柱:网络漏洞、加密技术以及安全意识。我们将分析这些支柱如何相互支撑,共同构建起防御体系,并讨论它们在现代网络环境中面临的挑战及解决方案。
9 2