1

逆アセンブルした DLL があり、プロジェクトが機能することをテストするだけです。もう一度組み立ててみましたが、うまくいきませんでした。

さまざまな種類のエラーが発生しています。

フリーウェアの IDA Pro で逆アセンブルし、ファイルを .asm としてエクスポートして、再度アセンブルしようとしましたが、A86 アセンブラとフラット アセンブラを使用してみました。

DLL を間違って逆アセンブルしているか、間違ったアセンブラを使用している可能性がありますが、誰かがこれに関するツールやリソースを教えてくれませんか?

データ:

A86、IDA 分解に関する分析は行われていません:

C:\Users\Ma\Documents\sap assembler\a86\Temp>a86 TEST.ASM
A86 マクロ アセンブラ、V4.02 Copyright 1995 Eric Isaacson
Source:
TEST.ASM [COMPAT.8
そのようなファイルはありません。

フラット アセンブラ 1.69.32、逆アセンブルで IDA 分析なし:

不正な命令
命令: .686p

フラット アセンブラ 1.69.32、逆アセンブリで行われた IDA 分析:

エラー: 無効な名前
_LARGE_INTEGER::$837407842DC9087486FDFA5FEB63B74E 構造体

a86、逆アセンブル時に IDA で分析を実行:

~^
#ERROR messages will be removed if you leave these first two lines in     @@@@#

ICreateErrorInfo struc ; (sizeof=0x4, standard type)
lpVtbl dd ?     ; offset
ICreateErrorInfo ends


fd_set struc ; (sizeof=0x104, standard type)
fd_count dd ?
fd_array dd 64 dup(?)
fd_set ends


_LARGE_INTEGER::$837407842DC9087486FDFA5FEB63B74E struc ; (sizeof=0x8, standard type)
~              ^
#ERROR 06: Symbol Required                                                @@@@#
LowPart dd ?
HighPart dd ?
_LARGE_INTEGER::$837407842DC9087486FDFA5FEB63B74E ends
~              ^
#ERROR 40: Conflicting Multiple Definition Not Allowed                    @@@@#


LARGE_INTEGER union ; (sizeof=0x8, standard type)
~ ^
#ERROR 01: Unknown Mnemonic                                               @@@@#
anonymous_0 _LARGE_INTEGER::$837407842DC9087486FDFA5FEB63B74E ?
~ ^
#ERROR 01: Unknown Mnemonic                                               @@@@#
u _LARGE_INTEGER::$837407842DC9087486FDFA5FEB63B74E ?
~ ^
#ERROR 01: Unknown Mnemonic 

私のワークフローは間違っていますか?

4

1 に答える 1

1

IDA の出力は、ほとんどが MASM 構文に合わせて調整されていますが、それによっても再アセンブル可能であるとは限りません。バイナリを忠実に表現するために使用する構造の一部は、どのアセンブラでもサポートされていない可能性があります。

生成されたファイルを編集して、受け入れられるようにする必要があります。たとえば、名前のない C の共用体または構造体を表すために使用される ::$ は、アンダースコアなどの識別子の適切な文字に置き換える必要があります。

于 2011-08-22T20:29:37.693 に答える