OVH Cloud OVH Cloud

[Debugging] Assembleur en pas à pas

15 réponses
Avatar
TigrouMeow
Hello !

Je reviens avec une question sur le développement de debugger
d'application :)

Pour l'instant j'arrive juste à toper des événenements de debug
avec WaitForDebugEvent et à afficher quelques informations
relatives à ceux-ci, mais ce que j'aimerais faire maintenant c'est
de pouvoir afficher la commande en ASM courante et pouvoir
avancer pas à pas en continuant à les afficher... comment est-ce
possible ?

Si vous avez des URL magiques, je suis super preneur, ça serait
super ! Des explications aussi, ou voir du code source :)

Merci beaucoup !

--
Meow ;o)

10 réponses

1 2
Avatar
yarocco
Pierre Maurette wrote:
AMcD® a écrit :

TigrouMeow wrote:


mais ce que j'aimerais faire maintenant c'est
de pouvoir afficher la commande en ASM courante et pouvoir
avancer pas à pas en continuant à les afficher... comment est-ce
possible ?





Il n'y a qu'une solution, écrire ton propre désassembleur.



Non, la solutiuon est dans Delphi ....



Euh...pas compris la (a part si c'est ironique et que ca fait reference
a un ancien post qui vous "affrontait" sur delphi ?!)
Avatar
yarocco
TigrouMeow wrote:
mais ce que j'aimerais faire maintenant c'est
de pouvoir afficher la commande en ASM courante et pouvoir
avancer pas à pas en continuant à les afficher... comment est-ce
possible ?

Si vous avez des URL magiques, je suis super preneur, ça serait
super ! Des explications aussi, ou voir du code source :)

Merci beaucoup !




Salut, je ne sais pas du tout en quel langage tu codes mais je suis
assez interesse par le fait de programmer un desassembleur mais j'ai
jamais eu le courage de commencer a referencer tous les opcodes avec les
ModR/M et SIB. Donc si ca t'interesse, on peut peut etre s'y mettre a
plusieurs.
Avatar
yarocco
TigrouMeow wrote:
Bon à la limite si je peux pas faire ça, vous avez une explication simple à
me faire si je veux backtracer lorsque je reçois un évènement de debug ?
Comme ça en cas d'erreur, avec un peu d'espoir et un peu de temps,
je pourrais indiquer où l'erreur a eu lieu... merci beaucoup beaucoup si
vous pouvez m'aider, je me perds un peu dans mes recherches googliennes.




Si tu veux backtracer, y'a deja un petit utilitaire sympa : un dumper de
pile. Ca permet de voir quelles fonctions ont ete appellees. (je l'ai
implemente en Delphi mais quelqu'un de ce forum l'avait fait bien avant
moi en c++ si tu veux).
Avatar
AMcD®
TigrouMeow wrote:

mais ce que j'aimerais faire maintenant c'est
de pouvoir afficher la commande en ASM courante et pouvoir
avancer pas à pas en continuant à les afficher... comment est-ce
possible ?



Il n'y a qu'une solution, écrire ton propre désassembleur.

Si vous avez des URL magiques, je suis super preneur, ça serait
super ! Des explications aussi, ou voir du code source :)



Heu du code source de désassembleur gratuit, ça doit pas courir les rues !
Cherche du côté de Nasm, etc.Mais le gros problème est que tu risques de
trouver du "vieux" code, genre pour 386. Un désassembleur moderne, c'est
plus complexe. Beaucoup de combinaisons, d'opcodes, sont aujourd'hui
possibles, utilisées qui étaient illégitimes auparavant. D'ailleurs, c'est
avec ce genre de gag qu'on plante les débuggueurs actuels :-). Peu de
désassembleurs ou débuggueurs sont exhaustifs aujourd'hui. Je pense pouvoir
affirmer que je te plante à peu près n'importe lequel d'entre eux. Entendons
nous bien, par exemple leur faire afficher des instructions fausses.

Je te souhaite bon courage.

--
AMcD®

http://arnold.mcdonald.free.fr/
Avatar
Pierre Maurette
AMcD® a écrit :
TigrouMeow wrote:


mais ce que j'aimerais faire maintenant c'est
de pouvoir afficher la commande en ASM courante et pouvoir
avancer pas à pas en continuant à les afficher... comment est-ce
possible ?




Il n'y a qu'une solution, écrire ton propre désassembleur.


Non, la solutiuon est dans Delphi ....
--
Pierre
Avatar
Pierre Maurette
yarocco a écrit :
Pierre Maurette wrote:

AMcD® a écrit :

TigrouMeow wrote:


mais ce que j'aimerais faire maintenant c'est
de pouvoir afficher la commande en ASM courante et pouvoir
avancer pas à pas en continuant à les afficher... comment est-ce
possible ?






Il n'y a qu'une solution, écrire ton propre désassembleur.




Non, la solutiuon est dans Delphi ....




Euh...pas compris la (a part si c'est ironique et que ca fait reference
a un ancien post qui vous "affrontait" sur delphi ?!)


