Gå til innhold

Overvåke kall av WinAPI'er


Anbefalte innlegg

Siden det er så mange smarte her, så er det lov å spørre:

Er dette mulig på noen som helst måte? :)

 

La oss si at jeg vil finne ut om "calc.exe" åpner en messagebox (som hvis jeg forstår det riktig blir gjort (eller KAN bli gjort) via api-kallet "Messagebox" i user32). Er det mulig å legge til et event i et program som overvåker om dette blir gjort?

 

 

På forhånd takk for hjelpen! :)

Lenke til kommentar
Videoannonse
Annonse

Hmmmmm, regner med at dette er mulig hvis du attacher debugger til calc.exe, tror faktisk du kan lage en egen debugger i .NET, men hvordan dette gjøres er jeg ikke sikker på.

 

Det du ser etter er om et program kalle "call [addresse]" men om windows eller noen programmer ser etter dette stadig vekk, ville vært ressurskrevende.

 

Det du kan gjøre, er å se om programmene som kjører linker til denne funksjonen, eneste måten jeg har fått til dette på, er å åpne en .exe fil, og kikke på Import seksjonen, men dette er vanskeligere en det burde vært.

 

Alle programmer som kaller DLL-funksjoner, har en import tabell, dette fungerer som at programmet har et eget lite program for å kalle dll-er, eller eksterne funksjoner:

f.eks.

CallMessageBox:
 Call MessageBox
 return
CallShowWindow:
 Call ShowWindow
 return

 

og i programmet ser det slik ut

 

push "Hello World"
push vbMsgBoxStyle.OkCancel
call CallMessageBox

 

som da kaller CallMessageBox, som igjen kaller User32.MessageBox

 

Dette gjør at det er forholdsvis lett å lete i programmet ett "call CallMessageBox", men en måtte isåfall sjekket etter hver instruksjon, eller bytte ut CallMessageBox funksjonen, med en funksjon som sier ifra til ditt program.

 

Skal sjekke litt ut hvordan man lager en debugger.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...