Sukoyaの日記: それでマシン語は役に立ちましたか? 4
日記 by
Sukoya
いや、もう10年近く経つのだなぁと。
アーキテクチャの概念としてのマシン語レベルでの動作を理解するのは重要でも、
マシン語を活用できるお仕事ができているだろうか。
いや、もう10年近く経つのだなぁと。
アーキテクチャの概念としてのマシン語レベルでの動作を理解するのは重要でも、
マシン語を活用できるお仕事ができているだろうか。
私はプログラマです。1040 formに私の職業としてそう書いています -- Ken Thompson
いやもう11年ですよ (スコア:1)
C/C++の仕事で厄介なデバッグ(逆アセされたバイナリをステップ実行して解析)をするときに役立った。
自分の場合 (スコア:0)
SpectreやMeltdownの仕組みを理解するのにアセンブリで速く動くコード書くために覚えた知識が役に立ちましたよ。
あれは推定したいデータのビット状態が投機実行で別のキャッシュラインに分散されて反映されるように書くことで、キャッシュに乗ったデータのロード時間の差からデータが推定出来てしまうという問題でした。
他にも、マシン語の知識があった方が高級言語の知識だけしかない人よりスタックオーバーフローのような脆弱性を埋め込みにくくなるんじゃないでしょうか。
マシン語はソフト側からCPUの仕組みに触れていくことが出来るので、並列・分散・同期処理のボトルネック分析なんかにも活かせると思います。
C#でもILのインライン化要望があるぐらいなので (スコア:0)
若干使える (スコア:0)
条件ジャンプをちょっと書き換えたりすれば、起動時チェックの回避なんかに使える。
再コンパイルしなくてもバイナリエディタでちょっと書き換えるだけだから楽。
具体的には仮想ディスク判定を誤魔化したりとか。
まぁその程度だな。
機械語ではないが、MSILならコンパイル結果が同じになるので云々って記事をよく見かける(逆コンパイルが正確すぎるのでやった事はない)。
C/C++は最適化が掛かりまくるんで逆コンパイル結果がゴミになるから、何かしたい時は逆アセンブルの方が使いやすかったりする。
内部のアルゴリズムやファイル形式を推測するのには全く使えない。
最近の話題ならオプソ化されたMS-DOSのソースが見れるとうれしいのかもね。