Autor Beitrag
uall@ogc
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1826
Erhaltene Danke: 11

Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
BeitragVerfasst: Sa 26.02.05 14:24 
geeigenet für dll injection in andere prozesse, API hooks etc.

funktionen:

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
201:
202:
203:
204:
205:
206:
207:
208:
209:
210:
211:
212:
function mygetOwnModuleHandle: integer; stdcall;
{
  gets module handle of calling module
  [result]  module handle of calling module
}


function myLoadLibrary(dllname: pchar): integer; stdcalloverload;
{
  load a library which is not listed as a dll
  [dllname]  name of library
  [result]   handle of library
}

function myLoadLibrary(dllname, name: pchar): integer; stdcalloverload;
{
  load a library which is not listed as a dll
  [dllname]  name of library
  [name]     a string for the library, to use it in the dll
             you have to use the third parameter of Dllmain
  [result]   handle of library
}


function myFreeLib(module: integer): boolean; stdcall;
{
  unload a dll
  [module]  handle of dll to unload
  [result]  successful unloaded?
}


function myCreateRemoteThread(pid: cardinal; p: pointer): boolean; stdcall;
{
  function to create a thread in a process
  [pid]     process id
  [p]       startaddress of thread
  [result]  successful loaded?
}


function myInjectLibrary2(pid: cardinal; dlln: pchar): pointer; stdcall;
{
  function to inject a library into a process
  [pid]      process id
  [dlln]     dllname - must have path if its not in system directory or in the
                       directory of the process where it shall be loaded
  [result]   pointer of the address library injection in the target process
}

function myInjectLibrary(pid: cardinal; dlln: pchar): boolean; stdcall;
{
  function to inject a library into a process
  [pid]      process id
  [dlln]     dllname - must have path if its not in system directory or in the
                       directory of the process where it shall be loaded
  [result]   successful injected?
}


function myVirtualAllocEx(pid: cardinal; size: cardinal): pointer; stdcall;
{
  get memory in the process
  [pid]      process id
  [size]     size of memory which shall be allocated
  [result]   address of memory if
}


function myVirtualFreeEx(pid: cardinal; memaddr: pointer; size: cardinal): boolean; stdcall;
{
  free memory in process
  [pid]        process id
  [memaddr]    startaddress of memory which should be decommited
  [size]       size of memory which should be decommited
  [result]     successful if memory is decommited
}


function myOpenThread(access: integer; inherithandle: boolean; tid: integer): integer; stdcall;
{
  open a thread for specific access
  [access]             access rights
  [inheritedhandle]    should be false
  [tid]                thread id
  [result]             handle to opened thread
}


function myGetThread(pid: integer): integer; stdcall;
{
  gets a thread form the process id
  [pid]      process id
  [result]   thread id
}


function myFindProcessThread(exenames: pchar): integer; stdcall;
{
  find a thread from an executable name
  [exenames]   pchar with exenames  ex. "notepad.exe;explorer.exe;iexplore.exe;"
  [result]     thread id of one of the executables
}


function myFindModulesInProcess(pid: cardinal): pchar; stdcall;
{
  find all modules in a process
  [pid]      process id
  [result]   modules   ex. "kernel32.dll;ntdll.dll;user32.dll;"
}


function myHookApiIAT(modulehandle: integer; oldfunction, myfunction: pointer): boolean; stdcalloverload;
{
  hooks import table address
  [modulehandle]   handle of the module where the function is
  [oldfunction]    address of function to hook
  [myfunction]     address of new function
  [result]         successfull?
}



function myHookApiIAT(oldfunction, myfunction: pointer): boolean; stdcalloverload;
{
  hooks import table address

  [oldfunction]    address of function to hook
  [myfunction]     address of new function
  [result]         successfull?
}


function myInjectLibraryUnsecure(pid: cardinal; dlln: pchar): boolean; stdcall;
{
  function to inject a library into a process
  [pid]      process id
  [dlln]     dllname - must have path if its not in system directory or in the
                       directory of the process where it shall be loaded
  [result]   successful injected?
}


function myInjectLibraryUnsecure2(pid: cardinal; dlln: pchar): boolean; stdcall;
{
  function to inject a library into a process
  [pid]      process id
  [dlln]     dllname - must have path if its not in system directory or in the
                       directory of the process where it shall be loaded
  [result]   successful injected?
}



function myInstructionLength(addr: pointer): integer; stdcall;
{
  return the suce of the assembler instrucion
  [addr]     address of assembler instruction
  [result]   size of assembler instruction
}


function myHookAPIJMP(oldfunction,yourfunction: pointer; var nextfunction: pointer): boolean; stdcall;
{
  hooks a function
  [oldfunction]   function which to hook
  [yourfunction]  function where the hook should jump to
  [nextfunction]  function to call the original function
  [result]        successful hooked?
}


