• 程序计数器、反汇编工具


    objdump -d  CashCompass:工具集合

    源码:

    -(void)updateHomeData

    {

        kWeakObject(self);

        self.apiModel = [NSClassFromString(@"CCHomePageModel") new];

        //self.apiModel.showLoading = YES;

        [self.apiModel startRequestWithCallBack:^(id response) {

            if(weakObject.apiModel.respSuccess)

            {

                [weakObject.homeTableView reloadData];

            }

            [weakObject.homeTableView.mj_header endRefreshing];

        }];

    }

    反汇编:

    -[CCHomeViewControler updateHomeData]:

    100231bbc: ff c3 02 d1 sub sp, sp, #176

    100231bc0: fd 7b 0a a9 stp x29, x30, [sp, #160]

    100231bc4: fd 83 02 91 add x29, sp, #160

    100231bc8: a0 83 1f f8 stur x0, [x29, #-8]

    100231bcc: a1 03 1f f8 stur x1, [x29, #-16]

    100231bd0: a1 83 5f f8 ldur x1, [x29, #-8]

    100231bd4: a0 63 00 d1 sub x0, x29, #24

    100231bd8: bd 81 08 94 bl #2230004

    100231bdc: a1 83 5f f8 ldur x1, [x29, #-8]

    100231be0: 5e 17 00 f0 adrp x30, #3059712

    100231be4: de 83 07 91 add x30, x30, #480

    100231be8: e0 23 00 f9 str x0, [sp, #64]

    100231bec: e0 03 1e aa mov x0, x30

    100231bf0: e1 1f 00 f9 str x1, [sp, #56]

    100231bf4: 23 7e 08 94 bl #2226316

    100231bf8: e0 1b 00 f9 str x0, [sp, #48]

    100231bfc: 01 00 00 14 b #4

    100231c00: 48 1e 00 90 adrp x8, #3964928

    100231c04: 01 3d 44 f9 ldr x1, [x8, #2168]

    100231c08: e0 1b 40 f9 ldr x0, [sp, #48]

    100231c0c: bf 81 08 94 bl #2230012

    100231c10: e0 17 00 f9 str x0, [sp, #40]

    100231c14: 01 00 00 14 b #4

    100231c18: 68 1e 00 90 adrp x8, #3981312

    100231c1c: 01 59 41 f9 ldr x1, [x8, #688]

    100231c20: e0 1f 40 f9 ldr x0, [sp, #56]

    100231c24: e2 17 40 f9 ldr x2, [sp, #40]

    100231c28: b8 81 08 94 bl #2229984

    100231c2c: 01 00 00 14 b #4

    100231c30: e0 17 40 f9 ldr x0, [sp, #40]

    100231c34: be 81 08 94 bl #2230008

    100231c38: 08 00 80 52 mov w8, #0

    100231c3c: e8 3f 01 39 strb w8, [sp, #79]

    100231c40: e0 43 01 91 add x0, sp, #80

    100231c44: 00 80 00 91 add x0, x0, #32

    100231c48: be 83 5f f8 ldur x30, [x29, #-8]

    100231c4c: 69 1e 00 90 adrp x9, #3981312

    100231c50: 21 5d 41 f9 ldr x1, [x9, #696]

    100231c54: e0 13 00 f9 str x0, [sp, #32]

    100231c58: e0 03 1e aa mov x0, x30

    100231c5c: ab 81 08 94 bl #2229932

    100231c60: e0 0f 00 f9 str x0, [sp, #24]

    100231c64: 01 00 00 14 b #4

    100231c68: fd 03 1d aa mov x29, x29

    100231c6c: e0 0f 40 f9 ldr x0, [sp, #24]

    100231c70: bb 81 08 94 bl #2229996

    100231c74: fe 03 00 aa mov x30, x0

    100231c78: 48 16 00 f0 adrp x8, #2928640

    100231c7c: 08 79 41 f9 ldr x8, [x8, #752]

    100231c80: e8 2b 00 f9 str x8, [sp, #80]

    100231c84: 09 40 b8 52 mov w9, #-1040187392

    100231c88: e9 5b 00 b9 str w9, [sp, #88]

    100231c8c: 09 00 80 52 mov w9, #0

    100231c90: e9 5f 00 b9 str w9, [sp, #92]

    100231c94: 08 00 00 90 adrp x8, #0

    100231c98: 08 61 35 91 add x8, x8, #3416

    100231c9c: e8 33 00 f9 str x8, [sp, #96]

    100231ca0: c8 16 00 b0 adrp x8, #2985984

    100231ca4: 08 61 07 91 add x8, x8, #472

    100231ca8: e8 37 00 f9 str x8, [sp, #104]

    100231cac: e8 43 01 91 add x8, sp, #80

    100231cb0: 0a 81 00 91 add x10, x8, #32

    100231cb4: a1 63 00 d1 sub x1, x29, #24

    100231cb8: e0 0b 00 f9 str x0, [sp, #16]

    100231cbc: e0 03 0a aa mov x0, x10

    100231cc0: e8 07 00 f9 str x8, [sp, #8]

    100231cc4: fe 03 00 f9 str x30, [sp]

    100231cc8: 5a 81 08 94 bl #2229608

    100231ccc: e9 03 00 32 orr w9, wzr, #0x1

    100231cd0: e9 3f 01 39 strb w9, [sp, #79]

    100231cd4: 68 1e 00 90 adrp x8, #3981312

    100231cd8: 01 61 41 f9 ldr x1, [x8, #704]

    100231cdc: e0 0b 40 f9 ldr x0, [sp, #16]

    100231ce0: e2 07 40 f9 ldr x2, [sp, #8]

    100231ce4: 89 81 08 94 bl #2229796

    100231ce8: 01 00 00 14 b #4

    100231cec: e0 03 40 f9 ldr x0, [sp]

    100231cf0: 8f 81 08 94 bl #2229820

    100231cf4: e0 13 40 f9 ldr x0, [sp, #32]

    100231cf8: 51 81 08 94 bl #2229572

    100231cfc: a0 63 00 d1 sub x0, x29, #24

    100231d00: 4f 81 08 94 bl #2229564

    100231d04: fd 7b 4a a9 ldp x29, x30, [sp, #160]

    100231d08: ff c3 02 91 add sp, sp, #176

    100231d0c: c0 03 5f d6 ret

    100231d10: e8 03 01 aa mov x8, x1

    100231d14: a0 03 1e f8 stur x0, [x29, #-32]

    100231d18: a8 c3 1d b8 stur w8, [x29, #-36]

    100231d1c: 0a 00 00 14 b #40

    100231d20: e8 03 01 aa mov x8, x1

    100231d24: a0 03 1e f8 stur x0, [x29, #-32]

    100231d28: a8 c3 1d b8 stur w8, [x29, #-36]

    100231d2c: e8 3f 41 39 ldrb w8, [sp, #79]

    100231d30: 08 01 00 12 and w8, w8, #0x1

    100231d34: 68 00 00 36 tbz w8, #0, #12

    100231d38: e0 13 40 f9 ldr x0, [sp, #32]

    100231d3c: 40 81 08 94 bl #2229504

    100231d40: 01 00 00 14 b #4

    100231d44: a8 63 00 d1 sub x8, x29, #24

    100231d48: e0 03 08 aa mov x0, x8

    100231d4c: 3c 81 08 94 bl #2229488

    100231d50: a0 03 5e f8 ldur x0, [x29, #-32]

    100231d54: 60 7f 08 94 bl #2227584

    函数调用栈:

    * thread #1, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1

      * frame #0: 0x000000010599c060 CashCompass`-[CCHomeViewControler updateHomeData](self=0x00007ffcc6e0a690, _cmd="updateHomeData") at CCHomeViewControler.m:67

        frame #1: 0x000000010599cefc CashCompass`__38-[CCHomeViewControler configTableView]_block_invoke((null)=<unavailable>) at CCHomeViewControler.m:153

        frame #2: 0x00000001058b0fbb CashCompass`__47-[MJRefreshComponent executeRefreshingCallback]_block_invoke((null)=<unavailable>) at MJRefreshComponent.m:233

        frame #3: 0x000000010f9d23f7 libdispatch.dylib`_dispatch_call_block_and_release + 12

        frame #4: 0x000000010f9d343c libdispatch.dylib`_dispatch_client_callout + 8

        frame #5: 0x000000010f9de6f0 libdispatch.dylib`_dispatch_main_queue_callback_4CF + 628

        frame #6: 0x0000000109867ef9 CoreFoundation`__CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 9

        frame #7: 0x000000010982c662 CoreFoundation`__CFRunLoopRun + 2402

        frame #8: 0x000000010982ba89 CoreFoundation`CFRunLoopRunSpecific + 409

        frame #9: 0x000000010f3789c6 GraphicsServices`GSEventRunModal + 62

        frame #10: 0x000000010af32d30 UIKit`UIApplicationMain + 159

        frame #11: 0x000000010599bd9f CashCompass`main(argc=1, argv=0x00007fff5a4c4188) at main.m:14

        frame #12: 0x000000010fa4fd81 libdyld.dylib`start + 1

        frame #13: 0x000000010fa4fd81 libdyld.dylib`start + 1

    其他示例:

    int bar(int c, int d)
    {
        int e = c + d;
        return e;
    }
    int foo(int a, int b)
    {
        return bar(a, b);
    }
    int main(void)
    {
        foo(2, 5);
        return 0;
    }

    main函数

    现进程跑在main函数中,我们disassemble命令显示当前函数的汇编信息:

    复制代码
    (gdb) disassemble /rm
    Dump of assembler code for function main:
    13        {
    0x0000000000400521 <main+0>:     55                push %rbp
    0x0000000000400522 <main+1>:     48 89 e5          mov %rsp,%rbp
    
    14               foo(2, 5);
    0x0000000000400525 <main+4>:     be 05 00 00 00    mov $0x5,%esi
    0x000000000040052a <main+9>:     bf 02 00 00 00    mov $0x2,%edi
    0x000000000040052f <main+14>:    e8 d2 ff ff ff    callq 0x400506 <foo>
    
    15               return 0;
    0x0000000000400534 <main+19>:    b8 00 00 00 00    mov $0x0,%eax
    
    16        }
    0x0000000000400539 <main+24>:     c9               leaveq 
    0x000000000040053a <main+25>:     c3               retq
    
    End of assembler dump.
    复制代码

    disassemble命令的/m指示显示汇编指令的同时,显示相应的程序源码;/r指示显示十六进制的计算机指令(raw instruction)。

    以上输出每行指示一条汇编指令,除程序源码外共有四列,各列含义为:

    1. 0x0000000000400521: 该指令对应的虚拟内存地址
    2. <main+0>: 该指令的虚拟内存地址偏移量
    3. 55: 该指令对应的计算机指令
    4. push %rbp: 汇编指令
  • 相关阅读:
    bzoj3302
    bzoj1264
    听风
    bzoj5073
    bzoj2144
    bzoj1263
    bzoj3653
    Docker 入门 2 镜像基本操作
    Docker 入门 1 准备 Docker 环境
    Docker Hub 镜像加速
  • 原文地址:https://www.cnblogs.com/feng9exe/p/7987631.html
Copyright © 2020-2023  润新知