Gå til innhold

Anbefalte innlegg

Hei!

 

Jeg har nå en asm-kildekode som utfører en modifisering av et gitt mål. Under ".data" har den følgende string "Sequence db 75h,41h,0E8h,7Ah". Det er altså de bytene jeg skal modifisere de originale med. Men mitt ønske er at brukeren selv skal få velge hva patcheren skal modifisere med.

 

En løsninge jeg tenkte på var å bruk GetItemTextA elns, på en Edit-box, men det blir jo gjort om til ASCII osv, så den stringen blir jo ubrukelig!? Bruker WriteFile.

 

Så, hvordan løser jeg dette problemet?

Lenke til kommentar
  • 2 uker senere...
Videoannonse
Annonse
  • 2 år senere...

Hver byte i hex-string format er 2 bytes lang uten hex terminatorer slik som 0xffh, vil kunne leses som ff i editboksen. Så hver hex byte er 2 bytes lang i string format. Så bruker du en funksjon for å konvertere hexstring til heltall. Hvis du bruker unicode editbokser så må du konvertere widestring til ansi først.

 

Om du lar brukeren skrive base 10 (heltall/integer) istedet for base 16 (hex) så kan du gjøre konverteringen enklere, ascii representasjon av tallet 0 er 48. Du tar simpelt hen bare tallet i editboksen og subtraherer 48 så har du tallets integer variant umiddelbart. For å optimalisere dette så sletter du simpelt hen bare bit 5 og 6 så er konverteringen ferdig :thumbup:

 

hvis du har lagret ascii tallet i ax så gjør du bare følgende:

 

and ax, 0Fh

 

EN simpel instruksjon og du har konvertert ett tall fra string format til integer format. Det gjelder å tenke når en koder asm :tease:

 

Har du mange tall du skal konvertere så putt 0Fh i ett 16 bit register og kjør heller slik:

 

and ax, cx

Endret av LonelyMan
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...