function myUnhookAPIJMP(nextfunction: pointer): boolean;
{
  unhooks a function
  [nextfunction]  function to unhook
  [result]        successful unhooked?
}



function myHookAPIJMPUnsecure(oldfunction,yourfunction: pointer; var nextfunction: pointer): boolean; stdcallassembler;
{
  hooks a function
  [oldfunction]   function which to hook
  [yourfunction]  function where the hook should jump to
  [nextfunction]  function to call the original function
  [result]        successful hooked?
}


function myUnhookApiJMPunsecure(nextfunction: pointer): boolean; stdcallassembler;
{
  unhooks a function
  [nextfunction]  function to unhook
  [result]        successful unhooked?
}


function myFindProcess(exenames: pchar): integer; stdcall;
{
  searches for a process id by executable name
  [exenames]   name of executable ex. "hl.exe;cstrike.exe;czero.exe"
  [result]     process id of one of the executables
}


function myCreateRemoteThreadUnsecure(pid: cardinal; addr: pointer; NTuseCRT: boolean): cardinal; stdcall;
{
  function to create a thread in a process

  [pid]     process id
  [p]       startaddress of thread
  [result]  successful loaded?
}


function myisNT: boolean; stdcall;
{
  returns if operting system is a windowsNT based system
  [return] true if windowsNT based system else false
}

function myGetProcAddr(module: integer; procname: pchar): pointer; stdcall;
{
  get a procedure address from a module
  [module]    module handle
  [procname]  procedure name
  [result]    address of procedure
}


function myGetDebugPrivilege: boolean; stdcall;
{
  gives u the debug privilegue
  [result] successful got it
}


Moderiert von user profile iconUGrohne: Link entfernt.


Zuletzt bearbeitet von uall@ogc am Sa 26.02.05 14:28, insgesamt 1-mal bearbeitet
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Sa 26.02.05 14:25 
Hallo!

Bitte beschreibe Deine Unit ein wenig, damit man auch weiß, worum es geht!

MfG
Christian

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
uall@ogc Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1826
Erhaltene Danke: 11

Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
BeitragVerfasst: Fr 04.03.05 14:52 
2 neue funktionen hinzugefügt:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
function myForceLoadLibraryA(name: pchar): integer; stdcall;
{
  loads a dll, doesnt matter if its allready loaded
  [name]    name of the dll to load
  [result]  handle of loaded dll
}


function myGhostLibrary(lib: integer): boolean; stdcall;
{
  hides a library in the process
  [lib]     handle of module to hide
  [result]  successful hided?
}

_________________
wer andern eine grube gräbt hat ein grubengrabgerät
- oder einfach zu viel zeit
F34r0fTh3D4rk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Di 29.03.05 14:14 
angenommen ich lade damit eine gefakte opengl32.dll in den prozess, dann muss ich doch nur die funktionen in die fake dll eintragen, die ich brauche, die anderen sind schon im speicher, oder ?

werden dann nur die "alten" funktionen überschrieben ?

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
library fakeogl32;

uses
  windows;

const opengl32 = 'C:\windows\system32\opengl32.dll';

type
  HGLRC = THandle;

type
  GLenum  = Cardinal;

const
  GL_TRIANGLE_STRIP = $0005;
  GL_TRIANGLE_FAN  = $0006;
  GL_DEPTH_TEST = $0B71;

procedure {ka}oldglBegin (mode: GLenum); stdcallexternal opengl32 name 'glBegin';
procedure {ka}glDisable (cap: GLenum); stdcallexternal opengl32 name 'glDisable';
procedure {ka}glEnable (cap: GLenum); stdcallexternal opengl32 name 'glEnable';

procedure glBegin(mode: glenum); stdcall;
begin
  if (mode = GL_TRIANGLE_STRIP) or (mode = GL_TRIANGLE_FAN) then
    glDisable(GL_DEPTH_TEST) else
      glEnable(GL_DEPTH_TEST);
end;

exports
  glBegin;

begin
end.

reicht das als dll aus, um sie dann als wallhack in cs zu laden ?
wird alles andere übernommen ?
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Di 29.03.05 14:35 
Ich glaubs nicht, da der Normalen GetProcAddress-Funktion die ganzen anderen Methoden aus der OGL fehlen würden --> Fehler.

Du könntest aber einen GetProcAddress-Hook machen, der bei Angabe des OGL-Handles erst prüft, ob die Funktionen bei dir drin stehen und wenn dies nicht der Fall ist, diese aus der eigentlichen OGL nachladen.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
F34r0fTh3D4rk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Di 29.03.05 14:45 
ich dachte, das wäre bei der funktion automatisch, also dass das alte im speicher durch das neue ersetzt wird, nur muss man die dll ja erstmal kompilieren können ^^
uall@ogc Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1826
Erhaltene Danke: 11

Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
BeitragVerfasst: Di 29.03.05 14:48 
nein geht so nicht

