問題タブ [ilasm]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
440 参照

linq - コンパクト フレームワークの ILASM?

Compact Framework で Linq 式ツリー (db4o/Mainsoft/Mono ポートから) を使用しています。System.Reflection.Emit が存在しないため、LambdaExpressions をデリゲートにコンパイルできません。これは、パフォーマンス上の理由から実行したいと考えています。

式ツリーを IL に変換し、不足している Emit 機能を基本的に提供できるのではないかと考えましたが、その上で WinCE ベースの ILASM を実行するか、独自の PE ヘッダーとアセンブリ メタデータを記述する必要があることに気付きました。

私は ILASM を利用できるようにしたいと思っています。それは...ですか?

0 投票する
1 に答える
6409 参照

c# - ilasmの問題

.net 3.5 SP1には非常に大きなプログラムがあり、正常にコンパイルされています。ただし、Obfuscator Pro(今のところ評価)で難読化しようとすると、Obfuscatorは次のエラーで停止します。

[出力のビルド]このアプリケーションは、ランタイムに異常な方法で終了するように要求しました。
[出力のビルド]詳細については、アプリケーションのサポートチームにお問い合わせください。
[ビルド出力]ilasmが3を返しました
[ビルド出力]ビルドエラー。

エラーはILASMに起因するため、難読化なしでObfuscatorが実行することを実行して、次のコマンドを実行できると思いました。

=> ildasm.exe /OUT=C:\MyApp.exe.il / TEXT / NOBAR / RAWEH / QUOTEALLNAMES / UTF8 / LINENUM / FORWARD C:\ MyApp \ bin \ Release \ MyApp.exe
=> ilasm C:\MyApp。 exe.il

最初のコマンド(ILDASM)は問題なく通過し、450MBのILファイルを取得します。
ただし、2番目のコマンド(ILASM)は、次のエラーでクラッシュします。

このアプリケーションは、ランタイムに異常な方法でそれを終了するように要求しました。
詳細については、アプリケーションのサポートチームにお問い合わせください。

誰かがエラーが何であるかについて何か考えを持っていますか?
私のシステムは、Visual Studio 2008(SP1)のツールを備えたWindows7x64です。

更新:
私は難読化のサポートに連絡し、それらのためにいくつかのテストを行いました。ちなみに彼らには本当に親切な人たちがいます。
このエラーは、.net2.0フレームワークフォルダーからx86ILASMを使用した場合にのみ発生することがわかりました。framework64 \ v2.0 ...のものを使用すると、エラーは発生しません。
また、.net 4.0(ベータ2)の(x86またはx64)ILASMを使用すると、問題なく通過します。
したがって、これは実際には.net 2.0forx86のILASMのバグのように見えます。

0 投票する
2 に答える
1585 参照

.net - .NETコンパイラ-非マネージC++からのCLRアセンブリメタデータアクセス/リフレクション

.NETランタイム(CLR)を対象とするコンパイラがあります。コンパイラの現在のバージョンは、標準のC ++(非管理対象)で記述されています。コンパイラは現在、コンパイル時にアセンブリを参照するためのサポートを欠いているため、.NETライブラリを「インポート」する方法は、.NETで記述されたユーティリティスタブジェネレータを使用することです。これは、アセンブリを反映し、カスタム言語でアセンブリの署名スタブを発行します。 。使用するすべての.NETアセンブリのスタブを事前に生成します。コンパイル時に、コンパイラはスタブファイルをコンパイルしてシンボルテーブルなどにデータを入力し、.NETAPIからタイプとメソッドを解決できるようにします。それが私のバージョンの「使用」です。ただし、これは一時的なものであり、実際の「using」または「import」ディレクティブをコンパイラーに追加したいと思います。コンパイル時に、参照されるアセンブリのメタデータ/タイプ情報にアクセスする必要があります。

私の質問:管理されていないC++からCLRアセンブリメタデータにアクセスする方法についての提案が必要です。または、マネージC ++アプリに変換し、.NETリフレクションサポートを使用する理由が必要です。純粋なC++の目的は、Linux for Monoでもコンパイルできることです。さらに、CLR以外の別のランタイム用の部分的なバックエンドもあります。

0 投票する
2 に答える
2109 参照

c# - ファイルから .NET 3.5 と C# を使用して実行時に IL コードをコンパイルする

ILファイルであるファイルを取得し、実行時にコンパイルしてexeに戻したいと思います。

現在、process.start を使用してパラメーター (ilasm.exe) を使用してコマンド ラインを起動できますが、作成する C# サービスからこのプロセスを自動化したいと考えています。

リフレクションとreflection.emitでこれを行う方法はありますか?

これが機能している間:

これは合理化されたプロセスにしたいので、理想的ではありません。

実行時に IL を作成して保存する例を見てきましたが、既にファイル形式で持っている IL を使用して、exe にコンパイルし直す必要があります。

ありがとう。

0 投票する
1 に答える
558 参照

.net - CIL でのカスタム属性の定義

