因为公司一个项目需要修改PPS的颜色,于是反编译了PPS的代码发现,作者很不厚道的把所有着色都HardCode在代码里

private static void InsertDefaultSeriesColors(AnalyticChartTemplate template)
{template.Add_CustomColor(Color.FromArgb(0, 0, 0, 0));template.Add_CustomColor(Color.FromArgb(0xec, 0xc0, 80, 0x4d));template.Add_CustomColor(Color.FromArgb(0xec, 0x9b, 0xbb, 0x59));template.Add_CustomColor(Color.FromArgb(0xec, 0xdd, 0xd9, 0xc3));template.Add_CustomColor(Color.FromArgb(0xec, 0x4b, 0xac, 0xc6));template.Add_CustomColor(Color.FromArgb(0xec, 0xf7, 150, 70));template.Add_CustomColor(Color.FromArgb(0xec, 0x93, 0x89, 0x53));template.Add_CustomColor(Color.FromArgb(0xec, 0x8d, 0xb3, 0xe2));template.Add_CustomColor(Color.FromArgb(0xec, 0xe5, 0xb9, 0xb7));template.Add_CustomColor(Color.FromArgb(0xec, 0xd7, 0xe3, 0xbc));template.Add_CustomColor(Color.FromArgb(0xec, 0xcc, 0xc1, 0xd9));template.Add_CustomColor(Color.FromArgb(0xec, 0xb7, 0xdd, 0xe8));template.Add_CustomColor(Color.FromArgb(0xec, 0xfb, 0xd5, 0xb5));template.Add_CustomColor(Color.FromArgb(0xec, 0x80, 100, 0xa2));template.Add_CustomColor(Color.FromArgb(0xec, 15, 0x24, 0x3e));template.Add_CustomColor(Color.FromArgb(0xec, 0x63, 0x24, 0x23));template.Add_CustomColor(Color.FromArgb(0xec, 0x4f, 0x61, 40));template.Add_CustomColor(Color.FromArgb(0xec, 0x5f, 0x49, 0x7a));template.Add_CustomColor(Color.FromArgb(0xec, 0x20, 0x58, 0x67));template.Add_CustomColor(Color.FromArgb(0xec, 0x97, 0x48, 6));template.Add_CustomColor(Color.FromArgb(0xec, 0x49, 0x44, 0x29));
}
在没有其它办法下,只好尝试修改PPS的类库,再加上原有签名重新部署一次。
网上找到Reflector的一个插件Reflexil,附上地址
http://reflexil.net/
这个插件能够直接在Reflctor下修改类库,并且保留原有签名, 原本就可以解决我所有问题,但是尝试过后,发现保存后的类库是延迟签名的, 什么延迟签名,可以参考下这链接
http://msdn.microsoft.com/en-us/library/t07a3dye.aspx
所以不能直接部署到GAC, 头疼花了接近一天的时间, 去寻找如何部署, 在快要绝望的时候, 意外的发现可以使用ilasm对类库再签名, 这就意味着我可以先使用ilasm进行反编译,再使用原有资源
进行签名, 为了印证是否正确 ,写了如下指命进入vs工具命令行
ildasm C:\Microsoft.PerformancePoint.Scorecards.ServerRendering.Patched.dll /out:c:\Microsoft.PerformancePoint.Scorecards.ServerRendering.il进入Microsoft.Net下framework
ilasm c:\Microsoft.PerformancePoint.Scorecards.ServerRendering.il /dll
发现能够注册到GAC, 但是又发现了一个问题,传统GAC上根本看不到我注册的dll, 原来又是我粗心了, 使用了.net 4.0的ilasm , 使用到4.0的ilasm重编译的时候会编译成4.0的dll, 放的位置跟
2.0的位置是不相同的, 于是使用2.0 ilasm重新试一遍, 大功造成 。
在这做一个总结, 要修改原有类库并使用原有签名的步骤是
1. 使用Reflexil进行修改,并保存为一个延迟签名的文件
2. 使用对应版本的ilasm进行反编译再重编译
 

转载于:https://www.cnblogs.com/frankzye/p/3310146.html

