実行可能ファイルの解凍

こんにちは、Khabrovites。コース「リバースエンジニアリング。基本」の一環として、Alexander Kolesnikov(情報化オブジェクトの複雑な保護のスペシャリスト)が記事を作成しました。



また、「ドライバーの脆弱性の悪用」というトピックに関する公開ウェビナーに全員を招待しますパート1 "ウェビナーの参加者は、専門家と一緒に、ドライバーオーバーフローの脆弱性とカーネルモードでのエクスプロイト開発の詳細を分析します。






この記事では、単純なリバースエンジニアリングツールを使用してパックされた実行可能ファイルを分析する方法について説明します。実行可能ファイルをパックするために使用されるいくつかのパッカーについて説明します。すべての例はWindowsOSで実行されますが、調査したアプローチはどのOSにも簡単に移植できます。





ツールキットとOSの構成

テストには、Windowsを実行している仮想マシンを使用します。ツールキットには、次のアプリケーションが含まれます。





  • x64dbgデバッガー;





  • x64dbgScyllaプラグインがデフォルトでインストールされています。





  • hiewデモ;





実行可能ファイルを解凍する最も速くて簡単な方法は、デバッガーを使用することです。ただし、Pythonプログラミング言語も検討するため、次のプロジェクトが必要になる場合があります。





  • Python仮想マシンのバイトコードを解析できるようにするuncompile6プロジェクト。





  • pyinstallerExtractorは、 pyInstallerアーカイブを抽出するためツールです。





開梱の一般的な方法

, . . , . — UPX. , .





, , . 1.5 .





-? , ? . , :





, UPX:





:





  1. — , , ;





  2. : , .





, , . :





  1. — , ;





  2. — ( , );





  3. ;





  4. .





. . 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



.





.






"Reverse-Engineering. Basic".





« . 1».








All Articles