OlyDbg -Search Text String-

hi leute,

Also ich habe folgendes probelm mit OlyDbg:

ich versuche in einem modul einen textstring zu suchen, wenn ich Search Binary mache finde ich nix!! obwohl es drin sein muss was ich suche. mache ich Search ALL TEXT STRINGS findet ers natürlich aber was will ich mit allen das sind zuviele will nur einen begriff in der dll suchen. kennt sich jemand aus !?

vielen dank im vorraus

-inc-
 
Methode 1: Alt+M drücken (Memorymap ansicht), die DLL bereiche auswählen (normalerweise irgendwo "oben", adressbreich: 1xxx) und dann STRG+B - jetzt den Suchtext eingeben
Methode2: in den Modul wechesln (also sicherstellen, dass Du nicht in der Exe, sondern in der DLL bist: ALT+E und dann die DLL auswählen) und entweder STRG+B für Suche (man sollte dann aber im "Data" Bereich sein) oder wieder wie Du es schon gemacht hast "Search all String" - dann hat man zwar viele Strings, man kann aber Rechtsklick "Search for text" machen ;)

Möglichkeit 3: die Strings sind verschlüsselt und werden erst zur Laufzeit, kurz vor dem gebrauch "entschlüsselt". Da wirds schon etwas komplizierter.
 
wOOw!

das ging aber mal echt schnell :D *freu* ja stimmt mit methode zwei war ich schon ganz nah dran nur dann nochmal rmb vergessen :\ also erstmal vielen dank das mit dem memoryblock durchsuchen ist auch super währe ich wohl erst in jahren drauf gestossen :) hört sich für mich so an als ob du das ding auswending kennst ^^

kannst du mir auch sagen was der unterschied ist zwischen nem hardware breakpoint und dem welchen ich mit F2 setzte ?!

-inc-

ps: meine suche funtz jetzt wunderbar vielenDank CDW
 
hardware breakpoint und dem welchen ich mit F2 setzte
Naja, soweit ich weiß werden für HardwareBPs die Debugregister der CPU benutzt - so dass diese dann auch den Part mit dem "pausieren" usw übernimmt.
Wogegen der "F2" BP von Olly "intern"(also softwaremäßig) geregelt wird (afaik wird es mit INT3 überschrieben, nur der "User" bekommt es nicht mit, weil Olly nach außen hin noch den richtigen Code darstellt). Damit liegt auch eine Codeänderung vor, die man auch "entdecken" kann.
Die Hardware BP sind imho (zumindest in Olly) bei bestimmten Sachen zuverlässiger und einfacher. Nur werden diese durch die Reigsteranzahl begrenzt. Besonders wenn man SpeicherBPs macht, sollte man HardwareBPs einsetzten (bei Software-Memory-BPs hatte ich auch schon ab und zu Systemabstürze und änliches).

hört sich für mich so an als ob du das ding auswending kennst ^^
das kann man gar nicht - hab gerade, als ich die Referenz gesucht habe, etwas Neues entdeckt - Message BPs :)
Aber so ein paar Abkürzungen erleichtern einem schon das Leben:
http://www.ollydbg.de/quickst.htm
 
oje, das musste ich mir dreimal durchlesen und es ein halbes mal zu kapieren :D ich habe auch schon in der dll datei erfolgreich gefunden was ich gesucht habe und tatsächlich stürtz es beim F2 breakpoint ab!

leider mag ich den mehr weil er farblich so schön gekennzeichnet ist... und beim hardware breakpoint habe ich keine markierung das irritiert mich etwas.

den quickstart link zieh ich mir grad rein :)

btw die crackme sachen sind voll intressant aber leider gibts da keine anfänger sektion wo wirklich einfache sachen drin sind. egal man kann nicht alles haben sagt mein opa immer ;)

vielen dank für all die hilfe

-inc-
 
Ich hoffe ich darf diesen Thread mal für eine Nebenfrage missbrauchen, weil sie doch sehr nah liegt:
Wie finde ich denn am besten die Adresse einer so angelegten globalen Variable in Olly wieder?
Code:
char* var = "content";

"content" findet er leider auch nicht bei einer suche nach Textstrings. Es kommt mir vor als ob der Compiler die versteckt.
Wenn jemand weiß wie man die Adresse am besten findet würde ich mich über eine Antwort freuen :>.
(Habe weniger Erfahrung mit OllyDbg)
 
"content" findet er leider auch nicht bei einer suche nach Textstrings
Die Variable muss irgendwo auch referenziert werden - d.h wenn Du diese (im Quellcode) zwar anlegst, aber im späterem Programmablauf nie benutzt, dann optimiert ein halbwegs guter Compiler sie auch schon mal gerne weg.

Naja, die "Memory" Suche wäre eigentlich die zuverlässigste Methode:
Menüs: "View"->"memory". Hier einen Eintrag ganz oben auswählen, Rechtklick und "Search" wählen. Jetzt wird der Speicher des Programms komplett nach diesem String abgegrast. Nun muss man nur noch aufpassen, wo man diesen findet - es kann mehrere Fundstellen geben (je nach Benutzung der Variable). Man sollte vorerst nur den Exebereich nehmen - erkennbar an dem Exenamen in "Owner"-Spalte. Mit Rechtklick, "Search next" kann man weitersuchen.
Wenn der String in der Exe drin ist (unverschlüsselt) dann findet ihn diese Methode auf jedenfall :)
 
Danke, habs jetzt gefunden. :)
Geh ich richtig in der Annahme dass die Speichadresse, mit der ich den Inhalt von var jetzt ansprechen kann 45E260 ist? (Da der Inhalt der Variable ja am Anfang der Zeile anfängt)

memory_content.png
 
Zurück
Oben