使用Reflexil修改类库相关推荐

  1. c#:Reflector+Reflexil 修改编译后的dll/exe文件

    原文:c#:Reflector+Reflexil 修改编译后的dll/exe文件 不知道大家有没有这样的经历:现场实施时测试出一个bug,明明知道某个dll/exe文件只要修改一二行代码即可,但手头没 ...

  2. 记录使用 .Net Reflector 和 Reflexil 修改 Sky Force Reloaded(傲气雄鹰)星章倍率

    写在前面 修改游戏的做法可能不合适,仅供个人娱乐.学习.测试代码安全之用 仅讨论修改方法,不提供修改成品文件 背景 关于游戏内容 Sky Force Reloaded on Steam 飞行射击游戏. ...

  3. inside java security_Inside The JVM Part2: java如何实现安全性

    网络移动性和平台无关性略过...看看java如何实现安全性 Java通过提供一个"安全沙箱"来保证从网络或者其他不信任的地方下载并运行的程序不会破坏本地数据,为了确保沙箱是可靠的, ...

  4. Spring Boot 2.0选择HikariCP作为默认数据库连接池的五大理由

    转载自公众号:工匠小猪猪的技术世界 摘要: 本文非原创,是「工匠小猪猪的技术世界」搜集了一些HikariCP相关的资料整理给大家的介绍,主要讲解了为什么sb2选择了HikariCP以及HikariCP ...

  5. 【转】XCode: duplicate symbol 解决方案

    遇到引用库重复定义的问题,需要解决.项目需要,同时引用ZBar和QQ授权登录SDK,由于二者均使用了Base64处理数据,XCode编译时报错: duplicate symbol _base64_en ...

  6. 重构-改善既有代码的设计:编写代码22宗罪(三)

    1 Duplicated  Code重复代码 不同的地方出现相同的程序结构: 如果你在一个以上的地点看到相同的程序结构,那么可以肯定:设法将它们和而为一,程序会变得更好.最常见的"重复代码& ...

  7. IDEA 搭建 maven(1)

    1.下载 maven 压缩包 a.输入网址 www.apache.org b.往下拉,来到以下界面,点击 maven c.点击 Download d.点击下载 e.文件如下 2.解压 maven 压缩 ...

  8. 通过FxCop来验证.NET编码规范

    公司用的同样的方式进行的编码规范,园友已经写好,直接转载过来. FxCop介绍: FxCop是一个代码分析工具,它依照微软.NET框架的设计规范对托管代码assembly进行检查.它使用基于规则的引擎 ...

  9. 2018.8.14-C#复习笔记总

    2018.8.14-C#复习笔记总 using System; using System.Collections.Generic; //using System.Linq; using System. ...

  10. C#生成CHM文件(中级篇)

    在上篇<C#生成CHM文件(入门篇)>中,我们利用微软自带的hhc.exe以编程的方式创建一个CHM文件,而且调用的是一个静态的HMTL文件.   在中篇中,实现以下几个目标  1.将在线 ...

最新文章

  1. 将带空格的字符串去掉空格.join()函数
  2. 【Android 逆向】整体加固脱壳 ( DexClassLoader 加载 dex 流程分析 | RawDexFile.cpp 分析 | dvmRawDexFileOpen函数读取 DEX 文件 )
  3. Dos命令删除注册表项
  4. cmake (2)其他指令
  5. Python基础知识之文件的读取操作
  6. 脚本启动Tomcat
  7. Netty 简单样例分析(io传输的框架)
  8. 如何在WPF中调用Winform控件
  9. 【Elasticsearch】es 7 Failed to parse value [analyzed] as only [true] or [false] are allowed
  10. 【Spark】大数据+AI mettup【视频笔记】从lambda到HSAP实时数仓的演进 机器学习易用性
  11. Microsoft Dynamics CRM 2015 之安装SQL Server 2012过程中出现“启用windows功能NetFx3时出错...
  12. ActiveMQ入门教程(一) - JMS和ActiveMQ简介
  13. TransactionScrope 2
  14. json html双引号,当gethtml方法返回json时,json中的字符串如果存在双引号,会破坏json的格式, 如:quot;...
  15. python字符类型
  16. php的字符串替换函数,php字符串替换函数
  17. Zotero使用记录----1 下载与安装
  18. python股票量化如何选股?
  19. 天牛须和贪心算法_天牛须算法
  20. Android 高通Camx架构学习 - 第1章

热门文章

  1. JavaSE基础——Scanner类和String类
  2. Mysql远程授权报语法错误
  3. c4d计算机丢失api-ms,遭遇 mssvc.exe svcUpdate.exe IESeven.dll DBSeven.dll病毒第2/3页
  4. php之mvc设计模式的原理和实现
  5. kafka入门1-集群生产消息 报:ERROR Producer connection to localhost:9092 unsuccessful
  6. IDEA 这么设置 Maven,再也不用担心依赖下载失败了
  7. git SSH 公钥拉取代码(使用及配置)
  8. 在页面中 js 获取光标/鼠标的坐标,获取光标的的像素坐标
  9. vue 实现截图并获取截图的坐标_超好用的“电影截图”获取方式
  10. ultraedit激活