1.) solltest in einer dll die glBegin etc. dynamisch laden (nicht statisch) d.h. mit GetProcAddress holen -> d.h. du musst gegebenfalls vorher selber die opgnl32.dll laden falls sie noch nicht im speicher ist

2.) danach kannste nen API jmp hook machen (myHookApiJmp) und zwar mit den parametern @oldglBegin (die aus der opengl32.dll) @myglBegin (deine glBegin functkion) @nextglBegin (die funktion die du aufrufen musst anstatt der originalen glBegin da diese ja gehookt wurde, also die funktion die du dann wieder in myglBegin benutzen kannst)

_________________
wer andern eine grube gräbt hat ein grubengrabgerät
- oder einfach zu viel zeit
F34r0fTh3D4rk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Di 29.03.05 14:53 
ok werde ich so machen, hab ja genug beispiele von dir :D

bart rox !

@uall: hab beim thread (asm code an spiel schicken) noch was editiert, gucks dir an


Zuletzt bearbeitet von F34r0fTh3D4rk am Di 29.03.05 14:55, insgesamt 1-mal bearbeitet
uall@ogc Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1826
Erhaltene Danke: 11

Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
BeitragVerfasst: Di 29.03.05 14:53 
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
library hackdll;


uses windows, myhook;

type
  GLenum  = Cardinal;
const   
  GL_TRIANGLE_STRIP = $0005;   
  GL_TRIANGLE_FAN  = $0006;
  GL_DEPTH_TEST = $0B71;   

var
 nextglBegin: procedure (mode: GLenum); stdcall;
 oldglBegin: procedure (mode: GLenum); stdcall;
 oldglDisable: procedure (cap: GLenum); stdcall;
 oldglEnable: procedure (cap: GLenum); stdcall;

procedure myglBegin(mode: glenum); stdcall;
begin
  if (mode = GL_TRIANGLE_STRIP) or (mode = GL_TRIANGLE_FAN) then
    oldglDisable(GL_DEPTH_TEST) else oldglEnable(GL_DEPTH_TEST);
  nextglBegin(mode);
end;

var hogl: integer;
begin
  hogl := GetModuleHandle('opengl32.dll');
  if hogl = 0 then hogl := LoadLibaryA('opengl32.dll');

  @oldglBegin := GetProcAddress(oglh,'glBegin');
  @oldglEnable := GetProcAddress(oglh,'glEnable');
  @oldglDisable := GetProcAddress(oglh,'glDisable');

  myhook.myHookAPIJMP(@oldglBegin,@myglBegin,@nextglBegin);
end.


die dll sollte dann so aussehen (ungetestet) wenn du nun die in den speicher lädst fänst du immer glBegin ab

_________________
wer andern eine grube gräbt hat ein grubengrabgerät
- oder einfach zu viel zeit


Zuletzt bearbeitet von uall@ogc am Di 29.03.05 14:57, insgesamt 1-mal bearbeitet
F34r0fTh3D4rk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Di 29.03.05 14:55 
oh, danke fürs beispiel :D

wie lade ich die jetzt von der exe aus ?

mit function myInjectLibrary(pid: cardinal; dlln: pchar): boolean; stdcall; ?


Zuletzt bearbeitet von F34r0fTh3D4rk am Di 29.03.05 15:00, insgesamt 2-mal bearbeitet
uall@ogc Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1826
Erhaltene Danke: 11

Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
BeitragVerfasst: Di 29.03.05 14:58 
hatte vergessen die original glBegin funktion aufzurufen,wenn das nicht machst dann flackert das bild und du siehst nichst mehr

aber pass auf das du nextGlbegin aufrufst und nicht oldglBegin da wir ja oldglBegin gehookt haben und es sonst zu einer endlosschleife kommen würde

_________________
wer andern eine grube gräbt hat ein grubengrabgerät
- oder einfach zu viel zeit
F34r0fTh3D4rk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Di 29.03.05 15:01 
meinst du die zeile
ausblenden Delphi-Quelltext
1:
nextglBegin(mode);					

aus der myglbegin ?
uall@ogc Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1826
Erhaltene Danke: 11

Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
BeitragVerfasst: Di 29.03.05 15:02 
jo genau die

_________________
wer andern eine grube gräbt hat ein grubengrabgerät
- oder einfach zu viel zeit
F34r0fTh3D4rk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Di 29.03.05 15:06 
hab gestern versucht text anzeigen zu lassen, beim starten habe ich gesehen, dass mein konsolen text blau war, hab ich gedacht, ist ja auch mal schön, aber im spiel hatte ich nur blaues bild ^^ (guck mal bei asm befehl an spiel schicken, ich glaub ich mach da aber gleich mal nen neuen thread für auf ^^)

