inline assembler
-
hallo leute
ich weiß des gehört hier net so ganz hin, aber ein wenig schon
is will folgenden code in _asm übersetzen
#include <windows.h> void mymain() { int str = 'dmc'; WinExec((char*) &str,SW_SHOW); } void main() { }was ja eigendlich kein problem ist, jedoch würde ich gerne das 'cmd'
in ein
db String umwandeln , jedoch unterstüzt das der inline assembler nicht, oder habe ich da nur einen syntax fehler?!?!?
hat jemand von euch da erfahrungen???
-
[ Dieser Beitrag wurde am 22.05.2003 um 19:17 Uhr von MaSTaH editiert. ]
-
Es ist zwar erlaubt aber ich bezweifle dass der Code das macht was du willst...
BTW: "void main()" sollte man nicht machen. Lieber "int main()"
[ Dieser Beitrag wurde am 22.05.2003 um 18:25 Uhr von MaSTaH editiert. ]
-
Ich hab dir mal ein Stück disassembly gepostet:
void mymain() {
push ebp mov ebp,esp sub esp,44h push ebx push esi push edi lea edi,[ebp-44h] mov ecx,11h mov eax,0CCCCCCCCh rep stos dword ptr [edi]int str = 'dmc';
mov dword ptr [ebp-4],646D63hWinExec((char) &str,SW_SHOW);*
mov esi,esp push 5 lea eax,[ebp-4] push eax call dword ptr [__imp__WinExec@8 (0041a66c)] cmp esi,esp call _chkesp (004046dc)}
pop edi pop esi pop ebx add esp,44h cmp ebp,esp call _chkesp (004046dc) mov esp,ebp pop ebp ret[ Dieser Beitrag wurde am 22.05.2003 um 18:33 Uhr von MaSTaH editiert. ]
-
jo danke
aber des war net meine frage .wie man hier sieht
mov dword ptr [ebp-4],646D63h
kann man nur immer 3 bytes moven.
ich hätte aber gerne einen string gemacht mit
DB String
geht das mit dem vc++ inline assembler ????
wenn ja wie
-
Meinst du sowas hier?
mov dword ptr[ebp-4],offset string "cmd" (00417b7c)Hab ich aus dem disassembly wenn man mit const char* anstatt int arbeitet.
Wenn nein: Kannst du etwas konkreter werden oder dich an das Assembler Forum wenden?
-
Warum willst du das eigentlich in ASM machen anstatt in C++???
-
weil ich in meinen c code ein stückchen asm-code brauche( in einen char array)
also
char code[]="\x55\x8b\blablabla";
aber das problem ich will den string zur LAUFzeit ändern also muss der sting in dem asm-code sein und nicht wie bei
mov dword ptr[ebp-4],offset string "cmd" (00417b7c)
in der data section.
geht das irgendwie ????
-
Achso, jetzt weiß ich was du meinst: Du willst mit DefineByte (DB) arbeiten...
// Sowas geht nicht __asm CmdString db "cmd";[ Dieser Beitrag wurde am 22.05.2003 um 19:24 Uhr von MaSTaH editiert. ]