havenow 发表于 2021-3-16 17:52

如何动态调试来学习ARM汇编 1

单步调式之前的程序
使用的命令是            ni
查看地址处的数据   p/x *0xab18f410


#include <stdio.h>

#define ARM "armv7a"

int main(int argc, char** argv){
        printf("fuck %s\n", ARM);
        return 0;
}

对应的汇编代码

1:   0xab18f410 <+0>:        push        {r11, lr}
2;   0xab18f414 <+4>:        mov        r11, sp
3:   0xab18f418 <+8>:        sub        sp, sp, #16
4:   0xab18f41c <+12>:        ldr        r2,         ; 0xab18f45c <main+76>
5:   0xab18f420 <+16>:        add        r2, pc, r2
6:   0xab18f424 <+20>:        ldr        r3,         ; 0xab18f460 <main+80>
7:   0xab18f428 <+24>:        add        r3, pc, r3
8:   0xab18f42c <+28>:        movw        r12, #0
9:   0xab18f430 <+32>:        str        r12,
10: 0xab18f434 <+36>:        str        r0,
11: 0xab18f438 <+40>:        str        r1,
12: 0xab18f43c <+44>:        mov        r0, r2
13: 0xab18f440 <+48>:        mov        r1, r3
14: 0xab18f444 <+52>:        bl        0xab18f4b0
15: 0xab18f448 <+56>:        movw        r1, #0
16: 0xab18f44c <+60>:        str        r0,
17: 0xab18f450 <+64>:        mov        r0, r1
18: 0xab18f454 <+68>:        mov        sp, r11
19: 0xab18f458 <+72>:        pop        {r11, pc}
   0xab18f45c <+76>:                        ; <UNDEFINED> instruction: 0xffffef57
   0xab18f460 <+80>:                        ; <UNDEFINED> instruction: 0xffffef48

执行第14条指令bl        0xab18f4b0之前


bl printf
bl 子程序的调用
R0-R3传参数
大于4个参数的时候,多的参数使用栈来传参
R0用作返回值

执行完第19条指令 pop        {r11, pc} 后


bx lr @跳转到lr地址        arm -->thumb或者thumb --> arm
带x是有指令集切换

feixiang3839 发表于 2021-3-17 09:55

楼主汇编高手啊{:1_921:}

有、 发表于 2021-3-17 17:19

是个高手,得好好学习

zhaopinping 发表于 2021-3-17 19:58

学习了,学习了

大白痴先生 发表于 2021-3-17 21:37

楼主这个方法看起来是个学习汇编的好方法,楼主能录制一个视频讲解一下细节吗?看了你的帖子还是不会操作啊,比如怎么就知道那个C语言程序对应的汇编程序是下面的那个,以及你是怎么操作的都不是很清楚。谢谢楼主啦!

sjzdevin 发表于 2021-3-17 23:09

正在学习操作系统移植,受教

havenow 发表于 2021-3-18 09:11

大白痴先生 发表于 2021-3-17 21:37
楼主这个方法看起来是个学习汇编的好方法,楼主能录制一个视频讲解一下细节吗?看了你的帖子还是不会操作啊 ...

可以看看我的前一个帖子 图文写的非常清楚了
https://www.52pojie.cn/thread-1392812-1-1.html

addqcx 发表于 2021-3-18 12:42

学习到了谢谢分享

evill 发表于 2021-3-18 14:50

可以在M1上开辟新战场了 {:1_918:}
页: [1]
查看完整版本: 如何动态调试来学习ARM汇编 1