リバースエンジニアリングについて知りたくなったので用語を少しまとめてみました。
リバースエンジニアリングとは、機械語で書かれている実行ファイル (exeなど)
を人間が読める言語に変換すること。
逆アセンブル
機械語→アセンブリ言語
に変換すること。
その変換をアセンブラが行うと逆アセンブル
逆コンパイル
逆アセンブルと操作は同じだが、
変換をコンパイラが行うと逆コンパイル。
逆アセンブルのほうが精度は高い
デコンパイル
先述の逆アセンブル、コンパイルとは異なって
機械語→アセンブリ言語以外の上級言語
に変換することをデコンパイルという。
※デコンパイルするツールをデコンパイラという。
難読化
会社をかけて制作したソフトウェアがリバースエンジニアリングによって機能を模倣したものを作られたり、改ざんされると大きな不利益となるためコンパイルする前のソースコードをツールを使って読みにくくすることで解読しにくくすること。
具体的には、変数名、関数名を無意味で冗長な文字列に置換することなどがあげられる。
リバースエンジニアリングを行うツール
Ghidra
NSAが無償で公開しているリバースエンジニアリングツール。デコンパイルなどをすることができる。
OllyDbg
有名な逆アセンブラ。
他にもいろいろあるようですが、あまり詳しくないのでわかりません。(すいません。。。)