[c++] no operation

10/12/2011 20:38 DreamStyler#1
Heyho Leute! Ich habe mir ein paar adressen mit meinem disassembler rausgesucht und wollte diese durch "nop" ersetzen? Jedoch weiß ich nicht, wie das geht, bzw. funktioniert meine Idee nicht. Ich hatte diese:

void ItemTake()
{
HWND hWinampAL = FindWindow(NULL,"METIN2");
WriteProcessMemory(hWinampAL, (LPVOID)0x0044AAA2, (LPCVOID)0x90, 1, NULL);
}
Diese Funktion sollte doch eigentlich die nop (0x90) einsetzen, jedoch funktioniert dies nicht. Compilen funktioniert, daran liegt es nicht.

Fg
10/12/2011 20:46 KingClem™#2
Lösung aus der WR Scene:
Credits => Weiß ich nicht mehr xD is schon jahre pbl.

Code:
void* ASM( void* pvAddress, const void* pvBuffer, size_t stLen )
{
MEMORY_BASIC_INFORMATION mbi;
VirtualQuery( pvAddress, &mbi, sizeof( mbi ) );
VirtualProtect( mbi.BaseAddress, mbi.RegionSize, PAGE_EXECUTE_READWRITE, &mbi.Protect );
void* pvRetn = memcpy( pvAddress, pvBuffer, stLen );
VirtualProtect( mbi.BaseAddress, mbi.RegionSize, mbi.Protect, &mbi.Protect );
FlushInstructionCache( GetCurrentProcess( ), pvAddress, stLen );
return pvRetn;
}
ASM((void*)0x0044AAA2,(PBYTE)"\x90",1);
10/12/2011 20:51 Medix#3
Quote:
=> No Respect <=

C&P Coder
aber selber kräftig c&p machen. you're awesome
zudem was soll er mit deinem code anfangen? Sein code sieht mir nicht nach dll injection aus


@DreamStyler
[Only registered and activated users can see links. Click Here To Register...]

Du brauchst einen handle zum process nicht den handle vom fenster.
10/12/2011 21:25 DreamStyler#4
Quote:
Originally Posted by Medix View Post
aber selber kräftig c&p machen. you're awesome
zudem was soll er mit deinem code anfangen? Sein code sieht mir nicht nach dll injection aus


@DreamStyler
[Only registered and activated users can see links. Click Here To Register...]

Du brauchst einen handle zum process nicht den handle vom fenster.
Vielen Dank! Jedoch wird mir nicht wirklich klar, wie ich ein handle vom Prozess erzeugen kann. Kannst du mir helfen?

Fg
10/12/2011 21:52 Medix#5
[Only registered and activated users can see links. Click Here To Register...]
10/13/2011 14:30 MrSm!th#6
Ist die Instruction, die du überschreibst auch nur ein Byte lang?
10/13/2011 14:44 ms​#7
Quote:
Originally Posted by DreamStyler View Post
Code:
WriteProcessMemory(hWinampAL, (LPVOID)0x0044AAA2, (LPCVOID)0x90, 1, NULL);
Ich meine, dass das so nicht geht.

Code:
char c = 0x90;
WriteProcessMemory(hWinampAL, (LPVOID)0x0044AAA2, &c, 1, NULL);
10/13/2011 22:00 MrSm!th#8
Exakt, so wie es da steht, würde an Adresse 0x90 gelesen werden, was eine Exception verursachen würde.

Der Fehler wird seltsamerweise häufig besonders im Bereich von Warrock Hacking gemacht, dass einfach mal ein fester Wert in nen Pointer gecasted wird oder dass die Adresse von nem festen Wert versucht wird, zu übergeben.
10/13/2011 23:58 Tyrar#9
evtl. wäre noch VirtualProtectEx nötig, denke dass WirteProcessMemory das nicht von selbst erledigt ;)
10/14/2011 13:21 ms​#10
Quote:
Originally Posted by HeavyHacker View Post
evtl. wäre noch VirtualProtectEx nötig, denke dass WirteProcessMemory das nicht von selbst erledigt ;)
Ich denke doch.
10/14/2011 20:51 Threk#11
WirteProcessMemory erledigt das schon selbst, daher wird VirtualProtect/unprotect nicht benötigt^^
Musste man sich nicht Debug Rechte holen, wenn man mit RPM arbeitet( Openprocess) ?

Habe in letzter Zeit nur noch injected gearbeitet :x

//Edit:
Wie auf msdn steht:
Code:
hProcess [in]

    A handle to the process memory to be modified. The handle must have PROCESS_VM_WRITE and PROCESS_VM_OPERATION access to the process.
Für Processopen siehe:
[Only registered and activated users can see links. Click Here To Register...]
10/14/2011 22:56 MrSm!th#12
Nein, mit Write oder ALL_ACCESS ist es was Rechte angeht getan.