0
Ich lerne immer noch ARM und ich konnte nicht verstehen, was diese Funktion tun soll.Brauchen Sie Hilfe ARM-Funktion zu verstehen
Können Sie mir helfen zu erklären, wie es funktioniert?
.text:0006379C EXPORT _nativeD2AB
.text:0006379C _nativeD2AB
.text:0006379C var_28 = -0x28
.text:0006379C
.text:0006379C STMFD SP!, {R4-R11,LR}
.text:000637A0 SUB SP, SP, #0x3A4
.text:000637A4 STMFA SP, {R0-R3}
.text:000637A8 LDR R0, =(_GLOBAL_OFFSET_ - 0x637B8)
.text:000637AC LDR R1, =(__stack_chk - 0x134EAC)
.text:000637B0 ADD R0, PC, R0 ; _GLOBAL_OFFSET_
.text:000637B4 LDR R0, [R1,R0] ; __stack_chk
.text:000637B8 LDR R0, [R0]
.text:000637BC STR R0, [SP,#0x3C8+var_28]
.text:000637C0 MOV R0, #1
.text:000637C4 ADR R1, sub_637D0
.text:000637C8 MUL R0, R1, R0
.text:000637CC MOV PC, R0
.text:000637CC ; End of function _nativeD2AB
.
.got:00134EAC _GLOBAL_OFFSET_TABLE_ DCD 0
.
.got:00134B0C AREA .got, DATA
.got:00134B0C __stack_chk DCD __stack_chkA
.
Den Rest der Funktion gefunden. Wenn ich einen Teil davon richtig verstanden hat, so scheint es, wird die Daten Scrambling, obwohl das nur eine wilde Vermutung sein kann:
.text:000637D0 sub_637D0
.text:000637D0 MOV R0, #1
.text:000637D4 ADR R1, sub_637E0
.text:000637D8 MUL R0, R1, R0
.text:000637DC MOV PC, R0
.text:000637DC ; End of function sub_637D0
.text:000637E0 sub_637E0
.text:000637E0
.text:000637E0 arg_14 = 0x14
.text:000637E0
.text:000637E0 STR R2, [SP,#arg_14]
.text:000637E4 MOV R0, #1
.text:000637E8 ADR R1, loc_637F4
.text:000637EC MUL R0, R1, R0
.text:000637F0 MOV PC, R0
.text:000637F0 ; End of function sub_637E0
.text:000637F4 loc_637F4
.text:000637F4 STR R2, [SP,#0x28]
.text:000637F8 STR R0, [SP,#0x18]
.text:000637FC MOV R1, #2
.text:00063800 STR R2, [SP,#0x1C]
.text:00063804 STR R0, [SP,#0x20]
.text:00063808 STR R0, [SP,#0x24]
„Dies ist der Wert von der Funktion zurückgegeben wird“ - es ist nicht alles zurückkehrt, ist es eine bizarr berechnete Sprung tun _to_ 'sub_637D0 ', was mit ziemlicher Sicherheit ein von Disassemblern erzeugtes Symbol ist, das den nächsten Befehl anzeigt, der dem' mov pc, r0' bei 0x637cc folgt. Ich frage mich, ob die 'mov r0, # 1 'hotpatched sein soll, oder es ist nur die am wenigsten optimierte Single-Entry Jump-Tabelle der Welt. Wie auch immer, wir können uns nur fragen, wie der Rest der Funktion aussieht ... – Notlikethat
Ich denke, ich habe den Rest der Funktion gefunden. Kein Grund mehr, sich zu wundern ^^. Übrigens, danke für deine Antwort. –