| Hacks & Crackmes Tests, Fragen oder Hilfestellungen. Crackmes und Hackits werden hier diskutiert. |
Diskussion: Um welche Art von Schutz handelt es sich? im Forum Hacks & Crackmes, in der Kategorie Software Home; Anzeige Hallo Leute ich hab hier eine DLL die auf mich gecrytet wirkt. Nach dem ich mir jetzt paar Tutorials ...
![]() |
| | #1 (permalink) | |||||
| Registriert seit: 04.01.08 ![]() Likes: 0 | Anzeige Hallo Leute ich hab hier eine DLL die auf mich gecrytet wirkt. Nach dem ich mir jetzt paar Tutorials angeguckt habe ,hab ich festgestellt mit so Sachen wie antidebuger hat das nicht viel zu tun. Es ist eher eine Art Verschlüsselung von 2-3 Subroutinen um Cracken zu verhindern/erschweren. Mit Peid ist nichts erkennbar,es wird lediglich Visual Studio C++ angezeigt. Auffälig ist vor allem das es exakte Bereiche betrifft und nicht die gesamte DLL außerdem sind doch Text Strings nicht zu Lesen. Hier mal ein paar Beispiele: Normale Stelle: Zitat:
Zitat:
Zitat:
Normal: Zitat:
Zitat:
Wie kann ich nun an sowas herangehen? Ich hab gehört es sollte sich wenn die DLL geladen ist uncryted im Speicher befinden, allerdings komm ich damit nicht groß weiter. thx =) | |||||
| | |
| | #2 (permalink) |
| Moderator ![]() Registriert seit: 20.07.05 ![]() ![]() ![]() ![]() ![]() ![]() Likes: 202 | Wie kommst Du darauf, dass die DLL verschlüsselt wäre? Eine DLL hat ja nicht nur code, sondern auch data - Bereiche. Der von Dir gepostete Auszug Code: 2C DB 2C ; CHAR ',' 100404EC 57 DB 57 ; CHAR 'W' 100404ED 76 DB 76 ' Grundsätzlich ist es recht schwer, ohne geeignetes Aufrufprogramm oder Dokumentation (was die DLL können muss) vorzugehen, da man dann keinerlei Kenntnisse über Parameteranzahl und Parameterart, Rückgaben, Laufzeitverhalten usw der Funktionen hat. Wenn ein "Aufrufpogramm" vorhanden ist, könnte man so vorgehen: mit einem PE Editor die Exports der DLL anschauen. Das Aufrufprogramm mit einem Debugger laden und schauen, was passiert, wenn einzelne Funktinen der DLL aufgerufen werden. Bei OllyDbg wäre z.B eine Möglichkeit, unter "Options->Debugging Options->Events" das "Break on new modul DLL " einzustellen. Sobald die DLL geladen wurde, pausiert Olly und man kann auf den ganzen Exportfunktionen Breakpoints platzieren und schauen, ob der vermutlich verschlüsselte Code nicht irgendwann entschlüsselt wird (z.B in dem man einen Hardware Breaktpoint "on read" oder "on write" auf die (vermeindlich verschlüsselte) Code stelle setzt) und ob diese Codestellen überhaupt ausgeführt werden. Wenn diese Stellen entschlüsselt werden (die DLL liegt also entschlüsselt vor), kann man i.R entweder mit dem Debugger oder einem entsprechenden Programm (LordPE, PE Tools) ein Speicherabbild (->Dump) erstellen. Nur hast Du dann das Problem, dass es damit i.R nicht getan ist. Ob man es machen muss, kommt allerdings auf das Problem an. Ansonsten besteht durchaus die Möglichkeit, dass bestimmte Funktionen der DLL wirklich "per Hand" verschlüsselt wurden - das wird ein Analyseprogramm wie PEID oder RDG meistens nicht erkennen (dafür aber oft benutzte "offizielle" Algorithmen wie AES, DES, RSA oder Hashalgos). Edit: ich sehe gerade, dass Du Vista 64 benutzt. K.A ob es da schon gescheite Debugger gibt. Eventuell musst Du Dich entweder mit dem MS-Debugger anfreunden oder kurzfristig irgendwo (z.B VirtualPC) ein 32-Bit XP/2000/(eingeschränkt)Vista System installieren, da die meisten bewährten Tools noch nicht für 64-Bit gibt.
__________________ Noch mal, für alle Pseudo-Geeks: 1+1=0. -> 10 wäre Überlauf! Selig, wer nichts zu sagen hat und trotzdem schweigt. |
| | |
| HaBOT | - Anzeige - |
| |
| | #3 (permalink) |
| Themenstarter Registriert seit: 04.01.08 ![]() Likes: 0 | Also mit Vista hab ich eigentlich weniger Probleme als ich überall lese,Speicher verändern,Olly Dbg, das funzt alles. Nur muss bei Olly Dbg, Olly Advanced auf 64Bit eingestellt werden und die Programme brauchen Admin Rechte, sonst funktioniert bei mir mitlerweile alles wie bei XP =D . (die DLL ist ja nicht in 64bit geschrieben Das die DLL verschlüsselt ist vermute ich deswegen weil die letze Dll Version genau an den betroffenen Stellen anders aussah und der ASCII Code lesbar war was jetzt nicht mehr ist. Da es sich um eine DLL handelt die Injected wird, glaube ich werde ich kaum Exports finden.DIese wird mit einem Loader direkt beim Start injected. Breakpoints kann ich auf die Bereiche setzen die ich angesprochen habe allerding killt dies meist den kompletten Prozess. Das mit dem Dumpen klingt sinnvoll aber ich befürchte der wird mir die selbe Datei wieder auspucken die ich habe wenn ich mit Olly den Prozess attache. |
| | |
| | #4 (permalink) | |
| Moderator ![]() Registriert seit: 20.07.05 ![]() ![]() ![]() ![]() ![]() ![]() Likes: 202 | Wie setzt Du die BPs in Olly, so dass der Prozess gekillt wird? Falls es nicht um Anti-Debugmaßnahmen handelt, tippe ich darauf, dass die BPs (die "gewöhnlichen" - also INT3) die Entschlüsselung direkt stören (durch ihr vorhandensein Hier sollstest Du mal mit HardwareBPs probieren (Rechtsklick auf den Code -> BPs ->Hardware. In der Regel kann man im Originalolly HardwareBPs "on read" und "on write" nur im Dumpfenster setzen - daher muss man zuerst die gewünschte Codestelle rechtsklicken und "Follow in dump" machen). Diese sind zwar begrenzt, dafür wird der Code aber auch nicht verändert (im Gegensatz zu SoftwareBPs - die man in Olly mit F2 setzt.In Olly-Code-Anzeige selbst sieht man zwar nichts, aber in Wirklichkeit schreibt Olly in den Code für die BPs jeweils einen INT3 (Opcode=0xCC) was sich dann bei ent/verschlüsselung fatal auswirkt) Zitat:
Das kannst Du ausnutzen: Patche den Entrypoint der DLL auf EB FE um. Das ist ein 0001 JMP 0001 (also die kleinstmögliche Schleife). Wenn die DLL geladen wird (wie gesagt, hängt von der Methode ab, aber i.R wird die WinAPI LoadLibrary genutzt, die die DLL lädt und dabei automatisch die DLL-Main aufruft) ist die erste Anweisung die von der DLL ausgeführt wird EBFE und damit hast Du komfortabel viel Zeit die Anwendung in Olly zu attachen, die DLL zu finden, den EBFE wieder zu korrigieren und dann zu beobachtenl, was gemacht wird. In LordPE würde es z.B so gehen: unter "EntryPoint" den Wert merken, "FLC" Button aufrufen, "RVA" anklicken, den Wert eintragen - nun zeigt das Editfeld unten die Bytes an (i.R irgendwas mit 55 8B ...) die überschreibst Du mit EB FE und speicherst das ganze. Dank OllyAdvanced sollten eigentlich auch kleinere Antidebugtricks nicht ins Gewicht fallen. Allerdings würde ich bei selbstmodifizierendem Code trotzdem auf HardwareBPs setzen.
__________________ Noch mal, für alle Pseudo-Geeks: 1+1=0. -> 10 wäre Überlauf! Selig, wer nichts zu sagen hat und trotzdem schweigt. | |
| | |
![]() |
| - Anzeige - | |
| |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Programm welches sich selbst weiter entwickelt. Welche Sprache? | SargoDarya | Code Kitchen | 13 | 25.06.08 14:14 |
| Welche Tools zum Schutz vor Rootkits? | Cracksoldier | Windows | 4 | 01.12.07 13:54 |
| um welches laptop-modell handelt es sich hier?? | crusaderv83 | Hardware Probleme | 2 | 02.09.06 12:28 |
| Welche Grafikkarten eignen sich für meinen Pc bzw welche kann ich einbauen?? | alexp | Hardware Probleme | 7 | 28.05.06 13:19 |
| GRUNDLAGEN: Wie kann ich herausfinden ob es sich um NTFS oder Fat handelt? | Cyberm@ster | Hardware Probleme | 3 | 30.06.04 11:47 |