| Code Kitchen Allgemeines Coder-Forum rund um das Programmieren eigenständiger, ausführbarer Programme. |
Diskussion: Api entschlüsseln im Forum Code Kitchen, in der Kategorie Software Home; Anzeige Hi Leute :D, Ich bin fast damit fertig, einige Programmfunktionen in ASM zu übersetzen um sie in anderen Programmen ...
![]() |
| | #1 (permalink) |
| Registriert seit: 10.11.05 ![]() Likes: 0 | Anzeige Hi Leute :D, Ich bin fast damit fertig, einige Programmfunktionen in ASM zu übersetzen um sie in anderen Programmen einzusetzen. Leider bin ich auf einen hartnäckigen Fall gestoßen der seine API obfuscated/verschlüsselt hat C++: Code: if (lRet != ERROR_SUCCESS)
{
return 0;
}
else
{
ofstream file("C://stext.txt", NULL);
}
return 1; Code: 0040109D > \6A 01 PUSH 1 0040109F . 6A 40 PUSH 40 004010A1 . 6A 00 PUSH 0 004010A3 . 68 4C364000 PUSH steam-ch.0040364C ; ASCII "C://stext.txt" 004010A8 . 8D8D 60FFFFFF LEA ECX,DWORD PTR SS:[EBP-A0] 004010AE . FF15 80524000 CALL DWORD PTR DS:[<&MSVCP80D.??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAE@PBDHH@Z>] ; MSVCP80D.??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAE@PBDHH@Z 004010B4 . 8D8D 60FFFFFF LEA ECX,DWORD PTR SS:[EBP-A0] 004010BA . FF15 7C524000 CALL DWORD PTR DS:[<&MSVCP80D.??_D?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXXZ>] ; MSVCP80D.??_D?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXXZ 004010C0 > B8 01000000 MOV EAX,1 004010C5 > 8BE5 MOV ESP,EBP 004010C7 . 5D POP EBP 004010C8 . C3 RETN sie ist auf jedenfall in der MSVCP80D, aber der Name ist verschlüsselt, ich möchte es umschreiben als z.B. Code: Call ostream biegt mir dann den Jump auf die richtige Adresse um. Den Umweg über die IAT nehme ich später... (vielen Dank nochmal an CDW für die Erklärung) Die Frage: Wie entschlüssele ich das, damit ich es in Olly nehmen kann, und die API identifizieren kann? Grüße |
| | |
| | #2 (permalink) |
| Moderator ![]() Registriert seit: 20.07.05 ![]() ![]() ![]() ![]() ![]() ![]() Likes: 202 | Sie ist nicht verschlüsselt - das was Du siehst, hat Olly "selbst" reingeschrieben. Und zwar handelt es sich um Exportnamen der DLL. Schau sie (die DLL) Dir einfach im LordPE an (Directories->ExportTable).Da sind lauter solcher Bezeichnungen. Das ist der Werk des Linkers (afaik hat diese Benennung schon eine Bedeutung und man kann hier irgendwas Genaues über die Argumente und deren Eigenschaften ablesen). Ist auch nicht dazu gedacht, dass der Programmierer diese Funktionen "direkt" aufruft Code: FF15 80524000 CALL DWORD PTR DS:[<&MSVCP80D.??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAE@PBDHH@Z>] Die Adresse [405280] ist höchstwahrscheinlich ein IAT Eintrag. Olly schaut also nach, wohin der DWORD in 405280 verweist und löst den Verweis auf den DLL Export automatisch auf - setzt also den Namen rein (Olly hat nicht umsonst die Disassemblerfähigkeiten). Wenn es nur um Ollyanzeige geht: ein Enter auf den Call (so dass man im Ziel landet) und per Rechtsklick->"Label" auswählen. Jetzt kann man einen eigenen Namen vergeben. Lässt Du den Code per STRG+A neu analysieren, sollte "call programm.neuername" in Olly zu sehen sein. Um es selber zu benutzen: am einfachsten wäre es, diese Funktion per OrdinalValue zu importieren, dazu öffnet man die DLL im LordPE und schaut unter Exports nach: Code: E2 ??1?$basic_ofstream@DU?$char_traits@D@std@@@std@@UAE@XZ LoadLibrary(DLL) GetProcAddres(0E2h). würde dann die Adresse der Funktion liefern.
__________________ 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: 10.11.05 ![]() Likes: 0 | Zitat:
aber wie mache ich das mit dem LoadLibary und GetProcAdress in ASM? Was sind das für APIs? Muss ich die DLL als string übergeben !? | |
| | |
| | #4 (permalink) | |
| Moderator ![]() Registriert seit: 20.07.05 ![]() ![]() ![]() ![]() ![]() ![]() Likes: 202 | erstmal: was genau willst Du denn überhaupt machen? Zitat:
Wenn Du sie in ASM nutzen willst - es hängt stark vom verwendetem Assembler ab, normalwerweise gibt es eine Include/lib datei, in der diese (und viele Funktionen mehr) schon deklariert sind und man sie benutzen kann - in MASM z.B Code: incude windows.inc include kernel32.inc includelib kernel32.dll ... .data library db "irgendeinedll",0 funktionsname db "funktionsname",0 .code invoke LoadLibrary,offset library ;in EAX kommt das Handle zur DLL zurück, die DLL wird gleichzeitig in den Speicher geladen (falls sie nocht schon vorhanden ist) invoke GetProcAddress,eax,123 ;<- Ordinalnummer oder wenn man per String die Funktion importieren mag invoke GetProcAddress,eax,offset funktionsname
__________________ Noch mal, für alle Pseudo-Geeks: 1+1=0. -> 10 wäre Überlauf! Selig, wer nichts zu sagen hat und trotzdem schweigt. | |
| | |
| | #5 (permalink) | ||
| Themenstarter Registriert seit: 10.11.05 ![]() Likes: 0 | Zitat:
Ich möchte ja die Funktionen nachher in ein fremdes Programm einfügen, das meinte ich damit ![]() das ist dann ja noch nen level "tiefer" als MASM | ||
| | |
| | #6 (permalink) | |
| Moderator ![]() Registriert seit: 20.07.05 ![]() ![]() ![]() ![]() ![]() ![]() Likes: 202 | Zitat:
Und dann eben der Code-Injection gefummel - am besten eine neue Section hinzufügen, die nötigen Strings reinscheriben und den Code reintippen benutze aber immer den IAT-Umweg. Wenn Du nämlich in Olly "call offstream" oder ähnliches schreibst, dann macht Olly da eine Direktadresse hin - es führt dann dazu, dass es dann nicht auf anderen Systemen läuft.
__________________ Noch mal, für alle Pseudo-Geeks: 1+1=0. -> 10 wäre Überlauf! Selig, wer nichts zu sagen hat und trotzdem schweigt. | |
| | |
| | #7 (permalink) | ||
| Themenstarter Registriert seit: 10.11.05 ![]() Likes: 0 | Zitat:
Leider kann ich den gecrypteten Call nicht mit LordPE in die IAT einfügen, weil er sacht, dass der Name ungültig ist. Und IID King crasht dabei sowieso. | ||
| | |
| | #8 (permalink) | |
| Moderator ![]() Registriert seit: 20.07.05 ![]() ![]() ![]() ![]() ![]() ![]() Likes: 202 | Naja, dann eben per LoadLibrary und GetProcAddress (Notfalls diese über IIDKing oder LordPE hinzufügen) importieren. Aber: wozu sich überhaupt mit der msvcp.dll abzugeben? Der User müsste diese nämlich auch haben und letzendlich geht alles genauso in WinAPI: CreateFile und WriteFile/ReadFile. Naja, das ganze ist ganz normales Codeinjecting - umständlich aber machbar.Eventuell sollte man nur kleiner anfangen und ein bisschen Erfahrung darin sammeln. Allerdings habe ich ehrlich gesagt gar keine Lust, dir bei deinem Projekt zu helfen. Halte weder von Trojas noch vom "Steamaccountabziehen" etwas ![]() http://www.underground.ag/showthread.php?t=21062 Zitat:
__________________ Noch mal, für alle Pseudo-Geeks: 1+1=0. -> 10 wäre Überlauf! Selig, wer nichts zu sagen hat und trotzdem schweigt. | |
| | |
| | #9 (permalink) |
| Themenstarter Registriert seit: 10.11.05 ![]() Likes: 0 | Naja habs auch so geschafft danke trozdem, ich habe ja weniger selber Interesse an der Sache, deshalb frage ich ja andere danach was sie suchen, es ist ja nur zu lernzwecken |
| | |
| | #10 (permalink) |
| Senior Member Registriert seit: 03.09.05 ![]() Likes: 0 | Nur mal nebenbei: Wenn du so viel Code in eine fremde Datei einfügen willst, solltest du den Code in eine Dll packen und dann nur den Code zum laden/aufrufen der Dll einpatchen, dass erspart dir eine Menge Arbeit. Das "Projekt" selbst finde ich dumm, da du damit lediglich Skript-Kiddies hilfst(schon allein das Forum auf dem du da postest). Dieses Kiddie-Forum ist u.a. der Grund, warum der Begriff "Hacker" in der Öffentlichkeit so in ein falsches Licht gerückt wird. Es gibt genug sinnvollere Anwendungsmöglichkeiten für solche Dinge allerdings nicht auf einer solchen "virtuellen Müllkippe" wie dieses verachtenswerte Forum, zu dem CDW einen Link postete. |
| | |
| | #11 (permalink) | |
| Themenstarter Registriert seit: 10.11.05 ![]() Likes: 0 | Zitat:
Hab ja bis jetzt viel gelernt davon, ich lerne am besten "by doing" weil dann sitzt es eben richtig. | |
| | |
![]() |
| - Anzeige - | |
| |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| PHP entschlüsseln... | maniman2 | Cryptography & Encryption | 10 | 25.10.08 21:43 |
| Entschlüsseln, wie? | adler05 | Cryptography & Encryption | 4 | 07.07.08 13:30 |
| inx entschlüsseln | NaTaZ | Cryptography & Encryption | 0 | 24.10.06 19:04 |
| DES Entschlüsseln? | Grayson | Cryptography & Encryption | 1 | 04.06.05 15:17 |
| jpg entschlüsseln | Sino | Windows | 6 | 30.12.04 16:14 |