あいさつ
どうも、はかせです。
昨日から黒魔術士を目指してILを学び始めました。
所感としてはなんか楽しいです。
つよつよプログラマになったと錯覚できるからですかね。
(実態はよわよわプログラマ オブ ザ イヤーを受賞できるくらいよわよわプログラマですが)
今回は私が勉強で使っているツールで
DnSpyというツールが神がかっていたので
その話です。
DnSpyとは
.NETデコンパイラです。
GitHubにコードは公開されており、
ReadMeから飛べるリンクから実行ファイルも入手できます。
github.com
元々.NETデコンパイラと言えばILSpyというツールが定番だったそうです。
実際私も落として使ってみましたが、
動作もサクサクで見やすく使いやすいツールでした。
ただこのDnSpyはILSpyと比べて
・単体でデバッグが可能
・既にあるDLLの中身とかも弄れる
・ILでもステップ実行ができる
・UIや操作がVisualStudioライクで馴染みがある
という風に非常にデバッグ機能が強いです。
なのであたかも
VSでC#コードのデバッグをしているような感覚でILのデバッグが行える
というVSユーザーである私からしたらひゃっほーいって感じの神ツールです。
(IL命令の説明が出てくるのも親切で良き)
吐き出したexeの編集もコード上で右クリックして
EditClassを選びます。
そうするとこんな編集画面が起き上がるので
ここをこんな感じで変更し
右下のCompileボタンをクリック。これで編集完了です。
実行結果を見てみましょう。
まずは編集前
次に編集後
exeを直で開いて編集できた!
すごい!神!
ほめてばっかりもあれなんで・・・
もちろん神ツールなんでめっちゃいいんですよ。
おそらく一日程度しか使ってない私じゃまだ気づかない
神機能もたくさん搭載されていると思います。
ただこのブログで何度も言っているように
この世に銀の弾丸は存在しません。
このDnSpyも欠点(といっても微々たるものな希ガス)があります。
・なんか編集画面がもっさりする
・開いているexeやdllはロックされている
・DynamicMethodのデバッグはできない
一個目はただの主観です。
普段つかってるVSやVSCodeと比べて入力や予測変換が
もっさりしてる感じがしました。(VSがサクサクすぎるだけなんですが)
二個目はおそらく単体でデバッグするためなんでしょう。
dllとか開いている間は編集しても結果が反映されてませんでした。
(実行結果変わらず)
なんで編集したらDnSpyから外してあげましょう。
三個目はneueccさんの記事に書いてました。
私はまだその領域まで勉強を進めれていないので
経験できておりません。