<s id="3nssg"><acronym id="3nssg"></acronym></s>
  • <button id="3nssg"><object id="3nssg"><input id="3nssg"></input></object></button>
    <nav id="3nssg"><big id="3nssg"><video id="3nssg"></video></big></nav>
    1. 查看: 47|回复: 0
      打印 上一主题 下一主题
      收起左侧

      [[教程/技术]] 如何动态调试来学习ARM汇编 (1)

      [复制链接]
    2. TA的每日心情
      萌哒
      3 天前
    3. UID 1

      钻石丨
      4

      魂币丨
      31665

      热心丨
      12248

      我的勋章

      超风侠嘤嘤棒论坛水王闪电侠至尊王

      登录后可享受更多特权和福利。

      您需要 登录 才可以下载或查看,没有帐号?立即注册

      x
      以下内容转载至吾爱【havenow】 很值得学习的文章


      单步调式之前的程序
      使用的命令是            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, [pc, #56]        ; 0xab18f45c <main+76>
      5:   0xab18f420 <+16>:        add        r2, pc, r2
      6:   0xab18f424 <+20>:        ldr        r3, [pc, #52]        ; 0xab18f460 <main+80>
      7:   0xab18f428 <+24>:        add        r3, pc, r3
      8:   0xab18f42c <+28>:        movw        r12, #0
      9:   0xab18f430 <+32>:        str        r12, [r11, #-4]
      10: 0xab18f434 <+36>:        str        r0, [sp, #8]
      11: 0xab18f438 <+40>:        str        r1, [sp, #4]
      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, [sp]
      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是有指令集切换


      帖子永久地址: 

      {魂影网络} - 论坛版权   ①:本主题所有言论和图片纯属会员个人意见,与本论坛立场无关。

         ②:帖子有违反论坛版规,管理员和版主有权不事先通知发贴者而删除本文。

         ③:帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任。

         ④:本站资源于网络收集存储,任何资源只做于保存储存,防止原资源丢失或删除。

         ⑤:如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意。

         ⑥:本站内容均为网络分享资源,如有什么法律责任均和本站无任何关系,本站只做于资源收集储存。

      本站不参与第三方工具制作和售卖,只做于分享储存资源。
      您需要登录后才可以回帖 登录 | 立即注册

      本版积分规则

      QQ|手机版|小黑屋|魂影辅助论坛 ( 浙ICP备16020365号-1 )|网站地图

      GMT+8, 2021-4-23 20:06 , Processed in 0.366717 second(s), 28 queries , Gzip On.

      Powered by Discuz! X3.4 Licensed

      © 2001-2017 Comsenz Inc.

      免费特黄特黄的欧美大片