問題タブ [ilspy]
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.
dll - ILSpy を使用してリソースから画像を取得する方法
それが有効な質問かどうかはわかりません。しかし、任意のリソースで画像またはアイコンを取得するにはどうすればよいかについて少し興味がありますdll
。
どうすればそれを行うことができますか?
dll
リソースに多くのアイコンがある場所を使用しています。
c# - 「1」で終わる変数は、ILSpy 内で「1」が削除されます。なんで?
C# コンパイラがコードを最適化する方法を調べるために、簡単なテスト アプリケーションを作成しました。テストを変更するたびに、アプリケーションをコンパイルし、バイナリを ILSpy で開きました。
私にとって、奇妙なことに気づきました。これは明らかに意図的なものですが、コンパイラがこれを行う正当な理由が思いつきません。
次のコードを検討してください。
無意味なコードですが、ILSpy がステートメントをどのように解釈するかを確認するためにこれを書きましたif
。
しかし、このコードをコンパイル/逆コンパイルしたとき、頭を悩ませていることに気付きました。私の最初の変数は!test_1
に最適化されました。test_
C# コンパイラがこれを行う正当な理由はありますか?
完全な検査のために、これはMain()
ILSpy で見ている出力です。
アップデート
IL を調べたところ、これは C# コンパイラではなく、ILSpy の問題であることがわかりました。Eugene Podskal は、私の最初のコメントと観察に対して適切な回答を提供してくれました。ただし、これが ILSpy 内のバグなのか、それとも意図的な機能なのかを知りたいと思っています。
c# - dotPeek で「.NET アセンブリ ファイルではない」.NET Framework v4.5 実行可能ファイルを逆コンパイルしますが、実行可能ファイルは正常に動作します
クライアントが以前の開発者との橋渡しをしました。残念ながら、私は Web 開発者として .NET フレームワークの経験があまりありません。
編集: 私たちのクライアントは合法的にソフトウェアを所有していますが、ソース コードを要求しませんでした。開発者は私たちのコミュニケーションに応答していません。SO でこの質問をする意図は、法的なアドバイス (それを処理する人がいます) ではなく、逆コンパイルに利用できるオプションについてです。
以前に JetBrains dotPeek で実行可能ファイルを正常に逆コンパイルしましたが、それらはすべて.Net Framework v2.0/v4.5
フレームワークを実行しました。現在使用しているクライアントの給与計算実行可能ファイルは.Net Core v4.5
、.NET アセンブリ ファイルとして実行した dotPeek、ILSpy、またはその他の C# 逆コンパイル ソフトウェアによって認識されません。
少し調査した結果、.Net Core
最近オープン ソース化されたものだと思いますが、逆コンパイル プロセスをどのように進めればよいか、または現時点で可能かどうかさえわかりません。推奨事項はありますか?
注: 「逆コンパイルはできませんが、最初に X、Y、Z を試しましたか?」という行に沿った回答を受け入れます。私たちはタイトなスケジュールを実行しているので、それができるかどうかをクライアントに知らせる必要があります.
私がやったことのいくつかの明確化: program.exe
dotPeek で開いた、右クリックのプロパティは私にこれを与えています:
「.NET アセンブリ ファイルではありません」と表示されますが、実行可能ファイルを正常に実行できます。
編集:実行可能ファイルからより多くの情報を抽出して、逆コンパイルする別の方法を絞り込むことはできますか?
ここでは、.NET 逆コンパイラは役に立たないと思います。
c# - 同じコード実装を使用する場合、ConcurrentStack のパフォーマンスを模倣できない
私は並列データ構造の記述について学んでおり、学習課題としてConcurrentStackの実装を調べています。出発点として、IlSpyを使用して ConcurrentStack 実装のコピーを作成し、C# に逆コンパイルしました。当分の間、Push および TryPop メソッドのみを調査して使用することに限定しました。
しかし、私の実装は、元のものを使用するよりも大幅に遅くなります。
私のテストでは、異なるコアに対する各スレッドのスレッド アフィニティを備えた 4 つのスレッド (単一ソケット、4 コア CPU 上) を使用しています。各スレッドは 1,000,000 ループを実行し、各ループは 3 回のプッシュと 3 回のポップを実行します。すべてのスレッドを完了する平均時間の何倍もテストを実行すると...
- 同時スタック => 445ms
- Push/TryPop のクローン => 670ms
そのため、私が知る限り、コードは 2 つの間で同じですが、クローンは約 50% 遅くなります。1 回の実行でテストを 500 回実行し、すべての実行の平均をとります。したがって、問題がコードの最初の JIT であるとは思いません。
メソッドのコピーが非常に遅くなる理由はありますか?
C# の実装
(完全を期すために、結果を複製するために使用できる C# コンソール アプリ コードを提供しました。私と同じ結果が得られるかどうかを知りたい人のために。)
.net - ICSharpCode DecompilerはTypeReferenceExpressionからTypeDeclarationに取得しますか?
私はICSharpCode.Decompiler.Ast.AstBuilder
コードから (SharpDevelop、NRefactory、および ILSpy によって使用されています。そこからもインスピレーションを得ています) を使用して、.NET 共通中間言語アセンブリから抽象構文ツリーを構築しています。
構文ツリーにはTypeReferenceExpression
、次のような行がある場合は常に sが含まれますMath.Abs()
。TypeDeclaration
同じ構文ツリーにも存在する場合、参照された型のを取得するにはどうすればよいですか?
私が得た最も近いものは次のとおりですTypeReferenceExpression.Type.ToTypeReference().Resolve()
が、これはオーケストレーションが非常に難しく、構文ツリー内のすべての情報を既に (おそらく) 持っています。名前空間と識別子を使用して手動検索も試みましたが、もっと良い方法があるはずです。
c# - ILspy c# の逆コンパイル結果をより良い形式にする方法は?
ILspy は素晴らしいツールですが、それを使用して dll を逆コンパイルすると、次のような結果が得られます。
しかし、それは次のようになります。
どうすればより良い結果を得ることができますか?
このようなより多くの例:
それは:
しかし、得られるものは次のとおりです。
ビルドすると、次のようなエラーが発生します。
.net - MSIL または .NET PE ファイルからリソース コンテンツを抽出する方法
Image リンクを確認してください。MSIL ファイルからリソース コンテンツを抽出する必要があります。ILSpy を使用してファイルをデバッグしましたが、他の方法で行う必要があります。手動のインターセプトを使用せずに。