Defeat DMA For Health

06/21/2005 23:02 Ultimation#1
Use Tsearch easy write to apply the data to the memory, you can then read the players health from a fixed offset, more info in the easy write file
06/21/2005 23:05 bonesaw#2
Geez, you're my hero. xD
Thanks for that, I gotta play with it right on!
06/21/2005 23:15 bonesaw#3
okay, now.. I have it, I opened it on TS, all good.. but how do I use that on my program? How to use it? I may sound pretty lame, but I know nothing about beating DMA..
Also, if it saves in that offset, what if I open more than one CO? the offset will be the same for all CO's? I don't get it..
And it didn't show my hp atm somehow.. think I gotta find some DMA tutorial somewhere xD
06/22/2005 00:02 mtacaci#4
u can use asm routines in ur program,
so call this routine and use the result
have fun
:bandit:
06/22/2005 00:56 bonesaw#5
That's if I knew asm. I'm very new into game hacking, I now C code more into threads, mutex and socket transmission. Now, for memory access and asm, I'm just a no-no. I also know Delphi.. not as well as C tho.
So, how to use asm routines? Just add..
asm { routines here } ?
what would that return? the return would've been at offset 10997? so I would need to make a pointer, to point at (void *)0x10997?
I need any gametrainer sourcecode to use as an example, but I can't find any.. so I'll ask here and hope you guys have patience to help me out. I'm learning to help myself and everyone here anyways.. xD
06/22/2005 09:18 Ultimation#6
Here is the delphi Code To read the memory

Firstly You Need This, The REad Memory Function

Function Readmem(Address:integer):int64;
const
HowMany = 2 ;
var
WindowName : integer;
ProcessId : integer;
buf : Int64;
HandleWindow : Integer;
Read : cardinal;
begin
Buf:=0;
WindowName := FindWindow(nil,'[Conquer]');
If WindowName <> 0 then
begin
GetWindowThreadProcessId(WindowName,@ProcessId);
HandleWindow := OpenProcess(PROCESS_ALL_ACCESS,False,ProcessId);
ReadProcessMemory(HandleWindow,ptr(Address),@buf,H owMany,Read);
closehandle(HandleWindow);
result := buf;
end;
end;


// This Function Uses The DMa To Get The OFfsert However You need the DMA COde Injected First

Function GEtPLayerHP:INteger;
begin
result := readmem(&#036;10997);
end;

;) There are the 2 function You Need To Read The DMA
06/22/2005 12:38 bonesaw#7
I better do it in delphi, it's more user-friendly, with windows and such xD or I could make my code in C and use it on Delphi, that's possible..
but I dont know how to inject code, not asm code, only dlls.. would I have to do that everytime I open a CO? Plus, I would need to edit that code a few, to show how many CO's are open and which one you wanna take (so I would need playername offset as well..)
Geez, you're almost doing the entire program for me, sorry.. >.< I've seen many tutorials about code injecting and DMA, but I don't know much asm (nearly nothing, biggest thing I've done was cracking a very-easy-to-crack program).. I feel bad to ask all that, but I'm a rookie xD
thanks for your support btw xD this forum is awesome =P
06/22/2005 13:26 Ultimation#8
hmmz, let me make the code injection function for delphi
06/22/2005 13:40 Ultimation#9
OK HERE IT si the DMA Injection Functions Just call INjectDMA; to inject the code to solve the DMA
Procedure Patchmem(WindowTitle:Pchar;Address:integer;NumberO fBytes:integer;PokeValue:Dword);
var
WindowName: Integer;
ProcessId: Integer;
ThreadId: Integer;
buf: PChar;
HandleWindow: Integer;
Write: Cardinal;

begin
WindowName := FindWindow(nil, WindowTitle);



ThreadId := GetWindowThreadProcessId(WindowName, @ProcessId);
HandleWindow := OpenProcess(PROCESS_ALL_ACCESS, False, ProcessId);

GetMem(buf, NumberOfBytes);
buf^ := Chr(PokeValue);
WriteProcessMemory(HandleWindow, ptr(Address), buf, NumberOfBytes, Write);
FreeMem(buf);
CloseHandle(HandleWindow);
end;
Procedure InjectDMA;
begin
patchmem('[Conquer]',&#036;10976,5,&#036;578908890D);
patchmem('[Conquer]',&#036;1097b,6,&#036;97090100508B);
patchmem('[Conquer]',&#036;10981,6,&#036;CEE9B75E4600);
patchmem('[Conquer]',&#036;476838,5,&#036;E939A1B9FF);
end;
06/22/2005 13:48 BadBoY_AC#10
Quote:
Originally posted by ultimatehaker@Jun 22 2005, 13:40
OK HERE IT si the DMA Injection Functions Just call INjectDMA; to inject the code to solve the DMA
Procedure Patchmem(WindowTitle:Pchar;Address:integer;NumberO fBytes:integer;PokeValue:Dword);
var
WindowName: Integer;
ProcessId: Integer;
ThreadId: Integer;
buf: PChar;
HandleWindow: Integer;
Write: Cardinal;

begin
WindowName := FindWindow(nil, WindowTitle);



ThreadId := GetWindowThreadProcessId(WindowName, @ProcessId);
HandleWindow := OpenProcess(PROCESS_ALL_ACCESS, False, ProcessId);

GetMem(buf, NumberOfBytes);
buf^ := Chr(PokeValue);
WriteProcessMemory(HandleWindow, ptr(Address), buf, NumberOfBytes, Write);
FreeMem(buf);
CloseHandle(HandleWindow);
end;
Procedure InjectDMA;
begin
patchmem('[Conquer]',&#036;10976,5,&#036;578908890D);
patchmem('[Conquer]',&#036;1097b,6,&#036;97090100508B);
patchmem('[Conquer]',&#036;10981,6,&#036;CEE9B75E4600);
patchmem('[Conquer]',&#036;476838,5,&#036;E939A1B9FF);
end;
works... thx ultimate
06/22/2005 16:55 kokoman#11
emmm what programs used to apply these?
06/22/2005 18:42 Bioready#12
sry for the spam ;/ but all this hacker talk makes me feel like a complete nub xD [img]text2schild.php?smilienummer=1&text=NOOOOOOOOOOOOO OOOOOOOB' border='0' alt='NOOOOOOOOOOOOOOOOOOOOB' />
06/22/2005 19:46 xBlacKTigeRx#13
[img]text2schild.php?smilienummer=1&text=me=noob' border='0' alt='me=noob' />

will this make a number appear above the character, or give all players a health bar like mobs, or what? ss?


or am I just SEVERLY confused? :?
06/22/2005 19:53 roundknot#14
I am confused. I think I will stick to AutoIt for a bit because I just figured out how to read memory with it! yay.
06/22/2005 21:10 Ultimation#15
it gets ur player hp i only made it for the health checker ;)