//ist aber doch sehr cs spezifisch die frage, kannst eh nur du wissen ^^
dann lass ichs ^^

ich schick dir ne pm !
F34r0fTh3D4rk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Sa 18.03.06 12:17 
îch hab mich mal wieder dran versucht, weil ich grad nichts zu tun habe:
ausblenden volle Höhe glhook.dll
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
library glhook;

uses
  windows,
  SysUtils,
  uallhook;

type
  GLenum = cardinal;
const   
  GL_TRIANGLE_STRIP = $0005;   
  GL_TRIANGLE_FAN  = $0006;
  GL_DEPTH_TEST = $0B71;
var
  oldglBegin, nextglBegin: procedure(mode: GLenum); stdcall;
  oldglDisable: procedure(cap: GLenum); stdcall;
  oldglEnable: procedure(cap: GLenum); stdcall;

procedure myglBegin(mode: glenum); stdcall;
begin
  if (mode = GL_TRIANGLE_STRIP) or (mode = GL_TRIANGLE_FAN) then
    oldglDisable(GL_DEPTH_TEST) else
      oldglEnable(GL_DEPTH_TEST);
  nextglBegin(mode);    
end;

procedure injectmain;
var
  h: integer;
begin
  h := GetModuleHandle('opengl32.dll');
  if h = 0 then
    LoadLibraryA('opengl32.dll');
  if h > 0 then
  begin
    @oldglBegin := GetProcAddress(h, 'glBegin');
    @oldglEnable := GetProcAddress(h, 'glEnable');
    @oldglDisable := GetProcAddress(h, 'glDisable');
    if @oldglBegin <> nil then
      uallHook.HookCode(@oldglBegin, @myglBegin, @nextglBegin);
  end;
end;

procedure uninjectmain;
begin
  uallHook.UnhookCode(@nextglBegin);
end;

procedure dllmain(dwReason: integer);
begin
  case dwreason of
    DLL_PROCESS_ATTACH:
      injectmain;
    DLL_PROCESS_DETACH:
      uninjectmain;
  end;
end;

begin
  DLLProc := @DLLMain;
  DLLMain(1);
end.

ausblenden hack.exe
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
program hack;

{$APPTYPE CONSOLE}

uses
  windows,
  uallHook,
  uallProcess,
  uallUtil;

var pid: integer;
begin
  pid := uallProcess.FindProcess('cstrike.exe');
  if pid = 0 then
    pid := uallProcess.FindProcess('hl.exe');
  if pid <> 0 then
  begin
    if uallHook.InjectLibrary(pid,pchar(uallUtil.GetExeDirectory + 'glhook.dll')) <> nil then
      MessageBox(0'Injection successful'nil0else
        MessageBox(0'Injection failed'nil0);
  end;
end.

das war nur zu testzwecken, weil ich mal was anderes vorhatte, jedoch schmiert cs nach der injektion ab, warum ?
oern
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 142

Linux, Win XP
D7
BeitragVerfasst: So 19.03.06 20:41 
Gibt es vieleicht noch einen anderen Downloadlink der oben funktioniert nicht :cry:

_________________
Ich hab eine Signatur
uall@ogc Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1826
Erhaltene Danke: 11

Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
BeitragVerfasst: So 19.03.06 21:00 
hihu

cvs.sourceforge.net/...rphia/uallCollection

wenns mal gerade nicht down ist
ansonsten

uall.overclock.ch/pu...c/uallCollection.zip

Ist relativ neu, hab heute soagr hinbekommen unter 9x des kernelcode hooking anständig zum laufen zu bekommen.
Da sich wieder so viel geändert hat wirds in nächsten Tagen wieder ein update geben.

_________________
wer andern eine grube gräbt hat ein grubengrabgerät
- oder einfach zu viel zeit
uall@ogc Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1826
Erhaltene Danke: 11

Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
BeitragVerfasst: So 19.03.06 21:07 
@FearOfTheDark:

uallProcess kann auch mehrere Namen als Parameter bekommen, dann findet der einen von den Prozessen

für HL wäre da z.b. sowas gedacht:

ausblenden Delphi-Quelltext
1:
uallProcess.FindProcess('hl.exe' + #13#10 + 'cstrike.exe' + #13#10 + 'czero.exe');					

_________________
wer andern eine grube gräbt hat ein grubengrabgerät
- oder einfach zu viel zeit
F34r0fTh3D4rk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Mo 20.03.06 15:05 
das ist schön, leider funktioniert es nicht, das game schmiert einfach nur ab :lol:

ich habe mir mal andere loader von dir angeguckt, auch den SE Lite Loader, der import die inject funktionen ja von der dll, die er in den prozess injiziert, wo liegt der zweck dessen ?