カスタム属性でメンバーを装飾する目的で、CIL で配列リテラルを定義するための構文は何ですか?

CIL (ilasm.exe を使用してコンパイル) でいくつかの .NET コードを作成しており、カスタム属性でメソッドを装飾する必要があります。その属性のコンストラクターは、唯一のパラメーターとして整数の配列を取ります。CILでこれを行うにはどうすればよいですか?

これは、カスタム属性のコンストラクターの署名です (変更できません)。

これは、C# で記述している場合にメソッドを装飾する方法です (ただし、できません)。

ildasm.exe を使用してコンパイル済みの C# を確認すると (リバース エンジニアリングによって理解しようとするため)、見苦しく使用できないバイナリ リテラルが得られます。代わりに Reflector.NET を使用してみましたが、見た目はずっと良くなりましたが、ilasm.exe はキーワード「new」で構文エラーをスローするため、使用できません。

0 投票する
1 に答える
77 参照

.net-3.5 - .net プログラムを逆アセンブルして再アセンブルすると、グラフィックが表示されない

私はソフトウェアを持っています。PEファイルを逆アセンブルすると

foo.MainFormやなど、たくさんのファイルを取得しますfoo.bar.dll。その後、ファイルを再アセンブルしようとすると

正常に動作する foo.exe が再び表示されますが、新しいファイルでは小さいグラフィックスの一部が欠落しています (ファイルも 200kb 小さくなっています)。他のいくつかのグラフィックスは機能しているので、逆アセンブルまたは再アセンブルで何かが欠けているようです。どうすればこれを修正できますか?

0 投票する
1 に答える
2649 参照

.net - .NET Framework 4 ILASM ターゲット フレームワーク 2

質問:ILASM.EXEフレームワーク 2.0 アセンブリを使用して作成する必要があります。

これまでのところ、 fw 2 ilasm: が 2.0 アセンブリを作成することを見てきました。一方、FW 4 ilasm: 4.0 アセンブリを作成します。

これまでのところ、私はクールです。

今私は知る必要があります: fw 4 ilasm を作成して fw 2 アセンブリを作成するために使用できる方法 (おそらく引数) はありますか?

0 投票する
2 に答える
1908 参照

.net - アセンブリ メタデータを保持しながら外部 DLL に強力に署名するにはどうすればよいですか?

プロジェクトで使用する署名されていないライブラリがいくつかあります。私のアプリケーションは強力に署名されているため、ライブラリも同様に署名されている必要があります。

以下を使用してこれらのライブラリに署名します。

問題は、バージョン番号などのメタデータが、現在署名されている DLL で失われることです。ライブラリ間のいくつかの依存関係が壊れているため、これは問題です。これらのライブラリのソース コードを実際にコンパイルせずにバージョン番号を保持するにはどうすればよいですか?

アップデート

実際には、この問題を示すのは特定の DLL であり、ILMerge を使用してビルドされていることがわかりました。おそらくこれが問題の原因です。明確にするために: ILMerge によって生成された DLL には適切なメタデータがありますが、それを逆アセンブルして再アセンブルした後でのみ、メタデータは消えます。

更新 2

Reflector で DLL を開きましたが、少なくともバージョン番号は残っているようです。Windows エクスプローラーのファイル プロパティ ダイアログ/詳細タブを使用して常に確認していました。したがって、代わりに欠落しているのはマニフェストだと思います。

0 投票する
2 に答える
2994 参照

visual-studio - Visual Studio プロジェクト内から CIL コードをコンパイルする例はありますか

Visual Studio は CIL/MSIL プロジェクトをサポートしていないという質問と回答が寄せられていることを認識しています。MSBuildContribプロジェクトには、ビルド時に IL ファイルをコンパイルできる ILASM タスクがあります

このタスクの使用方法の例については、Google で検索しても何も見つかりませんでした。

Visual Studio ソリューションの一部として ILASM を使用する例はありますか? #develope と ILIDE が CIL をサポートしていることに気づきました...ここでの目的は、Visual Studio ソリューションの一部としていくつかの CIL ファイルをコンパイルすることです。

0 投票する
3 に答える
408 参照

c# - MASMアセンブリ言語とILASMの関係(ある場合)は何ですか?

MASMアセンブリ言語とILASMの関係(ある場合)はどうですか。1対1の変換はありますか?私はQuantumGISをプログラムに取り込もうとしています。コンピューターにGISがあり、RedGate Reflectorがあり、Visual Studio 2008のオブジェクトブラウザーも、Quantumの.dllの1つ(動作についての強い手がかりがないものの1つ)を開くことができませんでした。MASMアセンブリエディターを使用して同じdllを「開いた」と、そもそも必ずしも理解できるとは思わなかったことが吐き出されました。同じ「コード」を、ILASMとImで相互作用できるものに変換するにはどうすればよいですか?結果的にCsharpで想定されますか?読んでくれてありがとう、そして以前の質問に対するすべての回答...Csharpでのプログラミングに比較的慣れていないImを覚えておいてください。