質問:
DOS.COMファイルの逆コンパイル手法
ESR
2014-03-05 04:27:25 UTC
view on stackexchange narkive permalink

当時好きだったDOSフリーウェアゲームのバイナリコピー( Firefighter FIRE.COM としてダウンロード可能)を見つけましたが、ソースコードは利用できません。 Unixの呪いを使用してCまたはPythonで再実装したいと思います。その部分を実行する能力は十分にありますが、DOS.COMファイルバイナリをリバースエンジニアリングおよび逆コンパイルするためのツールについてはほとんど何も知りません。

.COMはヘッダーのない生のマシンコードであるというドキュメントを参照して、 objdump -D -b binary -m i386 を実行してみました。結果は有効に見えませんでした。 objdump -D -b binary -m i8086 –adjust-vma = 0×100 は、 ndisasm -b 16 -a -o0×100 でNASMを使用した場合と同じようにトリックを実行するように見えました。 code>とそれらの両方がもっともらしいアセンブリリストを生成するようです。

しかし、理想的には、 as-で逆コンパイルしてCにレンダリングするものを探しています。 if-it-were-assembler スタイルで、DOSトラップに生成された変数名と便利な注釈が付いています。そのような獣は存在しないかもしれないことを理解していますが、たまたま私は推奨事項を探しています。

REへようこそ!サイト上の既存の質問を検索して確認しましたか?
これは、「ハードウェアまたはソフトウェアのリバースエンジニアリングに一般的に使用されるツール」の範囲に含まれないのはなぜですか。
[既存の質問に目を通しましたか?](http://reverseengineering.stackexchange.com/q/1854/189)すでに提供されているソリューションのいずれかを試しましたか?既存の質問が失敗した場所/理由は何ですか?この質問は、これまでの研究をまったく示していません。
質問を更新しました。保留状態を解除できますか?
たぶんあなたはここでいくつかのヒントを得ることができますhttp://www.program-transformation.org/Transform/MachineCodeDecompilers
同様の質問に対するこの回答(http://reverseengineering.stackexchange.com/a/3075/4113)によると、利用可能な優れたDOS逆コンパイラは*ありません*;(
IDAにロードしてみましたか?トラップ/システムコールに注釈が付けられていると思います。明らかに完全な逆コンパイルではありませんが、grkvitが言ったように、おそらく何もありません-私は確かにそれを聞いたことがありません。
逆コンパイラーはありませんが、DosBoxデバッガーは非常に優れており、理解を深めるのに役立ちます。そしてもちろん、その過程で独自の逆コンパイラーを作成できるかもしれません。あなた自身の質問への答えでそれをここに提示することを忘れないでください。
比較的単純なゲームのようです。逆コンパイルは不要なステップだと思います。再実装したいだけなら、最初から書き直してみませんか? Pythonで利用可能なグラフィックライブラリがあれば、週末以上かかることはありません。
五 答え:
Paddywhacker
2014-04-14 09:52:36 UTC
view on stackexchange narkive permalink

IDA Proおよび他の多くの逆アセンブラは、ファイルが圧縮されていないか、難読化されていないことを前提として、ファイルを逆アセンブルします。しかし、これは実用的なアセンブリ言語プログラムを作成するための最初のステップにすぎません。これをより高い言語に翻訳する場合に必要になります。

基本的に2つのプロジェクトを検討しています。 1つ目は、ゲームの実用的なアセンブリ言語バージョンを作成することです。 2つ目は、ゲームの仕組みとロジックをC ++などに変換することです。 1つ目は2つ目よりも簡単です。

John Källén
2015-07-25 13:00:38 UTC
view on stackexchange narkive permalink

私の答えは少し遅れています。このサイトの新参者。逆コンパイラプロジェクトは、MS-DOSEXEおよびCOMバイナリを逆コンパイルするために開始されました。プロジェクトには、コマンドラインとGUIツールの両方があります。

https://sourceforge.net/projects/decompiler/

次のコマンドを使用しますコマンドラインツールを使用してCOMプログラムを逆コンパイルします。

  decompile --default-to ms-dos-com myprog.com  

GUIで、メニューコマンド File > Open as ... を使用してCOMファイルを開き、0800:0100のような開始アドレスを指定します。

blabb
2014-03-21 05:50:38 UTC
view on stackexchange narkive permalink

16ビットcomプログラムを逆コンパイルする獣は存在しません
デバッグしたい場合はladsoftからgrdbを探してください
すべての
int 21 /のralfbrowns割り込みリストのコピーも手元にありますint 10 SetCursor / GetCursorの呼び出し

また、ダウンロードしたexeの名前を8dot3互換に変更してください
(名前は8文字未満)

  GRDB.EXEfirefi。 com Get RealDebuggerバージョン9.6Copyright(c)1997-2009 David Lindauer(LADSoft)GRDBには、詳細については「?g」と入力してください。これはフリーソフトウェアであり、特定の条件下で再配布できます。詳細については、「?gr」と入力してくださいDPMI開始コードhookedHistory enabledeax:00000000 ebx:00000000 ecx:00007500 edx:00000000 esi:00000000 edi:00000000ebp:00000000 esp:0000FFEE eip:00000100 flag:00000202 NV UP EI PL NZ NA PO NCds:1F25 es :1F25 fs:1F25 gs:1F25 ss:1F25 cs:1F251F25:0100 E9 25 27 jmp 2828サイズ:00007500->  
tuantm
2014-08-29 12:04:41 UTC
view on stackexchange narkive permalink

アプリケーション(Fire.COM)を確認するとき、暗号化されたステージがあるため、Turbo Debugger5.0などのDOSデバッガーを使用してこのアプリケーションをデバッグおよび反転する必要があると思います。これらのアプリケーションをCコードに「逆コンパイル」したい場合、それは非常に困難です。私は過去(2008)にいくつかのツールを試しましたが、それを行うための優れたツールはありませんでした。 Cソースも入手しましたが、インラインアセンブリがたくさんありました。

user4069
2014-08-29 13:14:29 UTC
view on stackexchange narkive permalink

最近、.COMと.EXEを単純な「擬似コード」に変換するDOSプログラムを見つけました。プログラムは--- exe2c.zip

http:// wwwです。 codeforge.com/dlpre/201558/cb2e19437871.zip__.html

「優れた」ツールではありませんが、便利だと思いました。まずENVMNU.EXEを実行してから、.COMまたは.EXEファイル名.---(ヒント?)より良い結果が必要な場合は、個々のモジュール(DOSからASMへのモジュールなど)を使用し、ASMの不一致を手動で編集してから、ASMからCへのモジュールにフィードして結果を観察します。

-William Gallant



このQ&Aは英語から自動的に翻訳されました。オリジナルのコンテンツはstackexchangeで入手できます。これは、配布されているcc by-sa 3.0ライセンスに感謝します。
Loading...