Assembly Manipulation and C# / VB.NET Code Injection
Latest Releases最新发布You can always get the latest Introduction介绍Reflector and JustDecompile are great tools for doing an in-depth examination of various types of assemblies and also for disassembling IL code towards a supported .NET language. 反射和JustDecompile是伟大的工具,做一个深入的研究,也为各类组件拆卸IL代码朝着支持。NET语言。 However, they are unable to modify either the structure or the IL code of assemblies. Reflexil allows such modifications by using the powerfulMono.Cecil library written by Jb EVAIN . Demo Application演示应用Let's use a very simple application that is able to add two numbers:让我们用一个非常简单的应用程序,能够将两个数字相加: using System; 使用系统; using System.Windows.Forms; 使用 System.Windows.Forms; namespace ReflexilDemo 命名空间 ReflexilDemo中 { { public partial class DemoForm : Form 公共部分类 DemoForm:表格 { { public DemoForm() 公共 DemoForm() { { InitializeComponent();在InitializeComponent(); } } private void ComputeAndDisplay( decimal x, decimal y) 私人的无效 ComputeAndDisplay( 十进制 X, 进制y) { { MessageBox.Show( String .Format( " {0}+{1}={2}" , x, y, x + y)); MessageBox.Show( 字符串格式(“{0} + {1} = {2}”,X,Y,X + Y)); } } private void DisplayResultButton_Click( object sender, EventArgs e) 私人的无效 DisplayResultButton_Click( 对象发件人,EventArgs五) { { ComputeAndDisplay(LeftOperand.Value, RightOperand.Value); ComputeAndDisplay(LeftOperand.Value,RightOperand.Value); } } } } } } Using Instruction Editor使用说明编辑器Using the instruction editor, let's update the Then we have to update the "call" instruction to use the overloaded method It is time to save our work and to test our patched assembly:现在是时候来拯救我们的工作,并测试我们的补丁装配: Our assembly is now using the overloaded method and the suitable parameter:现在我们的组件使用重载的方法和合适的参数: Instruction Editor Features指令编辑器功能The instruction editor supports all opcodes defined in
In a quite comprehensible way, the Using C#/VB.NET Code Injection使用C#/ VB.NET代码注入You can choose your preferred injection language and input/display bases (binary, octal, decimal, and hexadecimal) with the configuration form:你可以选择你首选的注射语言和输入/显示基地(二进制,八进制,十进制和十六进制)的配置形式: Let's use the "Replace all with code" feature on the body of the A compile window enables us to view the resulting IL code.编译窗口,使我们能够查看生成的IL代码。 A basic support for intellisense/insight is provided:提供一个基本的支持的intellisense /有识之士的是: We can do it again with VB.NET language.我们可以做到这一点再次用VB.NET语言。Note that in this simple case, we obtain an identical IL code (it is not always the case):请注意,在这个简单的例子中,我们得到一个相同的IL代码(它并不总是如此): Let's save and test our patched assembly:让的保存和测试我们的补丁装配: C#/VB.NET Code Injection Features C#/ VB.NET代码注入特点The code is compiled using Method Attributes Editor方法属性编辑器You can easily update a method signature or change his visibility scope.您可以轻松地更新方法签名或改变他的可视范围。 You are also able to change the return type:你也可以改变返回类型: Method parameters (and variables) are also editable.方法参数(变量)都还可以。Reflexil can load symbols (MDB and PDB files are supported) to display original variable names: Reflexil的可以加载符号(MDB和PDB文件都支持),以显示原始变量名: Exception Handlers异常处理
Type Attributes Editor类型属性编辑器Like methods, you can change any type visibility scope.方法一样,您可以更改任何类型的可见范围。 So you can expose a previously Member manipulation会员操作
Smart injection : injecting a new property will generate a field, getter/setter methods and IL code.智能注入:注入了新的属性将产生一个字段,getter / setter方法??和IL代码。 Resources Editor资源编辑器You can inject and alter embedded resources, linked resources and assembly linked resources.你可以注入和改变嵌入的资源,链接资源和装配资源链接。 A complete hex editor is provided to update, export or import files.一个完整的十六进制编辑器提供更新,导出或导入文件。 Custom attributes Editor自定义属性编辑器Custom attributes are fully supported.完全支持自定义属性。 Assembly and Assembly Reference Editor大会和大会参考编辑With the assembly editor, you can use a different entry point:装配编辑器,你可以使用不同的入口点: You can also update all information regarding identification: version, public key, name and culture.您还可以更新有关的所有信息识别版本,公钥,名称和文化。 Note that you can also alter any referenced assembly so you can use a different version:请注意,您还可以改变任何引用的程序集,所以你可以使用不同的版本: Module Editor模块编辑器With the module editor, you can simply change the kind of your application (transform an executable assembly to a DLL library for instance):随着模块的编辑器,你可以简单地改变你的应用程序(例如可执行程序集转换到一个DLL库)的那种: Signed Assemblies Support签名的程序集支持When saving a signed assembly, the resulting assembly is placed in the "delay signed" state.
Deobfuscation Support反混淆技术支持
Babel NET, CliSecure, CodeFort, CodeVeil, CodeWall, CryptoObfuscator, DeepSea, Dotfuscator, dotNET Reactor, Eazfuscator NET, Goliath NET, ILProtector, MaxtoCode, MPRESS, Rummage, Skater NET, SmartAssembly, Spices Net and Xenocode are supported.通天NET,CliSecure,CodeFort,CodeVeil,CodeWall,CryptoObfuscator,深海,Dotfuscator的,dotNET的反应堆,NET Eazfuscator,巨人网,ILProtector,MaxtoCode,MPRESS,临检,溜冰NET,SmartAssembly,香料网和Xenocode的支持。 Assembly Verifier大会验证With the assembly verifier (using peverify.exe from .NET SDK), you can determine whether the IL code and associated metadata meet type safety requirements.装配验证(使用peverify.exe。NET SDK),你可以决定的IL代码和相关元数据是否满足类型安全要求。 Conclusion结论
Change Log更改日志//////////////////////////////////////////////////////////////////////////////// / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / // v1.6 - 17/01/2013 /////////////////////////////////////////////////////////// / / V1.6 - 17/01/2013 / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / //////////////////////////////////////////////////////////////////////////////// / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / news:新闻: - Optional ILMerged version to prevent unexpected Mono.Cecil assemblies. - 可选ILMerged的版本,以防止意想不到的Mono.Cecil组件。 upgrades:升级: - de4dot 1.9.0 update. - de4dot 1.9.0更新。 New deobfuscation support for CodeFort, CodeWall,新的反混淆技术支持为CodeFort CodeWall ILProtector, MPRESS, Rummage. ILProtector,临检MPRESS。 - Mono.Cecil 0.9.5.4 update. - Mono.Cecil 0.9.5.4更新。 - ARM, WindowsRuntime and Module characteristics support. - ARM,WindowsRuntime和模块特性的支持。 bugfixes:错误修正: - Check customized Mono.Cecil assembly - 检查的定制Mono.Cecil总成 //////////////////////////////////////////////////////////////////////////////// / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / // v1.5 - 16/04/2012 /////////////////////////////////////////////////////////// / / V1.5 - 16/04/2012 / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / //////////////////////////////////////////////////////////////////////////////// / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / news:新闻: - deobfuscation support for Babel NET, CliSecure, CodeVeil, CryptoObfuscator - 支持为通天NET,CliSecure,CodeVeil,CryptoObfuscator反混淆 DeepSea, Dotfuscator, dotNET Reactor, Eazfuscator NET, Goliath NET,深海,Dotfuscator的dotNET的的反应堆,Eazfuscator NET,巨人NET, MaxtoCode, Skater NET, SmartAssembly, Spices Net and Xenocode. MaxtoCode,溜冰NET,SmartAssembly,香料净Xenocode的。 Thanks to de4dot by 0xd4d!感谢de4dot由0xd4d! upgrades:升级: - Mono.Cecil update. - 更新Mono.Cecil。 bugfixes:错误修正: - bugfix for "register for verification skipping" and delay signed assembly. - 修正为“注册验证跳过”延迟签名的程序集。 - bugfix for "resign" and delay signed assembly. - 修正错误的“辞职”,并拖延签署的组件。 //////////////////////////////////////////////////////////////////////////////// / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / // v1.4 - 27/01/2012 /////////////////////////////////////////////////////////// / / V1.4 - 27/01/2012 / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / //////////////////////////////////////////////////////////////////////////////// / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / news:新闻: - custom attributes support. - 自定义属性的支持。 - assembly/module renaming. - 组件/模块命名。 upgrades:升级: - search the type tree with a regex like ^SerializableAttribute$. - 搜索类型树这样一个正则表达式^ SerializableAttribute $。 bugfixes:错误修正: - fixed drag&drop issues with column headers. - 固定列标题拖放问题。 - fixed broken ExceptionHandler editor after Mono.Cecil 0.9.x migration. - 固定破碎的ExceptionHandler编辑后Mono.Cecil 0.9.x版本迁移。 - fixed broken Variable editor after Mono.Cecil 0.9.x migration. - 固定破碎变量编辑后Mono.Cecil 0.9.x版本迁移。 - fixed assembly resolution issues, thanks to Douglas Drinka. - 固定大会决议问题,感谢道格拉斯Drinka。 //////////////////////////////////////////////////////////////////////////////// / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / // v1.3 - 24/08/2011 /////////////////////////////////////////////////////////// / / V1.3 - 24/08/2011 / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / //////////////////////////////////////////////////////////////////////////////// / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / news:新闻: - resource support (injection and alteration): Embedded resources, linked - 资源支持(注入和改建):嵌入式资源链接 resources and assembly linked resources.资源和集会链接资源。 Complete hex editor to update,完整的十六进制编辑器更新, export or import files.导出或导入文件。 upgrades:升级: - works both on Reflector 6.x and Reflector 7.x. - 工程上反射6.x和反射7.x版本 bugfixes:错误修正: - fixed assembly loading errors when using symbols and pdb file is not - 固定程序集加载错误时使用的符号和pdb文件 available.可用。 //////////////////////////////////////////////////////////////////////////////// / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / // v1.2 - 07/03/2011 /////////////////////////////////////////////////////////// / / V1.2 - 07/03/2011 / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / //////////////////////////////////////////////////////////////////////////////// / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / news:新闻: - Reflexil is now MIT/X11 licensed - Reflexil的是现在MIT/X11行货 - technical update: using customized Mono.Cecil/Light 0.9.x - 技术更新:使用的定制Mono.Cecil /轻0.9.x版本 - technical update: using customized ICSharpCode.SharpDevelop.Dom.dll - 技术更新:使用自定义ICSharpCode.SharpDevelop.Dom.dll - technical update: using customized ICSharpCode.TextEditor.dll - 技术更新:使用自定义ICSharpCode.TextEditor.dll - technical update: using customized ICSharpCode.NRefactory.dll - 技术更新:使用定制ICSharpCode.NRefactory.dll upgrades:升级: - moved "Kind" and "Target Runtime" from Assembly to Module handler - 提出“好心肠”,“目标运行时模块处理程序”从大会 - better support for pdb and mdb files and strong name assemblies - 更好地支持PDB和mdb文件和强名称组件 - complete support for PE32+ assemblies - PE32 +组件的完整支持 - less memory consumption - 更少的内存消耗 - lazy loading of every metadata element - 懒加载的每一个元数据元素 - speed and optimizations - 速度和优化 - you can enable/disable cache settings for intellisense - 您可以启用/禁用缓存设置智能感知 - injection/compilation with version control: v2.0, v3.5, v4.0 - 注塑/编译版本控制:V2.0,V3.5,V4.0 - new injection import process - 注入新进口过程 - added architecture support (I386, AMD64, IA64) in module definition - 增值模块定义架构的支持(I386,IA64,AMD64) - new attributes grouping - 新属性分组 bugfixes:错误修正: - fixed PointerType/ArrayType/ReferenceType Cecil/Reflector code matching - 固定PointerType /数组类型/ ReferenceType的的塞西尔/反射代码匹配 (No data shown for methods with "ref" array parameters) (没有数据显示的方法与“裁判”数组参数) - fixed crashes when attempting to replace all with code - 固定崩溃时尝试更换所有的代码 (Could not find a part of the path) (找不到路径的一部分) - fixed type import when updating field, method, property or event - 更新字段,方法,属性或事件时,固定式进口 - fixed extra random assembly reference when injecting/compiling - 固定的额外随机装配时参考注入/编译 //////////////////////////////////////////////////////////////////////////////// / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / // v1.1 - 28/04/2010 /////////////////////////////////////////////////////////// / / V1.1 - 28/04/2010 / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / //////////////////////////////////////////////////////////////////////////////// / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / news:新闻: - rename, delete or inject class/interface/struct/enum/event/field/method/ - 重命名,删除或注射类/接口/结构/枚举/事件/场/方法/ constructor/property/assembly reference构造函数/属性/程序集的引用 - smart injection : injecting a new property will generate a field, - 智能注射:注射会产生一个新的属性字段, getter/setter methods and IL code.的getter / setter方法??和IL代码。 - open architecture: Reflexil is now able to be used with Reflector, - 开放式体系结构:Reflexil的是现在能够被用来与反射, Cecil.Studio or anything able to convert an object model to Mono.Cecil Cecil.Studio或任何能够转换对象模型来Mono.Cecil的 - property editor (attributes, type, constant) - 属性编辑器(属性,类型,常量) - field editor (attributes, type, constant) - 字段编辑器(属性,类型,恒) - event editor (attributes, type) - 事件编辑器(属性,类型) - assembly verifier (using peverify.exe from .NET SDK) - 装配验证(使用peverify.exe。NET SDK) upgrades:升级: - interfaces and base type selection for type editor - 接口和基类型编辑器类型的选择 - Reflector/Mono.Cecil method matching - 反射/ Mono.Cecil的方法匹配 bugfixes:错误修正: - fixed framework version detection for Mono, initial patch by Robin Herbots - 固定的框架由罗宾·贺伯特为单声道,初始补丁版本检测 - fixed constant handling with parameters - 固定不变的参数处理 - fixed InitLocals initialization for method bodies - 固定InitLocals的初始化方法体 - fixed branch to self causes stack overflow, patch by Brien Sourceforge - 固定分支自我导致堆栈溢出,奥布莱恩Sourceforge上的补丁 - fixed crash with unsupported assemblies - 固定与不支持的组件崩溃 - fixed grid refresh for method overrides - 定格刷新方法重写 - fixed offset compute after code injection - 固定偏移计算代码注入后 - fixed code injection/type matching with nested types - 固定代码注入/嵌套类型的类型匹配 - fixed const handling with parameters, fields and properties - 固定常量处理参数,字段和属性 //////////////////////////////////////////////////////////////////////////////// / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / // v1.0 - 23/10/2009 /////////////////////////////////////////////////////////// / / 1.0 - 23/10/2009 / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / //////////////////////////////////////////////////////////////////////////////// / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / news:新闻: - proper configuration for code injection with .NET 3.5 compiled files - 正确的配置代码注入。NET 3.5编译的文件 - using up to date Mono.Cecil.Pdb (now fully managed) - 使用最多日期Mono.Cecil.Pdb的(现已全面管理) bugfixes:错误修正: - fixed ArgumentOutOfRange with some compile errors (replace all with code) - 固定ArgumentOutOfRange这样的一些编译错误(取代所有的代码) - fixed error CS0006: Metadata file '...' - 固定错误CS0006:元数据文件'......“ could not be found无法找到 //////////////////////////////////////////////////////////////////////////////// / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / // v0.9.1 - 30/04/2009 ///////////////////////////////////////////////////////// / / v0.9.1 - 30/04/2009 / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / //////////////////////////////////////////////////////////////////////////////// / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / news:新闻: - check if .NET Framework v3.5 is installed - 检查是否安装NET框架V3.5 bugfixes:错误修正: - some debug code was left, causing errors to users without "c:" drive. - 留下一些调试代码,导致用户没有错误“C:”驱动器。 misc:杂项: - source code cleanup - 源代码清理 //////////////////////////////////////////////////////////////////////////////// / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / // v0.9 - 28/01/2009 /////////////////////////////////////////////////////////// / / V0.9 - 28/01/2009 / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / //////////////////////////////////////////////////////////////////////////////// / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / news:新闻: - instruction offset column - 指令偏移列 - code editor intellisense - 代码编辑器的智能感知 - region folding - 区域折叠 - insight window - 洞察力窗口 bugfixes:错误修正: - assembly browser was only listening to mouse events - 组装浏览器只是听鼠标事件 - fix combobox rendering errors without visual themes - 修复组合框渲染错误,而视觉主题 misc:杂项: - source code cleanup - 源代码清理 //////////////////////////////////////////////////////////////////////////////// / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / // v0.8 - 25/05/2008 /////////////////////////////////////////////////////////// / / V0.8 - 25/05/2008 / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / //////////////////////////////////////////////////////////////////////////////// / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / news:新闻: - assembly reference editor (name, version, public key, token, hash) - 程序集的引用编辑器(名称,版本,公钥令牌,哈希) - assembly name editor (entry point, assembly kind, framework version, name, - 组件名称编辑器(入口点,装配类,框架版本,名称, version, public key, token)版本,公钥令牌) upgrades:升级: - 'unsafe' code generation support - “不安全”的代码生成支持 - reflector item handler - 反射项处理程序 bugfixes:错误修正: - field reference fix after code injection - 字段引用代码注入后修复 - forms tabindexes - 形式tabindexes的 //////////////////////////////////////////////////////////////////////////////// / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / // v0.7 - 17/01/2008 /////////////////////////////////////////////////////////// / / V0.7 - 17/01/2008 / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / //////////////////////////////////////////////////////////////////////////////// / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / news:新闻: - type attributes editor (sealed, semantic, layout, string format, - 类型的属性编辑器(密封,语义,布局,字符串格式, visibility, ...)能见度,...) - strong name remover - 强劲名卸妆 upgrades:升级: - sn.exe registry keys with framework 3.5 - SN.EXE的框架3.5注册表键 - C# / VB.NET code generator |