Xenocode反编译及代码整理记录

1、Xenocode中设置输出数字为十进制

2、输出后中文文本为\uXXXX,可采用编码工具转成中文

3、new ()改成null;

4、反编译后代码中嵌套数组new int[101][grayPixel[w, h]]++;改成 
           int[] Totaldark = new int[101];
           Totaldark[grayPixel[w, h]]++;

5、形如“+= delegate(”的转换
   如: this.shapeButton.DropDownClosed += delegate(object sender, EventArgs e) {this.shapeButton.DropDownItems.Clear();};
   反编译成    this.shapeButton.DropDownClosed += new System.EventHandler(this.<InitializeComponent>b__2);
   变成了用+= new System.EventHandler,标志<InitializeComponent>为包含代码的函数
   标志__CachedAnonymousMethodDelegate XXXX    = new EventHandler  XX
代码整理方法:
   将>b__替换成_b__,去掉<,即
   this.shapeButton.DropDownClosed += new System.EventHandler(this.InitializeComponent_b__2);

6、自定义类的转换,标志c__DisplayClass     //  __locals    
   如:         WaitCursorChanger wcc = new WaitCursorChanger(this);
            using (ChooseToolDefaultsDialog dialog = new ChooseToolDefaultsDialog())
            {
                EventHandler shownDelegate = null;
                shownDelegate =
                    delegate(object sender2, EventArgs e2)
                    {
                        wcc.Dispose();
                        wcc = null;
                        dialog.Shown -= shownDelegate;
                    };
   反编译成:
            PdnToolBar.<>c__DisplayClass4 <>8__locals5 = new PdnToolBar.<>c__DisplayClass4();
            <>8__locals5.dialog = new ChooseToolDefaultsDialog();
            try
            {
                PdnToolBar.<>c__DisplayClass6 <>8__locals7 = new PdnToolBar.<>c__DisplayClass6();
                <>8__locals7.<>8__locals5 = <>8__locals5;
                <>8__locals7.<>8__locals3 = <>8__locals3;
                <>8__locals7.shownDelegate = null;
                <>8__locals7.shownDelegate = new EventHandler(<>8__locals7.<ToolChooserStrip_ChooseDefaultsClicked>b__1);
                <>8__locals5.dialog.Shown += <>8__locals7.shownDelegate;
                <>8__locals5.dialog.SetToolBarSettings(this.appWorkspace.GlobalToolTypeChoice, this.appWorkspace.AppEnvironment);
代码整理方法:
    将4__this替换成4__this,类中有实例

7、变量定义,反编译后有时会连一块
        private bool  AutoReconnectEventAttached;
    变成了    private   AutoReconnectEventAttached;
    
8、反编译后出现(0)e.aaa 改成 e.aaaa
    区别Function(0)

9、EventHandler<0>,改成EventHandler,此事件一般都有变化
    (EventHandler) this.EndDownload, 改成this.EndDownload 

10、反编译后出现 () value; 改为value,此时变量定义有问题,Bool or int

11、反编译后出(T) this._personalgroup.GroupInfo.Portrait;    改成this._personalgroup.GroupInfo.Portrait 类型转换
    反编译后出(TKey) this._personalgroup.GroupInfo.Portrait;    改成this._personalgroup.GroupInfo.Portrait 类型转换

12、将反统标识去掉,//[CompilerGenerated]

13、反编译后enum属性付值时,会只给数字。如enum{first,second}会为成0,1。    可重新改成相应的属性值

14、Decimal.op_Modulus操作符找不到,改成% 

15、反编译后出现两次类实例,如PsPrivacyControl.PsPrivacyControl.    改成PsPrivacyControl.

16、有代码Ref必须转为out才能编译通过

  • ILSpy_Master_2.1.0.1603_RTW_Binaries
  1. 直接生成时,有些奇怪,不能一次性生成 所有的 cs 文件与 resource
  2. 但是选择 saveCode 后 “保存类型”选择 all files 先保存一次。
  3. 再 选择 saveCode 后 “保存类型”选择 c# porject 再保存一次。可以保存所有的 resource 与 cs 文件。(不知道别的机器上是不是这样?)
  • 再可以用 resgen 命令把 resource 变成 resx 文件

  可以找一工个:ConvertResource 一次性把所有的 resource 变成 resx

需要把其中的
  <matadata> 换成 <data>
  </matadata> 换成 </data> (但是 使用 resgen 就不需要这样,本人使用的是 visual studio 2008 中文版  )

  • 在窗体初始化InitializeComponent中添加  System.ComponentModel.ComponentResourceManager manager = new ComponentResourceManager(typeof(frmLogin));时 再切换到设计界面提示错误 变量“manager”未声明或从未赋值。
    我将变量 manager重命名resources时错误消失。( 注意大小写)
  • base.FormBorderStyle = FormBorderStyle.FixedSingle;换成
    base.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
  • base.AutoScaleMode = AutoScaleMode.Font;换成
    base.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
    等几项.
    • 与上面差类似的问题。system.Drawing 或 Print 都要加全,最后就是处理反编译工具,出错的一些代码。

转 C#反编译后的一些错误改正的更多相关文章

  1. Winform工程反编译后的工作

    Winform工程,反编译后,虽然能用,但不太好用. 因为form并没有像原生的那样. 所以,需要几个步聚: 1. 用ResGen工具,把二进制资源文件还原为xml格式: ResGen fromXX. ...

  2. Winform 工程反编译后窗体如何显示

    Winform反编译后,如果想要让它象正常的工程一样,可以在窗体编辑器中,编辑,需要做一些工作. 1.  转换.resources 为 .resx 利用resgen工具.这个工具是vs自带的. 在启动 ...

  3. JD-GUI反编译后代码逻辑分析

    一,用jd-gui.exe等工具查看源代码.如何你不会,可以参看此文章: http://blog.csdn.net/hp_2008/article/details/8207879 可以到以下连接下载可 ...

  4. winform代码反编译后图片等资源文件恢复解决方案

    用Reflector工具反编译的winform代码,图片等资源文件不能很好的反编译成功. 这里有一个笨的解决方案.首先我们要了解图片资源当初加入到工程的几种方式,及他们所在的位置. 一般winform ...

  5. 实现android apk反编译后代码混淆

    通常情况下我们需要对我们开发的android代码进行混淆,以免代码在反编译时暴露敏感信息及相关技术代码: 反编译测试工具:onekey-decompile-apk-1.0.1. 在高级版本的adt创建 ...

  6. WPF 反编译后错误处理

    1. 首先,手动创建一个WPF工程(WpfApplicationReflectorDemo) 2. 把生成的WpfApplicationReflectorDemo.exe 拖到ILSpy里 3.点击 ...

  7. 恢复Reflector反编译后资源文件的办法

    反编译问题: 1.路径问题:如果遇到了Path.Combine,有错误改下即可 2.资源文件问题: 在Reflector下,对左边的资源管理窗口的Resources文件夹下的资源文件,进行右键点击,选 ...

  8. C#中修改Dll文件 (反编译后重新编译)

    Dll文件生成后,如没有源代码,又要修改其中内容 可以用微软自带的ildasm和ilasm程序 先用ildasm将dll文件反编译成il文件 ildasm Test.dll /out=Test.il  ...

  9. 【Android 应用开发】 Android APK 反编译 混淆 反编译后重编译

    反编译工具 : 总结了一下 linux, windows, mac 上的版本, 一起放到 CSDN 上下载; -- CSDN 下载地址 : http://download.csdn.net/detai ...

随机推荐

  1. docker - 从安装到部署一个web应用(go、java)

    一:安装docker 1.https://docs.docker.com/engine/installation/binaries/ 下载docker最新版二进制tar.gz linux下: wget ...

  2. vue.js - 1

    最近开发公司vue前端项目,做一下笔记,偶尔上来查漏补缺 Vue指令之v-bind的三种用法 直接使用指令v-bind 使用简化指令: 在绑定的时候,拼接绑定内容::title="btnTi ...

  3. Linux防火墙配置与管理(16)

    防火墙指的是一个由软件和硬件设备组合而成.在内部网和外部网之间.专用网与公共网之间的边界上构造的保护屏障.是一种获取安全性方法的形象说法,它是一种计算机硬件和软件的结合,使Internet与Intra ...

  4. [HAOI2018]染色(容斥+NTT)

    补充一篇详细得不能再详细的题解,比如让我自己看懂. 可能与前面的题解有些相同,我想补充一下自己的想法. 显然,最多 \(K\) 最大为 \(N=min(\lfloor \frac nS\rfloor, ...

  5. Office 2010激活 NO KMS products detected问题

    今天用office2010激活工具Office 2010 Toolkit激活安装的office2010时悲剧的遇到了这个问题,如下图: (这张图是从网上找的,不过和我遇到的问题是一样的). 然后上网搜 ...

  6. 【xsy1281】 珠串 打表+乱搞or数位dp

    题目大意:你要找出一个有$k$个的本质不同的$n$位二进制数的集合,使得集合中最大的数最小,请输出这个数 本质不同定义:对于一个数$k$,$rev(k)$,$~k$,$rev(~k)$与$k$本质相同 ...

  7. 安装ORACLE时 各Linux版本下载地址

    oracle linux :https://edelivery.oracle.com/osdc/faces/SearchSoftware 需要注册oracle账号 redhat官方下载 https:/ ...

  8. Oracle死锁查询及批量处理

    一.数据库死锁的现象程序在执行的过程中,点击确定或保存按钮,程序没有响应,也没有出现报错. 二.死锁的原理当对于数据库某个表的某一列做更新或删除等操作,执行完毕后该条语句不提交,另一条对于这一列数据做 ...

  9. 全网最详细的启动或格式化zkfc时出现java.net.NoRouteToHostException: No route to host ... Will not attempt to authenticate using SASL (unknown error)错误的解决办法(图文详解)

    不多说,直接上干货! 全网最详细的启动zkfc进程时,出现INFO zookeeper.ClientCnxn: Opening socket connection to server***/192.1 ...

  10. 全网最详细的HA集群的主节点之间的双active,双standby,active和standby之间切换的解决办法(图文详解)

    不多说,直接上干货! 1. HA集群的主节点之间的双standby的解决办法: 全网最详细的Hadoop HA集群启动后,两个namenode都是standby的解决办法(图文详解) 2. HA集群的 ...