Autor Beitrag
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 30.04.05 16:44 
bei mir ist net immer alles umgekehrt und wenn ich mit der maus drüber gehe, wirds invertiert, egal wie rum es ist (auch irgendwie logisch, da das dann nochmal ausgegeben wird, aber merkwürdig, dass dann da manchmal der richtige text steht !?)

aber lustig :)
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:50 
jo dann benutzt windows noch andere APIs zum textanzeigen, frag mich aber net welche oO

_________________
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: Sa 30.04.05 16:51 
aber irgendwie blödsinnig, das es noch andere gibt, aber die werden wohl am besten wissen warum :lol:
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:55 
könnte aber auch sein das die funktion das 2 mal umdreht oO und somit wieder normal ist

_________________
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: Sa 30.04.05 18:05 
stimmt, einmal beim normalen und dann das, was im fenster steht und nicht die interne variable, also zb nicht:

ausblenden Delphi-Quelltext
1:
2:
drehum(variable);
edit1.text:= variable;

sondern
ausblenden Delphi-Quelltext
1:
2:
edit1.text:= variable;
drehum(edit1.text);

:D
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 03.05.05 19:43 
user profile iconuall@ogc hat folgendes geschrieben:
hab hier mal nen kleinen globalen hook gemacht, der alles was mit TextOutW ausgegeben wird spiegelt

vielen dank, ich habs endlich hinbekommen CreateFileW zu hooken :)
äussert interessant wäre nun auch eine UnInject funktion oder so, damit man die DLL bei programmende entladen kann...hast du in die richtung etwas geplant ?

_________________
es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
mael
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 198
Erhaltene Danke: 39


Delphi XE3 Prof.
BeitragVerfasst: Di 03.05.05 21:30 
Schöne Sachen. Besonders der Disassembler interessiert mich. :les:

Versuche auch sowas, und habe dabei im Prinzip einfach die Tabelle des Intel-Manuals in Delphi Code übersetzt: Viel Arbeit, wenig Denken :wink:
Hast Du irgendwelche Quellen die Dir sonst noch hilfreich waren außer Intel/AMD und NASM?
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: Mi 04.05.05 03:24 
hmm...mir treten sporadisch abstürze der "befallenen" prozesse auf :evil:
wie debuggst du deine dlls ? mit "mit prozess verbinden" klappt das nicht so ganz...
edit: n paar push's und pop's haben das problem behoben...ne debug-möglichkeit wär aber trotzdem gut

_________________
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: Mi 04.05.05 16:45 
@retnyg:

du musst auf passen wenn due dll in alle prozesse injezierst, dann darfst du KEINE statsichen imports haben d.h. nur die unit windows einbinden. wenn du die sysutils einbindest, hat windows autoamtisch nen import von der user32.dll die aber nicht in allen prozessen vorhanden ist -> die prozesse crashen.

also musst dir die dynamsch laden oder du schmeist das getdebugprivilege raus dann bekommste auch nur prozesse mit openprocess geöffnet wo auch die user32.dll schon geladen ist.

@mael: ich habe jeden einzelen opcode ausprobiert und in delphi debugged mit

asm
DB $00 $00 $00 $00 $00
end;

usw. da ich immer nur wiedersprüche gefunden habe
b0rg 0.9 hat aber auch tabellen die man benutzen kann aber da stimmt auch einiges nicht,
also ich habs ohne das intelmanuel gemacht

dafür hab ich aber noch die extended code table nicht (0xF0) wenn ich mal zeit habe mach ich daran weiter

_________________
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: Fr 06.05.05 14:01 
und hier nochmal zu zeigen wie mächtig ein globaler hook ist :)

www.uall.info/pics/textoutw3.JPG

_________________
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: Fr 06.05.05 14:10 
1337 h00k :D R4mmst31n r0x 8) numb/encore auch :wink:
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 07.05.05 13:04 
auf wunsch von mehreren Leuten:
www.uall.info/files/...%20global%20hook.zip

