Hallo, ik heb een programma dat geschreven is in ASM, maar dat ik weer opnieuw wil schrijven, maar dan in C++. Nu heb ik alleen een probleem met een deel van de code. Ik zou niet weten hoe ik deze code om moet zetten naar C++.
Wat het probleem is bij mij is dat de eerste 4 karakters (DWORD) neemt van de string die commandline karakters bevat, maar in de omgekeerde volgorde (eigenschap DWORD). Als de commandline dus BManblablablabla bevat dan zal EDI de hexadecimale waarden bevatten in deze volgorde: naMB (dus iets van 6E614D42) en hierop wordt de bewerking uitgevoerd. Het lukt me niet om de waarde van een string om te zetten in de een DWORD waarde die de bovenstaande waarde bevat. (Ook weet ik niet of het mogelijk is om die waarde te SHR'en, maar dat zal vast wel lukken)
Is het daarnaast trouwens ook mogelijk dat als je een stuk ASM code compileert, de waarde die dan in EDI staat terug te krijgen in je normale code en deze dan weet verder gebruiken? Want ik kan perfect de code uitvoeren als ik de bovenstaande code in ASM {} zet en de waarden zijn exact wat ze moeten zijn, maar daarna kan ik niets meer met de waarde in EDI, deze kan ik niet te pakken krijgen buiten de { }.
Tnx,
B-Man
P.S. Het kan zijn dat wat hierboven niet 100% klopt, ik schrijf deze code namelijk uit mijn hoofd hierop, de PC waar de gegevens opstaan heeft namelijk geen internet verbinding.
code:
1
2
3
4
| MOV ESI, DWORD PTR DS:[&String die de commmandline bevat] MOV EDI, DWORD PTR SS:[ESI] SHR EDI, 5 XOR EDI, <willekeurige waarde> |
Wat het probleem is bij mij is dat de eerste 4 karakters (DWORD) neemt van de string die commandline karakters bevat, maar in de omgekeerde volgorde (eigenschap DWORD). Als de commandline dus BManblablablabla bevat dan zal EDI de hexadecimale waarden bevatten in deze volgorde: naMB (dus iets van 6E614D42) en hierop wordt de bewerking uitgevoerd. Het lukt me niet om de waarde van een string om te zetten in de een DWORD waarde die de bovenstaande waarde bevat. (Ook weet ik niet of het mogelijk is om die waarde te SHR'en, maar dat zal vast wel lukken)
Is het daarnaast trouwens ook mogelijk dat als je een stuk ASM code compileert, de waarde die dan in EDI staat terug te krijgen in je normale code en deze dan weet verder gebruiken? Want ik kan perfect de code uitvoeren als ik de bovenstaande code in ASM {} zet en de waarden zijn exact wat ze moeten zijn, maar daarna kan ik niets meer met de waarde in EDI, deze kan ik niet te pakken krijgen buiten de { }.
Tnx,
B-Man
P.S. Het kan zijn dat wat hierboven niet 100% klopt, ik schrijf deze code namelijk uit mijn hoofd hierop, de PC waar de gegevens opstaan heeft namelijk geen internet verbinding.