こんにちは、Khabrovites。コース「リバースエンジニアリング。基本」の一環として、Alexander Kolesnikov(情報化オブジェクトの複雑な保護のスペシャリスト)が記事を作成しました。
また、「ドライバーの脆弱性の悪用」というトピックに関する公開ウェビナーに全員を招待します。パート1 "。ウェビナーの参加者は、専門家と一緒に、ドライバーオーバーフローの脆弱性とカーネルモードでのエクスプロイト開発の詳細を分析します。
この記事では、単純なリバースエンジニアリングツールを使用してパックされた実行可能ファイルを分析する方法について説明します。実行可能ファイルをパックするために使用されるいくつかのパッカーについて説明します。すべての例はWindowsOSで実行されますが、調査したアプローチはどのOSにも簡単に移植できます。
ツールキットとOSの構成
テストには、Windowsを実行している仮想マシンを使用します。ツールキットには、次のアプリケーションが含まれます。
x64dbgデバッガー;
x64dbgScyllaプラグインがデフォルトでインストールされています。
hiewデモ;
実行可能ファイルを解凍する最も速くて簡単な方法は、デバッガーを使用することです。ただし、Pythonプログラミング言語も検討するため、次のプロジェクトが必要になる場合があります。
Python仮想マシンのバイトコードを解析できるようにするuncompile6プロジェクト。
pyinstallerExtractorは、 pyInstallerアーカイブを抽出するためのツールです。
開梱の一般的な方法
, . . , . — UPX. , .
, , . 1.5 .
-? , ? . , :
, UPX:
:
— , , ;
: , .
, , . :
— , ;
— ( , );
;
.
. . pushad/popad
push
. ESP/RSP, "Hardware Breakpoint" , . , . .
UPX
. UPX:
:
:
ESP — . :
:
, Scylla Hide .
, .
PyInstaller
, . , PyInstaller — , Python . , Python . .
- . Python PyInstaller. :
def main():
print("Hello World!")
if __name__ == '__main__':
main()
pyInstaller
exe
:
pip install pyinstaller
pyinstaller -F hello.py #-F
, , . , , , . .
, ./dist/test.exe
. pyinstallerextractor
uncompile3
:
, . exe
. test.pyc
. hiew
:
, Python. — uncompile6
.
.