PostSharp的反编译分析

前段时间做一个权限系统,在考虑日志、异常接管、事务、缓存等等一些横向组件的架构分析,自然就想用AOP技术实现;这两天又重 新学习研究了PostSharp的架构与实现思想,将其融入现有框架;

由于采用 MSIL Injection,因此静态代码注入的执行效率要高于使用 Reflection Emit。 使用 MSBuild Task,使得开发人员可以像 使用编译器内置 Attribute 那样使用 AOP。 可以拦截任意方法,而 Dynamic Proxy 方式的 AOP 往往采取继承方式来拦截 Virtual 方法 。 拥有更多的控制权。包括中断执行流程,修改参数和返回值等等。 还可以拦截 Field Access、Exception 等操作。 无需将对象创建 代码改成 "new proxy()",更加透明。 可以使用通配符进行多重拦截匹配。 静态注入带来的问题更多的是注入代码的质量和调试复杂度 。 另外有一老外的Using AOP and PostSharp to Enhance Your CodeAB两部分,相当精彩,本文就是在参考这两篇好文的基础上做的。

我们假设有这么个场景,其实这也是实际业务中很常见的处理方式:有一定单管理模块,具备新增、删除两功能,我们在新增删除的时 候必须校验权限,在删除的时候还必须记录日志,出现异常了还必须捕捉并记录异常;

按以前的写法我们可能很麻烦,我们要如此这般的写:

