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: Di 29.03.05 17:06 
uallHook, funktion zum injecten von dlls in andere prozesse, hooken von APIs durch importtabelle, oder JMP hook
uallDisasm, Disassembler (noch nicht gant fertig)
uallKernel, kernel funktionen selbst geschrieben, GetProcAddress, LoadLibrary und funcktionen die unter win9x nicht möglich waren
OpenthreadX oder CreateRemoteThreadX
uallUtil, kleine funktionen wie ExtractFilePath UpperCase etc. für nen kleine EXE
uallProtect, kleinere AntiDebugger funktionen (nicht zu ernst nehmen ;>) verstecken von dlls, debug privilegien bekommen etc.


uall.overclock.ch/uallCollection/
cvs.sourceforge.net/...phia/uallCollection/

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


Zuletzt bearbeitet von uall@ogc am Fr 28.04.06 12:37, insgesamt 10-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 17:37 
uallutil -> alles was man so braucht ^^

besser als immer alles rauszukopieren, um nicht die sysutils einbinden zu müssen ^^

nette sammlung 8)
mimi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: Do 14.04.05 10:41 
sysutils -> macht die dann so viel aus ? ich dachte immer die Forms.pas macht soviel aus :?:

_________________
MFG
Michael Springwald, "kann kein englisch...."
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: Do 14.04.05 19:22 
ja die erst recht, aber in ner dll brauch man die meistens eh net ^^
mimi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: Do 14.04.05 19:31 
Tino: Frage gelöscht :? (Weiß nicht wie ich den beitrag löschen kann(meinen))

_________________
MFG
Michael Springwald, "kann kein englisch...."


Zuletzt bearbeitet von mimi am Do 14.04.05 21:04, insgesamt 1-mal bearbeitet
Tino
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: Do 14.04.05 20:59 
Bitte klärt das in einem seperaten Topic oder per PN. Hier geht es um das Projekt von uall@ogc!
retnyg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: Do 21.04.05 19:10 
ich wollte grade mal deine uallProcess.pas ausprobieren.
bei delphi 5 gibt er mir einen fehler zurück (uallprotect):
ausblenden Quelltext
1:
2:
@muell:
  DB $0F DB $80

undefinierter bezeichner DB

bei delphi7 gehts, aber erst nachdem ich das hier geändert habe:
ausblenden Quelltext
1:
function GetOwnModuleHandle: cardinal; stdcall;					

war erst auf integer ^^

_________________
es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
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: Do 21.04.05 19:32 
den fehler mit GetModuleHandle werde ich beheben wurde mir heute schonmal gesagt
das mit dem DB ist bischen blöd ic weiß nicht wie man sonst einfach ein byte in den code einfügen kann

_________________
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: Do 21.04.05 19:40 
Hab das mal bei delphi 3 getestet:

ausblenden Delphi-Quelltext
1:
2:
3:
asm
  DB $90
end;


funktioniert da einwandfrei :shock:

_________________
wer andern eine grube gräbt hat ein grubengrabgerät
- oder einfach zu viel zeit
retnyg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: Do 21.04.05 20:32 
ich verstehe es selber nicht ganz, laut 64.233.183.104/searc...i+5+asm+DB&hl=de
sollte DB absolut kein problem darstellen. ist ja auch eigentlich ein standardbefehl.

_________________
es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
retnyg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: Do 21.04.05 20:38 
ich habe es nun geändert zu:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
@muell:
  DB $0F$80
@weiter:
  RDTSC

nun frisst er das DB, bleibt dafür aber bei RDTSC hängen: inline assembler syntaxfehler
den befehl kann man sicher durchn bytecode ersetzen

_________________
es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
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: Do 21.04.05 22:15 
RDTSC kennt der nicht, müsste mal opcode dafür raussuchen dann sollte es gehen

_________________
wer andern eine grube gräbt hat ein grubengrabgerät
- oder einfach zu viel zeit
retnyg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: Di 26.04.05 18:07 
so ich hab das mal geändert so dass das ganze auch unter delphi 5 rennt:

uallprotect.pas hat folgendes geschrieben:

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:
procedure ProtectCall(proc: pointer); stdcall;
asm
  MOV EBX, [EBP+4]
  PUSH EBX
  MOV EAX, proc
  XOR EAX, EBP
  PUSH EAX
  XOR EAX, EAX
  TEST EAX, EAX
  JNZ @muell
  JNZ @muell2
  JMP @weiter
@muell:
  DB $0F$80
@weiter:
  //RDTSC
  DW    $310F
  MOV ECX, EAX
  MOV EBX, EDX
  JMP @weiter2
@muell2:
  DB $0F$80
@weiter2:
//  RDTSC
  DW    $310F
  SUB EAX, ECX
  SUB EDX, EBX
  NEG EDX
  XOR EAX, EDX
  SHR EAX, 8
  XOR EBP, EAX
  @ende:
  POP EAX
  XOR EAX, EBP
  POP EBX
  POP EBP
  POP ECX
  MOV [ESP], EBX
  JMP EAX
end;

function IsDebuggerPresent: boolean; stdcall;
asm
  MOV EAX, FS:[$18]
  MOV EAX, [EAX+$30]
  //MOVZX EAX, [EAX+2]
  DB $0F$B6$40$02
