Autor |
Beitrag |
uall@ogc
Beiträge: 1826
Erhaltene Danke: 11
Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
|
Verfasst: 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
Beiträge: 5284
Erhaltene Danke: 27
Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
|
Verfasst: 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
|
|
mimi
Beiträge: 3458
Ubuntu, Win XP
Lazarus
|
Verfasst: 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
Beiträge: 5284
Erhaltene Danke: 27
Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
|
Verfasst: Do 14.04.05 19:22
ja die erst recht, aber in ner dll brauch man die meistens eh net ^^
|
|
mimi
Beiträge: 3458
Ubuntu, Win XP
Lazarus
|
Verfasst: 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
Beiträge: 9839
Erhaltene Danke: 45
Windows 8.1
Delphi XE4
|
Verfasst: 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
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: 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):
Quelltext 1: 2:
| @muell: DB $0F DB $80 |
undefinierter bezeichner DB
bei delphi7 gehts, aber erst nachdem ich das hier geändert habe:
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
Beiträge: 1826
Erhaltene Danke: 11
Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
|
Verfasst: 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
Beiträge: 1826
Erhaltene Danke: 11
Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
|
Verfasst: Do 21.04.05 19:40
Hab das mal bei delphi 3 getestet:
Delphi-Quelltext
funktioniert da einwandfrei
_________________ wer andern eine grube gräbt hat ein grubengrabgerät
- oder einfach zu viel zeit
|
|
retnyg
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: 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
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Do 21.04.05 20:38
ich habe es nun geändert zu:
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
Beiträge: 1826
Erhaltene Danke: 11
Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
|
Verfasst: 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
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: 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: |
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: DW $310F MOV ECX, EAX MOV EBX, EDX JMP @weiter2 @muell2: DB $0F, $80 @weiter2: 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] 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.
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); end; end; end; |
_________________ es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
|
|
retnyg
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Di 26.04.05 23:08
mir ist da noch ein bug untergekommen:
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 > 0) then 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
Beiträge: 1826
Erhaltene Danke: 11
Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
|
Verfasst: 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
Beiträge: 1826
Erhaltene Danke: 11
Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
|
Verfasst: 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
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: 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.
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 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^); 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); 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
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: 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
Beiträge: 1826
Erhaltene Danke: 11
Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
|
Verfasst: 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
Beiträge: 1826
Erhaltene Danke: 11
Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
|
Verfasst: 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
|
|
|