zoukankan      html  css  js  c++  java
  • 转 C#反编译后的一些错误改正

     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 都要加全,最后就是处理反编译工具,出错的一些代码。
  • 相关阅读:
    JVM常用参数设置
    Jstat在分析java的内存GC时的应用
    jstack来分析linux服务器上Java应用服务性能异常
    linux 远程连接服务器ftp命令整理
    LR11中webservice协议的性能测试应用
    Windbg在.net性能问题排查hang情况的应用思路
    Windbg基本命令应用总结
    LR11直接对数据库访问操作方法在性能测试中的应用总结
    BenchmarkSQL v5.0测试达梦数据库
    SSH登录时间久,登录后报错:'abrt-cli status' timed out
  • 原文地址:https://www.cnblogs.com/qizhuocai/p/6509527.html
Copyright © 2011-2022 走看看