使用cecil 完成 code injection

1. 安装Mono.Cecil

2. 创建一个测试项目:

添加测试方法:

这个方法的返回值会被动态重写.

 public class Class1
    {
       public static string Test()
       {
           return "ok";
       }
    }

3. code Injection 代码:

var path = @"\XX\bin\Debug\ClassLibrary1.dll";

           var assembly = AssemblyDefinition.ReadAssembly
                (path);
           var type =assembly.MainModule.GetType("ClassLibrary1.Class1");
           var foundMethod = type.GetMethods().First(m => m.Name =="Test");
////清空当前方法指令
           foundMethod.Body.Instructions.Clear();
////获得当前IL的指令执行器
           var worker = foundMethod.Body.GetILProcessor();
////修改返回值
           Instruction ins1 = worker.Create(OpCodes.Ldstr, "will be changed onnext time run");
           Instruction ins2 = worker.Create(OpCodes.Ret);

           worker.Append(ins1);
           worker.Append(ins2);
////保存DLL文件
           assembly.Write(path);

////下次调用就会看到(因为新保存的DLL下次才能加载到)
           Console.WriteLine(Class1.Test());
           Console.Read();

4. 运行查看结果

时间: 2024-12-25 17:28:44

使用cecil 完成 code injection的相关文章

bWAPP----PHP Code Injection

PHP Code Injection 主要代码 1 <div id="main"> 2 3 <h1>PHP Code Injection</h1> 4 5 <p>This is just a test page, reflecting back your <a href="<?php echo($_SERVER["SCRIPT_NAME"]);?>?message=test">

CVE-2009-1151 phpMyadmin Remote Code Injection &amp;&amp; Execution

目录 1. 漏洞描述 2. 漏洞触发条件 3. 漏洞影响范围 4. 漏洞代码分析 5. 防御方法 6. 攻防思考 1. 漏洞描述Insufficient output sanitizing when generating configuration file phpMyAdmin是用PHP编写的工具,用于通过WEB管理MySQL phpMyAdmin的Setup脚本用于生成配置.如果远程攻击者向该脚本提交了特制的POST请求的话,就可能在生成的config.inc.php 配置文件中包含任意PH

Linux Running State Process &quot;.so&quot;、&quot;code&quot; Injection Technology

catalog 0. 引言 1. 基于so文件劫持进行代码注入 2. 基于函数符号表(PLT)中库函数入口地址的修改进行代码注入 3. PLT redirection through shared object injection into a running process 4. 基于ptrace() Linux调试API函数进行代码注入 5. Linux Hotpatch技术 6. 基于软件输入控制漏洞(overflow)进行代码注入 7. 动态共享库的保护技术 0. 引言 从本质上来说,代

[转]Blocking Code Injection on iOS and OS X

Source:http://www.samdmarshall.com/blog/blocking_code_injection_on_ios_and_os_x.html Yesterday I posted (twitter) a set of linker flags that can be set that will block types of code injection on iOS and OS X that came from a little known check inside

CVE: 2014-6271 Bash Specially-crafted Environment Variables Code Injection Vulnerability Analysis

目录 1. 漏洞的起因 2. 漏洞原理分析 3. 漏洞的影响范围 4. 漏洞的POC.测试方法 5. 漏洞的修复Patch 1. 漏洞的起因 这个漏洞的起因源自于Bash(Bourne Again SHell)的ENV指令 http://ss64.com/bash/env.html env: Display, set, or remove environment variables, Run a command in a modified environment. Syntax env [OPT

Fortify漏洞之Dynamic Code Evaluation: Code Injection(动态脚本注入)和 Password Management: Hardcoded Password(密码硬编码)

继续对Fortify的漏洞进行总结,本篇主要针对  Dynamic Code Evaluation: Code Injection(动态脚本注入) 和 Password Management: Hardcoded Password(密码硬编码)  的漏洞进行总结,如下: 1.1.产生原因: 许多现代编程语言都允许动态解析源代码指令.这使得程序员可以执行基于用户输入的动态指令.当程序员错误地认为由用户直接提供的指令仅会执行一些无害的操作时(如对当前的用户对象进行简单的计算或修改用户的状态),就会出

struts2 CVE-2013-2251 S2-016 action、redirect code injection remote command execution

catalog 1. Description 2. Effected Scope 3. Exploit Analysis 4. Principle Of Vulnerability 5. Patch Fix 1. Description struts2中有2个导航标签(action.redirect),后面可以直接跟ongl表达式,比如 1. test.action?action:${exp} 2. test.action?redirect:${exp} Struts2的DefaultActio

Server Side JavaScript Code Injection Attack服务端js注入攻击

今天扫描器误报了这个漏洞,我觉着是误报了. 趁机了解一下, 好像是针对nosql与nodejs的服务端, 我觉着可能是js对于nodejs就是可执行的代码, 也就是任意代码执行, 这么一个攻击. stackoverflow上有一个http://stackoverflow.com/questions/27879131/server-side-javascript-code-injection-attack 巧了,看来我和他用了同款扫描工具,有了同样的问题. 看回答,大意竟是赞同他aspx可能有这个

ECSHOP \admin\edit_languages.php GETSHELL Based On Injection PHP Code Into /languages/zh_cn/user.php

目录 1. 漏洞描述 2. 漏洞触发条件 3. 漏洞影响范围 4. 漏洞代码分析 5. 防御方法 6. 攻防思考 1. 漏洞描述 对于很多CMS网站来说,它们都需要保存很多的网站META信息,最常用的最佳实践是以变量声明的形式保存在.php文件中,在需要的时候直接include进来,PHP File Loader会自动将引入文件中的变量注册到当前的代码空间中,供其他的代码直接引用.例如 1. phpmyadmin使用config/config.inc.php保存phpmyadmin的配置信息:p