2011-08-22 7 views
0

J'ai une DLL que j'ai démonté, et juste pour tester que mon projet va fonctionner. J'ai essayé de l'assembler encore mais sans chance.désassembler, modifier et assembler le fichier DLL

Je reçois différents types d'erreurs. Le démontage que j'ai fait avec IDA Pro freeware, puis exporté le fichier sous forme de .asm, pour essayer de l'assembler à nouveau J'ai essayé d'utiliser l'assembleur A86 et l'assembleur plat. Peut-être que je suis en train de désassembler la DLL ou d'utiliser le mauvais assembleur, mais est-ce que quelqu'un pourrait peut-être me diriger vers des outils et/ou des ressources à ce sujet?

données:

A86, IDA aucune analyse effectuée sur le démontage:

C:\Users\Ma\Documents\sap assembler\a86\Temp>a86 TEST.ASM
A86 macro assembler, V4.02 Copyright 1995 Eric Isaacson
Source:
TEST.ASM [COMPAT.8
Sorry, no such file

assembleur Flat 1.69.32, IDA aucune analyse effectuée sur le démontage:

illegal instruction
instruction: .686p

assembleur plat 1,69. 32, analyse IDA effectuée au démontage:

error: invalid name
_LARGE_INTEGER::$837407842DC9087486FDFA5FEB63B74E struc

A86, avec l'analyse faite dans l'IDA sur DEMONTAGE:

~^ 
#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 

est mon flux de travail ne va pas?

+0

Pouvez-vous spécifier les erreurs que vous obtenez? – m0skit0

Répondre

0

La sortie d'IDA est principalement orientée vers la syntaxe MASM mais n'est pas garantie pour être réassemblée même par elle. Certaines des constructions qu'il utilise pour représenter fidèlement le binaire pourraient ne pas être supportées par un assembleur.

Vous devrez éditer le fichier produit pour le rendre acceptable. Par exemple, le symbole :: $ utilisé pour représenter des unions ou structures C sans nom devra être remplacé par des caractères appropriés pour les identificateurs, par ex. un trait de soulignement.

+0

Cela semble être un grand défi, l'assemblage est 10000+ lignes. Y a-t-il des assembleurs qui correspondent au code produit par un désassembleur? J'ai aussi regardé changer l'assemblage, ce qui semble changer l'hexagone également, et ensuite faire une sorte de patch hexadécimal sur le fichier d'origine? Est-ce que tout ceci semble plausible? –

+0

Oui, patcher le fichier est probablement une tâche beaucoup plus facile si vous avez besoin de faire un petit changement. –

+0

Hey Igor, merci pour l'aide, vous pourriez ne pas avoir des liens vers des articles de "tutoriel" à ce sujet? :) Ou suis-je au moins en utilisant les bons outils pour le travail :) –