zoukankan      html  css  js  c++  java
  • 函数跳转分析

                 __cxa_atexit@PLT:        // __cxa_atexit
    00005414         add        ip, pc, #0x0, #0xc                                  ; 0x541c, CODE XREF=dword_58ac+36, _Z32jsb_init_file_operation_delegatev+116
    00005418         add        ip, ip, #0x1e000
    0000541c         ldr        pc, [ip, #0xa60]!

                 __cxa_atexit@GOT:        // __cxa_atexit

    00023e7c         dd         0x000242c4   

    反编译工具,反编译出某段代码。 

    ip 是 内部过程调用寄存器

    pc 是程序寄存器

    add 语法

    ADD{S}{cond} {Rd}, Rn, Operand2
    ADD{cond} {Rd}, Rn, #imm12 ; Thumb, 32-bit encoding only
    add        ip, pc, #0x0, #0xc   //ip = pc
    add        ip, ip, #0x1e000   //ip = ip + 0x1e000

    ldr pc, [ip, #0xa60]! // ip = ip + 0xa60; pc = *(int*)ip;
    当执行到第一个add的时候, pc的值为0000541c, 因为pc始终指向当前执行指令+8。   
    官网原话:在执行期间,PC不包含当前执行指令的地址。当前执行指令的地址通常是ARM的PC-8或Thumb的PC-4。

    #0xc 是add语法外的东西,可能反编译器显示的问题。

    第一个add执行完之后 ip = 0000541c
    当执行到第二个add的时候,ip = 0000541c, 执行完之后 ip = 0002341c

    当执行到第3个指令ldr的时候,
    ip = 0002341c; 执行完之后 pc = 0x000242c4, ip=0023e7c;

    此时开始执行0x000242c4
    位置的代码
    
    
  • 相关阅读:
    map & reduce
    Generator
    切片
    函数参数
    Dict & Set
    list,tuple
    selenium鼠标和键盘操作
    selenium元素定位以及点击事件
    css定位
    xpath
  • 原文地址:https://www.cnblogs.com/dzqdzq/p/13581184.html
Copyright © 2011-2022 走看看