01 public class XOrders
02     {
03         public bool Add(string id, string orderName)
04         {
05             try
06             {
07                 if (User.AddEnable)
08                 {
09                     //TODO:新增订单的实现
10                     Console.WriteLine("正在执行新增订单方法的操作,回车继续……");
11                     Console.ReadLine();
12                     Console.WriteLine("您添加订单成功:编号:{0},名称:{1}", id,  orderName);
13                     return true;
14                 }
15                 else
16                 {
17                     //
18                 }
19             }
20             catch (Exception)
21             {
22                 //TODO:记录异常的实现
23                 throw;
24             }
25
26             return true;
27
28         }
29
30         public bool Delete(string id)
31         {
32             try
33             {
34                 if (User.DeleteEnable)
35                 {
36                     //TODO:删除订单的实现
37                     Console.WriteLine("您删除订单成功:编号:{0}", id);
38                 }
39                 else
40                 {
41                     //
42                 }
43
44             }
45             catch (Exception)
46             {
47                 //TODO:记录异常的实现
48                 throw;
49             }
50
51             return true;
52         }

时间: 2024-10-24 16:54:04

PostSharp的反编译分析的相关文章

Android逆向分析(反编译)工具ded的使用

今天使用了ded做逆向分析,瞬间比Apktool高大上了,功能太强大了,不过还有升级版,明天研究.吼吼~ 详细内容可以参考这篇论文:A Study of Android Application Security 还有http://siis.cse.psu.edu/ded/index.html 1.安装ded 下载链接:http://siis.cse.psu.edu/ded/downloads/linux/ded-0.7.1 首先下载ded用来重定向 dex .apk.或者是class文件 为了使

安卓程序逆向分析,反编译,希望得到准确无误的源码

问题描述 安卓程序逆向分析,反编译,希望得到准确无误的源码 请教大神, 我在安卓市场下一个app,但是我想要反编译,添加功能,并重新编译. 目前我的做法是 用eclipse新建工程,将jd-gui查看的源码copy过来,修改错误,直到无误,正在进行中,不知能否成功.请问有什么办法,好急! 解决方案 你这样是不行的,逆向修改改动很小的,而且你不能修改源码,你可以学习源码. 解决方案二: 可以修改,只是修改的地方很小,你需要修改汇编代码,你不能导入Eclipse中.所以你能修改的很少,毕竟这东西看起

AutoIt脚本的反编译和代码格式化问题分析_autoit

最近集中冒出一波AutoIt的恶意脚本来,也就多看了几个这类的样本.AutoIt脚本是以".au3"为扩展名的明文脚本,但病毒作者自然不会把明文的脚本放出来.所以自然用到了AutoIt自带的这个Au2Exe的工具: 可以看到AutoIt允许用户将au3的明文脚本编译成exe文件或者a3x文件.exe文件自不必赘述,就是我们平时熟悉的PE文件,但如果编译成exe文件,则失去了AutoIt脚本在恶意程序领域的优势(懂的自然懂,不细说),所以目前捕获的大多数恶意样本都是将脚本编译成a3x文件

常见电子书格式及其反编译思路分析第1/3页_其它

声明:本文可能夹杂大量技术术语,如果您对此感到不快,请勿继续阅读.   本文仅仅讨论一些思路,不会提供相关源代码,最多也只提供源代码网站的链接.如果您对此有所不满,请勿继续阅读.  本文仅仅从技术角度讨论电子书反编译问题,请勿将之用于侵犯版权等等非法目的,或损害他人利益.如果您对此感到失望,请勿继续阅读.   本文版权归作者所有,转载前请先征得作者书面同意.   1. 前言  2. 常见电子书格式及其反编译思路     2.1 PDF格式     2.2 基于IE内核的电子书         2

【转】一个不错的eclipse反编译插件

在CSDN论坛上看到的一个不错的eclipse反编译插件,感觉看起来不错的样子,因而记下,原网址是:http://topic.csdn.net/u/20121030/14/CDE52930-BAF2-4F88-B751-3797A7EB3C44.html 闲暇之余,写了一个Eclipse下的Java反编译插件:Eclipse Class Decompiler,整合了目前最好的2个Java反编译工具Jad和JD-Core,并且和Eclipse Class Viewer无缝集成,能够很方便的使用本插

关于扰乱器与反编译 (转载)

编译 以下摘录于Delphibbs中Dr.yysun 的回答,希望对你有帮助 用 Java 编程的人, 如果不想公开源程序, 就得与反编译器作斗争,必须使用反编译器,先看看别人将会如何看你的程序,再看看Obfuscators(扰乱器)的效果. JAD 是 Windows 下效果极佳的反编译器 http://www.geocities.com/SiliconValley/Bridge/8617/jad.html围绕这个引擎, 有很多图形界面, 例如 FrontEnd. (我常用) JODE 是免费

谈谈JAVA程序的反编译

编译|程序   谈谈JAVA程序的反编译  如今JAVA语言在全世界范围正如火如荼般的流行,它广范地应用在INTERNET的数据库.多媒体.CGI.及动态网页的制作方面.1999年在美国对JAVA程序员的需求量首次超过C++! 最近分析一些JAVA程序,对JAVA的反编译进行了一番了解,下面将我所了解的情况作以下介绍,希望对JAVA爱好者有所帮助. JAVA是采用一种称做"字节编码"的程序结构,分为小程序(嵌入到HTML文件中)和应用程序(直接在命令状态下执行)两种类型.无论哪种结构,

人肉反编译使用yield关键字的方法

我认为这是一个真命题:"没有用.NET Reflector反编译并阅读过代码的程序员不是专业的.NET程序 员"..NET Reflector强大的地方就在于可以把IL代码反编译成可读性颇高的高级语言代码,并且能够支 持相当多的"模式",根据这些模式它可以在一定程度上把某些语法糖给还原,甚至可以支持简单的 Lambda表达式和LINQ.只可惜,.NET Reflector还是无法做到极致,某些情况下生成的代码还是无法还原 到易于理解--yield关键字便是这样一个典

Android反编译看看手Q口令红包的实现原理_Android

首篇作为开始,先讲讲简单的反编译.反编译通常有几种目的:互相学习.借来用用.嘿嘿(干你,又分为小干干类似微信红包,和大干干改别人的apk帮他上架). 因为没带kvm回来,mbpr屏幕太小,所以下文环境为windows. 一.反编译 让我们从实战开始,先实践一下怎么去反编译一个apk,看看某些功能的实现.毕竟没有实践的原理都是耍流氓. 这里我们保留互相学习的心态,所以是友善的第一种目的,嘻嘻. 1.准备 工具 Apktool jadx(新一代反编译大杀器) 安装包 手机QQ 6.2.3 (目标就设