2016-04-19 24 views
2

Ich versuche, ein Spiel (mit Erlaubnis) umzubauen. Ich verwende IDA Pro. Die Funktionen sind sub_xxxxx, was bedeutet, dass sie geschützte Funktionen sind.Reverse-Engineering-Speicherladetechniken?

die Saiten jedoch, dass die Namen für die Funktionen sein würde, wenn sie bei der nur Querverweis suchen, sind in der folgenden Weise dargestellt:

__data:xxxxxxxx     DCD aEcdh_compute_k  ; "ECDH_compute_key" 
__data:xxxxxxxx     DCB 0 
__data:xxxxxxxx     DCB 0x40 
__data:xxxxxxxx     DCB 12 
__data:xxxxxxxx     DCB 0x3B 

Einige der Zahlen sind die DCBs einschließlich geändert aus Gründen der Sicherheit (OCD)

Ich hatte versucht, die 40 12 3B als Offset zu verwenden. Der Offset bringt mich jedoch in die Mitte eines zufälligen loc_xxxxx, zusammen mit den anderen.

Meine Frage an Sie ist, wie würde ich gehen, um herauszufinden, wo die eigentliche Funktion ist? Ist der Offset von der Spitze des .data Segments? Oder ist es von der tatsächlichen deklarierenden Zeichenkette selbst?

Ich erwarte oder benötige keine vollständige Antwort; Offensichtlich ist dies in der Vergangenheit nicht vorgekommen, und ich habe möglicherweise nicht genügend Informationen gegeben. (Wenn Sie weitere Informationen benötigen, fragen Sie bitte, danke). Im Grunde frage ich: "Was soll ich als nächstes versuchen?", Um die wahrscheinlichste Antwort zu finden. Vielen Dank.

Antwort

0

Sie ignorieren die Prozessoren Endianity, die normalerweise little endian ist.

Hitching D zwei Mal (einmal, um die Datendarstellung von einem einzelnen Byte in Word zu konvertieren und ein anderes, um es von Word in dword zu konvertieren) konvertiert die Daten in ein DWord für Sie. Alternativ könnten Sie treffen auch O direkt Datendarstellung zu einem Offset zu konvertieren (die auf den meisten Architekturen der Größe dword ist)

Dies ist höchstwahrscheinlich Sie zeigen Offset 0x003b1240 zu adressieren, was wahrscheinlich ist, die Adresse, die Sie waren Auf der Suche nach.