OllyDbg -Eingabe Finden-

Hi Leute,

ich möchte ne eingabestelle finden im opcode finde sie aber leider nicht :\ es sind schon ewig viele abende und chipstüten draufgegangen. also ich habe folgedes problem:

ich gebe zum beispiel an einer stelle wo das gefragt wird ein datum ein :) sagen wir es ist der 12122006 jetzt möchte ich diese eingabe mit ollydgb finden aber egal wie ich probiert hab ich finde es nicht :\

hat schonmal jemand ein ähnliches problem gehabt? wenn ja geb mir bitte ein paar tips :))

->inc
 
kommt drauf an, wie du das eingibsst. konsole oder über fenster?
 
Such mit Olly mal nach "all intermodular calls".

Folgende Calls sollten dein interesse wecken:
- GetDlgItemText
- GetWindowText
- SendMessage

Bei SendMessage musst du schauen ob die verschickte Nachricht WM_GETTEXT ist.
Wenn ja, ist das auch eine Methode um an den Text eines Fensters zu kommen.

Sollte es eine Konsolen-Anwendung sein, solltest du nach
- *scanf
- *gets
suchen. Allerdings kann es dir passieren, dass Olly nichts findet obwohl diese Funktionen verwendet wurden. Das liegt daran, dass manche dieser Funktionen direkt in die exe "reinkompiliert" werden und nicht aus einem anderen Modul importiert werden.

Falls du dich fragst von welchen Funktionen ich die ganze Zeit erzähle, schau einfach mal in die MSDN, da sind die Funktionen erklärt.

Hope that helps.
 
erstmal vielen dank für die antworten.

kommt drauf an, wie du das eingibsst. konsole oder über fenster?

argh! sry, für meine nicht detaillerte erklärung ist keine konsolenanwendug!

Such mit Olly mal nach "all intermodular calls".

Folgende Calls sollten dein interesse wecken:
- GetDlgItemText
- GetWindowText
- SendMessage

sehr intresannt! jetzt hab ich wieder futta zum weitersuchen! danke :)

Allerdings kann es dir passieren, dass Olly nichts findet obwohl diese Funktionen verwendet wurden. Das liegt daran, dass manche dieser Funktionen direkt in die exe "reinkompiliert" werden und nicht aus einem anderen Modul importiert werden.

kann ich in so nem fall nicht direkt nach dem opcode suchen ? der bleibt doch immer gleich für nen befehl.
nun gut ich will erstmal weitersuchen *hechel* *hechel*

thx euch beiden für weiter vorschläge bin ich immer offen :)

->inc
 
kann ich in so nem fall nicht direkt nach dem opcode suchen ? der bleibt doch immer gleich für nen befehl.

Nee, da an der Stelle dann nicht mehr "call scanf" steht, sondern ein call zu einer funktion im programm, die möglicherweise gar nicht mehr scanf heißt.
 
Olly breakt auch nicht bei Api-Calls, bei denen die Addresse der Funktion zur Laufzeit per GetProcAddress ermittelt wird, wobei ring0-Debugger diese Calls auch erkennen.
Es kann also manchmal auch ein bp auf GetProcAddress was nützen.

Außerdem ist der Opcode für "call scanf" von Programm zu Programm anders ist, da sich der entsprechende Eintrag in IAT an einer anderen Stelle befindet, oder, bei statischem Linken, die Funktion an einer anderen Addresse im Programm steht
 
@Inc:
Ich glaube du hast eine falsche Vorstellung davon was Opcodes sind. Opcodes sind Werte die einen Maschinenbefehl darstellen. Ein Aufruf einer Funktion z.B. besteht aus einer folge von Opcodes, es gibt also keinen einzelnen Opcode nach dem du suchen kannst. Wie Lesco schon gesagt hat.

Und wo Lesco es schon anspricht, die Schwäche in Olly ist, dass er Calls die nicht eine fixe Adresse aufrufen sondern eine Adresse aus einem Register (z.B. call edi) selten erkennt bevor du mit dort anhältst. Also gestaltet sich die Suche dann etwas schwieriger.Das passiert übrigens nicht nur bei GetProcAddress-Funktionen, sondern wird auch von Compilern zur Optimierung bei mehreren gleichen Calls hintereinander eingesetzt. Wie hier:
Code:
mov edi, MY_FUNCTION
push eax
call edi
mov ebx,eax
push ecx
call edi
...

PS.:
IDA kann sowas auch erkennen, aber das ist ein anderes Thema. ;-)
 
Noch ein kleiner Nachtrag:
Jedoch lässt sich das Problem mit den nicht erkannten Calls und deshalb nicht greifenden Breakpoints lösen indem man einfach einen bp auf den ersten Befehl der Funktion setzt(oder schneller in der Kommandozeile: "bp $funktion").
 
ok ich glaubs euch langsam den ich hab 75% aller GetDlgItemText, GetWindowText, SendMessage durch und niergends greift mein hWbP son mist watt nütz mir dann zu wissen das eine dieser funktionen meine infos transportieren oder besser gesagt wie kann ich nen bp setzten der auch wirklich anhält :(

@nop ich dachte immer
Code:
Opcode | Mnemonic
  90   |   nop
  8B   |   mov

hmmm IDA hab ich hier noch irgendwo auf der pladde rumliegen ist aber wirklich schrecklich kompliziert das ding.

ps: vielen dank Lesco, nop und v01d


->inc
 
Zurück
Oben