0 == 0
(pour ancien post, sinon pas eu d'affrontement, me suis juste fait insulté).
--
Pierre
Avatar
TigrouMeow
"yarocco" a écrit dans le message de news:
423f26da$0$22685$
TigrouMeow wrote:
mais ce que j'aimerais faire maintenant c'est
de pouvoir afficher la commande en ASM courante et pouvoir
avancer pas à pas en continuant à les afficher... comment est-ce
possible ?

Si vous avez des URL magiques, je suis super preneur, ça serait
super ! Des explications aussi, ou voir du code source :)

Merci beaucoup !




Salut, je ne sais pas du tout en quel langage tu codes mais je suis assez
interesse par le fait de programmer un desassembleur mais j'ai jamais eu
le courage de commencer a referencer tous les opcodes avec les ModR/M et
SIB. Donc si ca t'interesse, on peut peut etre s'y mettre a plusieurs.



En fait je voulais implémenter ça dans un de mes projets pour la fin de
semaine mais à priori c'est mal barré ! ;) Sinon c'est en C++ !
Avatar
AMcD®
Pierre Maurette wrote:

(pour ancien post, sinon pas eu d'affrontement, me suis juste fait
insulté).



Vas-y, je t'écoute, où et quand je t'ai insulté ?

Souffre que je recopie ici ma réponse à ton psot dans ce fameux débat.

"N'importe quoi, là, ça devient vraiment n'importe quoi. Delphi, c'est du
Pascal. Si parce que c'est dans Delphi c'est du Delphi, il n'y a plus de
limites..."

Montre-moi l'insulte s'il te plaît. J'ai du mal à la voir...

--
AMcD®

http://arnold.mcdonald.free.fr/
Avatar
TigrouMeow
"AMcD®" a écrit dans le message de news:
423f2019$0$2047$
TigrouMeow wrote:

mais ce que j'aimerais faire maintenant c'est
de pouvoir afficher la commande en ASM courante et pouvoir
avancer pas à pas en continuant à les afficher... comment est-ce
possible ?



Il n'y a qu'une solution, écrire ton propre désassembleur.

Si vous avez des URL magiques, je suis super preneur, ça serait
super ! Des explications aussi, ou voir du code source :)



Heu du code source de désassembleur gratuit, ça doit pas courir les rues !
Cherche du côté de Nasm, etc.Mais le gros problème est que tu risques de
trouver du "vieux" code, genre pour 386. Un désassembleur moderne, c'est
plus complexe. Beaucoup de combinaisons, d'opcodes, sont aujourd'hui
possibles, utilisées qui étaient illégitimes auparavant. D'ailleurs, c'est
avec ce genre de gag qu'on plante les débuggueurs actuels :-). Peu de
désassembleurs ou débuggueurs sont exhaustifs aujourd'hui. Je pense
pouvoir affirmer que je te plante à peu près n'importe lequel d'entre eux.
Entendons nous bien, par exemple leur faire afficher des instructions
fausses.



Bon à la limite si je peux pas faire ça, vous avez une explication simple à
me faire si je veux backtracer lorsque je reçois un évènement de debug ?
Comme ça en cas d'erreur, avec un peu d'espoir et un peu de temps,
je pourrais indiquer où l'erreur a eu lieu... merci beaucoup beaucoup si
vous pouvez m'aider, je me perds un peu dans mes recherches googliennes.
Avatar
Pierre Maurette
In-Reply-To: <423f2cfa$0$2773$
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 8bit

AMcD® a écrit :
Pierre Maurette wrote:


(pour ancien post, sinon pas eu d'affrontement, me suis juste fait
insulté).




Vas-y, je t'écoute, où et quand je t'ai insulté ?

Souffre que je recopie ici ma réponse à ton psot dans ce fameux débat.

"N'importe quoi, là, ça devient vraiment n'importe quoi. Delphi, c'est du
Pascal. Si parce que c'est dans Delphi c'est du Delphi, il n'y a plus de
limites..."

Montre-moi l'insulte s'il te plaît. J'ai du mal à la voir...


Insulte et surtout paranoïa:

<cit>
Pierre Maurette wrote:

>> BASM, c'est dans Delphi, c'est du Delphi.

N'importe quoi, là, ça devient vraiment n'importe quoi. Delphi, c'est du
Pascal. Si parce que c'est dans Delphi c'est du Delphi, il n'y a plus de
limites...

Vu la tournure que prend la discussion, mauvaise foi, subjectivité à
tout crin, refus absolu de comprendre ce que j'écris et insultes, le
sujet est désormais clos pour moi. Ça va, j'ai compris, je ne suis pas
tout à fait idiot, vous êtes tous passé à Delphi, donc c'est génial,
professionnel et puisqu'il se trouve même des gens qui gagnent bien leur
vie avec VB, alors VB aussi est génial et professionnel. Et tant pis si
d'autres pensent différemment que vous (dame ! vous gagnez de l'argent,
vous avez donc raison !) ou ont des besoins différents des vôtres.

Vous êtes tous beaux et seul votre avis (rarement argumenté d'ailleurs,
mais tant pis, on fera avec) fait foi. OK, c'est bon pour moi.

Maintenant, faites-moi plaisir, plonkez-moi, ça vous évitera d'avoir à
me lire.

Merci.
</cit>

En réponse à *un seul* message, dans lequel je faisais simplement
remarquer que (jusqu'à la version 7) BASM (assembleur intégré) était une
couche importante de Delphi. Ce qui ne demande qu'à être développé.
--
Pierre
1 2