Skip to content

Commit

Permalink
Fix incorrect stack offsets of variables.
Browse files Browse the repository at this point in the history
'push <reg-list> instructions for which the second register was the FP,
reset the stackptr variable to 0. This led to wrong bp offsets in the variable names.
In this case it was +0xc.
  • Loading branch information
Rot127 committed Dec 17, 2023
1 parent 8c0f32a commit b9baff2
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 17 deletions.
2 changes: 1 addition & 1 deletion librz/analysis/p/analysis_arm_cs.c
Original file line number Diff line number Diff line change
Expand Up @@ -1482,7 +1482,7 @@ jmp $$ + 4 + ( [delta] * 2 )
}
// 0x00008160 04202de5 str r2, [sp, -4]!
// 0x000082a0 28000be5 str r0, [fp, -0x28]
if (REGBASE(1) == ARM_REG_FP) {
if (ISMEM(1) && REGBASE(1) == ARM_REG_FP) {
op->stackop = RZ_ANALYSIS_STACK_SET;
op->stackptr = 0;
op->ptr = MEMDISP(1);
Expand Down
32 changes: 16 additions & 16 deletions test/db/cmd/types
Original file line number Diff line number Diff line change
Expand Up @@ -1940,26 +1940,26 @@ aaft
afvl
EOF
EXPECT=<<EOF
var int32_t var_1454h @ stack - 0x1454
var void *var_1438h @ stack - 0x1438
var const char *s1 @ stack - 0x1038
var int *wstatus @ stack - 0x44
var int32_t var_1460h @ stack - 0x1460
var void *var_1444h @ stack - 0x1444
var const char *s1 @ stack - 0x1044
var int *wstatus @ stack - 0x50
var int32_t var_4ch @ stack - 0x4c
var const char *var_48h @ stack - 0x48
var int32_t var_44h @ stack - 0x44
var int32_t var_40h @ stack - 0x40
var const char *var_3ch @ stack - 0x3c
var int32_t var_38h @ stack - 0x38
var int32_t var_34h @ stack - 0x34
var int32_t var_3ch @ stack - 0x3c
var pid_t pid @ stack - 0x38
var const char *v2 @ stack - 0x34
var int32_t var_30h @ stack - 0x30
var pid_t pid @ stack - 0x2c
var const char *v2 @ stack - 0x28
var const char *src @ stack - 0x2c
var int32_t var_28h @ stack - 0x28
var int32_t var_24h @ stack - 0x24
var const char *src @ stack - 0x20
var int32_t var_1ch @ stack - 0x1c
var const char *s @ stack - 0x20
var const char *var_1ch @ stack - 0x1c
var int32_t var_18h @ stack - 0x18
var const char *s @ stack - 0x14
var const char *var_10h @ stack - 0x10
var int32_t var_ch @ stack - 0xc
var int32_t var_8h @ stack - 0x8
var const char *option @ stack - 0x4
var int32_t var_14h @ stack - 0x14
var const char *option @ stack - 0x10
arg int argc @ r0
arg char **argv @ r1
EOF
Expand Down

0 comments on commit b9baff2

Please sign in to comment.