C#の逆コンパイルのdllファイルは、中国語の文字の内容を変更して、DLLを再構築します

  友人がいる限りDLLとして中国の文字列セクションの内容を変更し、その電気逆コンパイルdllファイルを助けるために私に尋ねた(例:「モーター番号」、「配線」など)。

  私は接触していなかったようなことは、達成、またどのように難しい概念ではなく、彼を助けるために、それは喜んで受け入れ、この新しい問題を、解決にかかる時間の端を見に自分自身に挑戦するためにすることができます。

  午前9時16から10時21分に、唯一^ _ ^解決この問題の中心に、約1時間を要しました。もちろん、より多くの固体の基本的なコンピュータの知識ならば、あなたは確認するために多くの情報を必要はありません。

ステップ1:IL DASMソフトウェアを開きます。

  Ildasm.exeをあなたが読んで変更するexeファイルの手順を逆コンパイルするために使用することができ、Microsoftの抗ILコンパイラツールです。

  ILは、Microsoftプラットフォーム上の中間言語である、私たちはしばしばC#のコードが自動的にILコンパイラに変換した後、時間コンパイラ(JITコンパイラ)によってマシンコードに変換し、最終的にはCPUによって実行される書き込み。IL Ildasm.exeを逆コンパイラは、クロスプラットフォームの実行可能(PE)ファイルにコンパイルされます。私たちのために理解し、他の人にコードを変更します。彼と一緒に私たちは、問題は、レベルエディタにとどまることができない中間層に浸透することができます参照してください。

  Ildasm.exeをネイティブCドライブで見つけることができ、ダウンロードしないで、自分のコンピュータ内の場所は以下のとおりです。

C:\プログラムファイル(x86の)\マイクロソフトのSDK \ Windowsの\ v7.0A \ビン

それを開き、「ファイル」をクリックして - 、あなたは次のような結果デコンパイルdllファイルをロードする必要がある「開きます」:

それぞれの記号は次のように参照が何を意味するのか、具体的な内容です。

主な参考文献:

★HTTPS://www.cnblogs.com/caokai520/p/4921706.html

ステップ2:dllファイルをダンプ

  DLLの内容を編集するためには、それをダンプする必要があるDLL。

  :次のように、「ダンプ」、「ダンプオプション」デフォルト - Ildasm.exeをは、「ファイル」をクリックしてください

  (そのような試験など)だけで名前を入力し、[一時ファイルに保存され、結果をダンプ次のとおりです。

  Test.ilはその後、のようなものの内容をそのファイルを開きます。

  これは、コンテンツ内にある、すべてのDLLコード情報ということでなければなりません。

ステップ3:位置を変更するには、ターゲット固有のコード

   由于IL语法未曾接触过,并且近2万行代码中,也没见到一个中文字符串,当时也不确定这个文件是否是自己需要修改的。通过概览网上一些人的案例,特别是如下几个,渐渐就有了眉目。

如上三幅图提示,再了解ldstr关键词含义后,可以认为后面的16进制代表的应该就是汉字编码。

第4步:寻找汉字编码表,并对照

  网上这方面资料似乎很少,很感谢‘blackheart’写了上述那个‘乱舞春秋’的DEMO,通过对照汉字编码表(https://wenku.baidu.com/view/e660cf35ba0d4a7303763a54.html?sxts=1564020740708),发现‘乱’字的4位16进制编码就是‘blackheart’博主里那个‘71 4E’。

  不过在汉字编码表中,顺序是‘4E71’,逐一检验其它3个字后,终于确认了规则。

  然后,按照此规则,在汉字编码表中,找到‘电机编号’4个字符,其在IL语法中16进制表示方式应该是:35 75 3A 67 16 7F F7 53。通过检索整个test.il文件,发现了29处匹配项!

 

  到此核心的工作已经完成了,下一步就是编写一个Python脚本,将整个dll中出现的这些‘电机编号’前后整段语句结合汉字编码表EXCEL,全部自动翻译出来,并标示代码行位置,然后就知道要去改哪里了。

 

第5步:修改后,重新生成dll

这一步可参考:https://www.cnblogs.com/jiangchuan/p/10851179.html

 

おすすめ

転載: www.cnblogs.com/Edison25/p/11243394.html