Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - C++ e ASM
Forum - C/C++ - C++ e ASM

Avatar
Galatolo_Federico (Ex-Member)
Pro


Messaggi: 91
Iscritto: 23/06/2007

Segnala al moderatore
Postato alle 14:40
Lunedì, 14/01/2008
Scusate ragazzi se è tanto che non mi faccio sentire ma ho avuto da fare....

ecco il problema: perche se faccio un programma ad esempio :
Codice sorgente - presumibilmente C/C++

  1. int main(){
  2. printf ("%s","Ciauuu - Benvenuto in GalatolOS !\n");
  3. printf ("%s","Come Ti Chiami : ");
  4. char nome[500];
  5. scanf("%s",nome);
  6. printf ("%s","Ciao ",nome);
  7. }



e poi prendo il codice assembly con GDB
Codice sorgente - presumibilmente Delphi

  1. federico@crash-overflow:~/GalatolOS$ gdb main
  2. GNU gdb 6.6-debian
  3. Copyright (C) 2006 Free Software Foundation, Inc.
  4. GDB is free software, covered by the GNU General Public License, and you are
  5. welcome to change it and/or distribute copies of it under certain conditions.
  6. Type "show copying" to see the conditions.
  7. There is absolutely no warranty for GDB.  Type "show warranty" for details.
  8. This GDB was configured as "i486-linux-gnu"...
  9. Using host libthread_db library "/lib/tls/i686/cmov/libthread_db.so.1".
  10. (gdb) disass main
  11. Dump of assembler code for function main:
  12. 0x08048208 <main+0>:    lea    0x4(%esp),%ecx
  13. 0x0804820c <main+4>:    and    $0xfffffff0,%esp
  14. 0x0804820f <main+7>:    pushl  0xfffffffc(%ecx)
  15. 0x08048212 <main+10>:   push   %ebp
  16. 0x08048213 <main+11>:   mov    %esp,%ebp
  17. 0x08048215 <main+13>:   push   %ecx
  18. 0x08048216 <main+14>:   sub    $0x214,%esp
  19. 0x0804821c <main+20>:   mov    %gs:0x14,%eax
  20. 0x08048222 <main+26>:   mov    %eax,0xfffffff8(%ebp)
  21. 0x08048225 <main+29>:   xor    %eax,%eax
  22. 0x08048227 <main+31>:   movl   $0x809e4e8,(%esp)
  23. 0x0804822e <main+38>:   call   0x8048cf0 <puts>
  24. 0x08048233 <main+43>:   movl   $0x809e50a,0x4(%esp)
  25. 0x0804823b <main+51>:   movl   $0x809e51c,(%esp)
  26. 0x08048242 <main+58>:   call   0x8048c90 <printf>
  27. 0x08048247 <main+63>:   lea    0xfffffe04(%ebp),%eax
  28. 0x0804824d <main+69>:   mov    %eax,0x4(%esp)
  29. 0x08048251 <main+73>:   movl   $0x809e51c,(%esp)
  30. 0x08048258 <main+80>:   call   0x8048cc0 <scanf>
  31. 0x0804825d <main+85>:   lea    0xfffffe04(%ebp),%eax
  32. 0x08048263 <main+91>:   mov    %eax,0x8(%esp)
  33. 0x08048267 <main+95>:   movl   $0x809e51f,0x4(%esp)
  34. ---Type <return> to continue, or q <return> to quit---
  35. 0x0804826f <main+103>:  movl   $0x809e51c,(%esp)
  36. 0x08048276 <main+110>:  call   0x8048c90 <printf>
  37. 0x0804827b <main+115>:  mov    0xfffffff8(%ebp),%edx
  38. 0x0804827e <main+118>:  xor    %gs:0x14,%edx
  39. 0x08048285 <main+125>:  je     0x804828c <main+132>
  40. 0x08048287 <main+127>:  call   0x8050d70 <__stack_chk_fail>
  41. 0x0804828c <main+132>:  add    $0x214,%esp
  42. 0x08048292 <main+138>:  pop    %ecx
  43. 0x08048293 <main+139>:  pop    %ebp
  44. 0x08048294 <main+140>:  lea    0xfffffffc(%ecx),%esp
  45. 0x08048297 <main+143>:  ret    
  46. End of assembler dump.
  47. (gdb)



lo metto in un file (boot.asm) non va?

boot.asm:
Codice sorgente - presumibilmente VB.NET

  1. lea    0x4(%esp),%ecx
  2. and    $0xfffffff0,%esp
  3. pushl  0xfffffffc(%ecx)
  4. push   %ebp
  5. mov    %esp,%ebp
  6. push   %ecx
  7. sub    $0x214,%esp
  8. mov    %gs:0x14,%eax
  9. mov    %eax,0xfffffff8(%ebp)
  10. xor    %eax,%eax
  11. movl   $0x809e4e8,(%esp)
  12. call   0x8048cf0 <puts>
  13. movl   $0x809e50a,0x4(%esp)
  14. movl   $0x809e51c,(%esp)
  15. call   0x8048c90 <printf>
  16. lea    0xfffffe04(%ebp),%eax
  17. mov    %eax,0x4(%esp)
  18. movl   $0x809e51c,(%esp)
  19. call   0x8048cc0 <scanf>
  20. lea    0xfffffe04(%ebp),%eax
  21. mov    %eax,0x8(%esp)
  22. movl   $0x809e51f,0x4(%esp)
  23. movl   $0x809e51c,(%esp)
  24. call   0x8048c90 <printf>
  25. mov    0xfffffff8(%ebp),%edx
  26. xor    %gs:0x14,%edx
  27. je     0x804828c <main+132>
  28. call   0x8050d70 <__stack_chk_fail>
  29. add    $0x214,%esp
  30. pop    %ecx
  31. pop    %ebp
  32. lea    0xfffffffc(%ecx),%esp
  33. ret



PS. esiste un altro programma per prendere il codice assembly???

GRAZIEEEE

PM Quote
Avatar
Devid H.C.B.X. (Ex-Member)
Newbie


Messaggi: 6
Iscritto: 21/01/2008

Segnala al moderatore
Postato alle 20:51
Lunedì, 21/01/2008
Sì esiste!
prova a scrivere un programma in c++
poi scarica un disassembler,
prova così a ricavare il codice sorgente in ASM

enjoy!!

Devid H.C.B.X.

PM Quote
Avatar
Dark_Limit (Ex-Member)
Expert


Messaggi: 220
Iscritto: 15/01/2008

Segnala al moderatore
Postato alle 21:03
Lunedì, 21/01/2008
Il fatto che non ti funziona è perchè hai incluso in un file .asm assembly i caratteri '%' al massimo prova a toglierli e linka di nuovo il file sorgente in asm se non ti funziona ti scarichi un disassemblatore qualunque consiglio wdasm..:k:

PM Quote