end;





desweiteren habe ich deiner uallprocess.pas noch die prozedur killprocess verpasst.
was noch fehlt ist eine funktion, mit der man geladene Module eines Prozesses (injizierte Dll's) über ihr hModule Handle killen kann. bin aber leider nicht fündig geworden, vielleicht fällt dir ja was ein.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
function KillProcess(pid: integer): boolean; stdcall;
var procHnd: THandle;
begin
  result := false;
  if pID <> 0 then begin
    procHnd := OpenProcess
    (PROCESS_TERMINATE or PROCESS_QUERY_INFORMATION, False, pID);
    if procHnd <> 0 then  begin
       result:= TerminateProcess(procHnd, 0);
      // CloseHandle(ProcHnd);
    end;
  end;
end;

_________________
es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
retnyg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: Di 26.04.05 23:08 
mir ist da noch ein bug untergekommen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
  function DeleteExe(s: string): string;
  var i, j: integer;
  begin
    setlength(result,length(s));
    result := '';
    j := 0;
    for i := 1 to length(s) do
    begin
      if (copy(s,i,5) = ('.EXE'#13#10)) then
        j := 4;
      if (j > 0then
        dec(j) else result := result+s[i];
    end;
  end;

da muss ne 6 hin

_________________
es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
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 26.04.05 23:18 
jo richtig war vorher durch simiko,on getrennt ich hab da schon so viel geändert neue version upp ich mal jetzt


RDTSC für delphi 5 hab ich noch nicht geändert und deine funktion auch noch nicht eigneabut werde ich morgen mal machen, habe ausserdem paar neue schöne funktionen und bugfixes die ich auch noch adde wenn ich in den nächsten tagen zeit habe,

das mit dem copy hab ich aber eben geändert ausserdem faslcher header für GetOwnModuleHandle

desweiteren hat uallProtect die funktion IsHooked wo man eine API angeben kann und dann geprüft wird ob die per Import/Export/oder jump hook gehooked wurde

_________________
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: Mi 27.04.05 19:10 
neue Version ist up, habe auch einige bugs gefixed
ausserdem hab ich es mal geschafft auf die schnelle 5 beispiele zu erstellen

1) CodeHook
2) Dll inejction
3) ProzessListe
4) HideLibray und ForceLoadLibrary
5) Disassembler

_________________
wer andern eine grube gräbt hat ein grubengrabgerät
- oder einfach zu viel zeit
retnyg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: Fr 29.04.05 20:47 
mal ne frage: ich habe mir nen hook für CreateFileW zusammengeschustert, es passiert aber nix (z.b. wenn man mit notepad was speichert, wird diese funktion aufgerufen).
an was kann das liegen ? ausserdem wird nextCreateFile nie was zugewiesen, habe das aber eigentlich 1 zu 1 von deinem beispiel abgekupfert.
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:
program hooktest;
{$APPTYPE CONSOLE}
uses
//  kol,
  windows,
  uallhook,
  uallutil;

type TCFfunc = function(lpFileName:pchar; dwDesiredAccess, dwShareMode:DWORD;
  lpSecurityAttributes: pointer; dwCreationDisposition, dwFlagsAndAttributes,
  hTemplateFile: DWORD): DWORD; stdcall;

var oldCreateFile, nextCreateFile: tcffunc;



function myCreateFile(lpFileName:pchar; dwDesiredAccess, dwShareMode:DWORD;
  lpSecurityAttributes: pointer; dwCreationDisposition, dwFlagsAndAttributes,
  hTemplateFile: DWORD): DWORD; stdcall;

begin
  writeln(lpfilename^); // zu dem breakpoint komme ich nie...
  result := nextCreateFile(lpFileName, dwDesiredAccess, dwShareMode,
  lpSecurityAttributes, dwCreationDisposition, dwFlagsAndAttributes,
  hTemplateFile);
end;

var p:pointer;

begin
  p := GetProcAddress(GetModuleHandle('kernel32.dll'),'CreateFileW');
  if p <> nil then begin
    @oldCreateFile := p;
    uallHook.HookCode(@oldCreateFile,@myCreateFile,@nextCreateFile);
    while true do
    begin
       sleep(10);
       //   application.processmessages;
    end;
  end
  else writeln('fehler');
  readln;
end.

_________________
es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
retnyg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: Sa 30.04.05 13:16 
kann es sein, dass deine hook-unit nur lokal, nicht systemweit funktioniert?
oder muss ich den systemweiten hook wie gehabt in eine dll auslagern ?

_________________
es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
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: Sa 30.04.05 14:39 
unter NT systemen hat jeder prozess seine eigene DLL, d.h. jeder prozess hat die kernel32.dll / ntdll.dll etc.
d.h. du kannst keinen globalen API hook machen wie unter 9x

also mussu den code in eine dll auslagern und diese in JEDEN prozess laden

_________________
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: Sa 30.04.05 16:23 
hab hier mal nen kleinen globalen hook gemacht, der alles was mit TextOutW ausgegeben wird spiegelt
Einloggen, um Attachments anzusehen!
_________________
wer andern eine grube gräbt hat ein grubengrabgerät
- oder einfach zu viel zeit