[DEBUG] register waardes uitlezen ?

Pagina: 1
Acties:

  • Wilde
  • Registratie: December 2000
  • Niet online
Ik ben de laatste tijd bezig om een eigen debuggertje te schrijven. Nou ben ik benieuwd of het mogenlijk is om:

Mijn code te 'triggeren' op het moment dat de EIP op een bepaalde geheugenlokatie is binnen een proces en dan de registers uitlezen.

Die bepaalde plek waarop getriggerd wordt(EIP) wil ik dus vooraf bepalen

Iemand enig idee hoe dit gaat of welke api's ik hiervoor moet gebruiken ?

Specs: 9800X3D, RTX 5090, 64GB, VR: Pimax Crystal-Light


  • PipoDeClown
  • Registratie: September 2000
  • Niet online

PipoDeClown

Izze Zimpell

besturingssysteem? hardware? taal?
kerneldebug? gewone app debug?
api's voor debugging?

[ Voor 16% gewijzigd door PipoDeClown op 12-05-2004 11:56 ]

God weet alles, want hij is lid van de Mosad. To protect your freedom i will take that away from you. Mijn drankgebruik heeft ernstig te lijden onder mijn gezondheid.


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 24-05 14:53

NMe

Quia Ego Sic Dico.

Wilde schreef op 12 mei 2004 @ 11:48:
Ik ben de laatste tijd bezig om een eigen debuggertje te schrijven. Nou ben ik benieuwd of het mogenlijk is om:

Mijn code te 'triggeren' op het moment dat de EIP op een bepaalde geheugenlokatie is binnen een proces en dan de registers uitlezen.

Die bepaalde plek waarop getriggerd wordt(EIP) wil ik dus vooraf bepalen

Iemand enig idee hoe dit gaat of welke api's ik hiervoor moet gebruiken ?
Is allemaal mogelijk. Probeer maar eens een leuke zoekquery op Google, want dit topic gaat met zo'n magere topic start nergens over.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

Ziet eruit als een OpenVMS debugger op een Alpha cluster inderdaad.... :z

Doe eens wat meer info aub?

Professionele website nodig?


  • Wilde
  • Registratie: December 2000
  • Niet online
Ha ok sorry guys het is inderdaad wat magertjes :)

Ik schrijf in Delphi7 onder WinXP. Ik wil een debuggertje gaan schrijven.

Stel we hebben de applicatie mijnenveger.
Ik kan met de ReadProcessMemory en Writeprocessmemory naar het geheugenblok van dit proces(mijnenveger) schrijven. Dit betekend dus dat ik de code van mijnenveger kan uitlezen en kopieeren naar een eigen stuk geheugen. Dit kan ik zichtbaar maken natuurlijk door het zelf te disassemblen.

Op dat moment heb ik dus de code van mijnenveger voor me'n neus. Echter ik weet nog niet wat de EIP is. Ik weet dus niet waar de processor op het moment van uitlezen precies was in de code van mijnenveger.

Als ik dus op het moment van de 'break' de op dat moment geldende registers kan uitlezen (EIP maar ook eax, ebx etc etc) weet ik veel meer over de status van de processor op het moment dat je 'breaked'. Dit is essentieel om me'n debuggertje te laten werken.

Hoop dat dit wat duidelijker is ??

Specs: 9800X3D, RTX 5090, 64GB, VR: Pimax Crystal-Light


  • Wilde
  • Registratie: December 2000
  • Niet online
Oh nog ff ter verduidelijking:

- Het is dus niet de bedoeling dat me'n debuggertje het hele proces mijnenveger stopt (ala Softice).

Ik wil alleen weten wat de inhoud van de registers is op een bepaald moment. Dus als ik voor EIP bv 12345 invul dan wil ik weten wat de registers zijn op het moment dat de eip positie 12345 bereikt in Mijnenveger.

Dit is niet Delphi specifiek, misschien zijn er API's voor maar ik kan 't (op msdn) niet echt vinden

Specs: 9800X3D, RTX 5090, 64GB, VR: Pimax Crystal-Light


  • Feyd-Rautha
  • Registratie: November 2001
  • Laatst online: 02-08-2025
Kan je niet doen met behulp van een beetje inline assembly in je code te proppen. Ervaring daarmee heb ik niet echt, maar je kan toch

code:
1
2
3
4
5
6
int eax_reg;

asm
{
     mov eax_reg, eax;
}


doen.

I must not fear. Fear is the mind-killer. Fear is the little-death that brings total obliteration. I will face my fear. I will permit it to pass over me and through me. Where the fear has gone there will be nothing. Only I will remain.


  • madwizard
  • Registratie: Juli 2002
  • Laatst online: 26-10-2024

madwizard

Missionary to the word of ska

Feyd-Rautha: dan krijg je het eax-register binnen je eigen proces en daar heb je weinig aan. Wilde: Windows heeft een hele debug API, zoek eens op MSDN of in de Platform SDK, er is een hele sectie over.

www.madwizard.org


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-05 23:07

.oisyn

Moderator Devschuur®

Demotivational Speaker

Debugging Functions @ MSDN

En een breakpoint plaatsen doe je door een INT3 instructie neer te zetten op het adres waar de breakpoint moet staan

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Wilde
  • Registratie: December 2000
  • Niet online
Ja ik weet wel hoe je een breakpoint in code in moet voegen..

Nee de uitleg van me'n probleem heeft msdn niet. Bedankt voor de links, maar ik ga zelf nog wel ff aan 't uitzoeken

Specs: 9800X3D, RTX 5090, 64GB, VR: Pimax Crystal-Light


  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 09-04 22:08
Beter zoeken, MSDN heeft hel wel gewoon onder de debugging APIs. De EIP is simpelweg het geheugenadres waar je de INT3 geschreven hebt. Localiseer een proces, suspend het, knal de INT3 erin, continue, vang de EXCEPTION_BREAKPOINT, expand de context en je bent er.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-05 23:07

.oisyn

Moderator Devschuur®

Demotivational Speaker

Wilde schreef op 12 mei 2004 @ 19:23:
Ja ik weet wel hoe je een breakpoint in code in moet voegen..

Nee de uitleg van me'n probleem heeft msdn niet. Bedankt voor de links, maar ik ga zelf nog wel ff aan 't uitzoeken
euhm
Wilde schreef op 12 mei 2004 @ 11:48:
Die bepaalde plek waarop getriggerd wordt(EIP) wil ik dus vooraf bepalen

Iemand enig idee hoe dit gaat of welke api's ik hiervoor moet gebruiken ?
Blijkbaar dus niet 8)7

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.

Pagina: 1