_________________
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: Sa 07.05.05 20:58 
muss nochmal nachhooken...
kannst du ma nen tip zum debuggen der hook-dlls geben ?
und ist ne UnInject funktion geplant ?

_________________
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: So 08.05.05 10:41 
UnInject hab ich gestern fertig gemacht genau wie UnHook und GlobalInjectLibray / GlobalUnloadLibrary

sources kommen im laufe des tages on
hier ide neuste version die hooken/enthooken kann

und neta auf win9x benutzen sonst crashed es :)

www.uall.info/files/1337.zip

_________________
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 08.05.05 18:12 
update:

- added 1337 global hook example (winNT only)
- added GlobalInjectLibrary
- added UnhookCode
- added GlobalUnloadLibrary
- added UnloadLibrary


downloadlink 1. post

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



BeitragVerfasst: Mi 11.05.05 20:35 
Sehr beeindruckend, uall!


Auf einen API-Hook wie deinen habe ich schon lange gewartet!

Derzeit spiele ich mit den verschiedensten API-Calls rum, um die gebotenen Möglichkeiten alle überhaupt verstehen zu können.

Jetzt bin ich allerdings bei "GetCursorPos" angelangt und ich weiss nicht, wie ich dort "lpPoint" manipulieren kann.


Hier ist der entsprechende Teil, welcher nicht funktionieren will:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
function myGetCursorPos(lpPoint: Pointer): Boolean; stdcall;
var
  CurPos: TPoint;
begin
  CurPos.X := 123;
  CurPos.Y := 123;
  lpPoint := @CurPos;
  Result := True;
end;



Bei aktiviertem API-Hook bekomme ich allerdings bei "lpPoint" immer X = 0 und Y = 0 ausgegeben - der Pointer hat also nicht funktioniert.

Es wäre schön, wenn du mir weiterhelfen könntest!



Mach weiter so!

Mappelchen
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: Mi 11.05.05 20:48 
so sollte es gehen
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
function myGetCursorPos(lpPoint: Pointer): Boolean; stdcall;
var
  CurPos: TPoint;
begin
  @curpos := lpPoint;
  CurPos.X := 123;
  CurPos.Y := 123;
  Result := True;
end;


oder so:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
function myGetCursorPos(lpPoint: PPoint): Boolean; stdcall;
var
  CurPos: PPoint;
begin
  curpos := lpPoint;
  CurPos^.X := 123;
  CurPos^.Y := 123;
  Result := True;
end;

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



BeitragVerfasst: Mi 11.05.05 20:59 
Vielen Dank für deine Antwort, retnyg!

Leider bekomme ich bei deinem Vorschlag allerdings die Fehlermeldung
"Left side cannot be assigned to".

Ich benutze Borland Delphi 6 Personal Edition.

Edit:
Dein zweiter Vorschlag wird zwar tadellos kompiliert, jedoch bekomme ich weiterhin X = 0 und Y = 0 ausgegeben.
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: Mi 11.05.05 21:10 
dann muss es so gehen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
function myGetCursorPos(var lpPoint: TPoint): Boolean; stdcall;
var
begin
  lpPoint.x := 123;
  lpPoint.Y := 123;
  Result := True;
end;

bzw so
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
function myGetCursorPos(var lpPoint: PPoint): Boolean; stdcall;
var
begin
  lpPoint^.x := 123;
  lpPoint^.Y := 123;
  Result := True;
end;

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



BeitragVerfasst: Mi 11.05.05 21:22 
Beide werden zwar ebenfalls fehlerfrei kompiliert, jedoch führen sie mich auch nicht zu dem gewünschten Ziel.

Deine erste Methode bringt meine Anwendung komplett zum Absturz und die zweite gibt wieder nur X/Y = 0 aus.

Ich benutze "uallCollection_08_05_05_1".