还原高级代码

通过Main函数一段代码来测试

#import <UIKit/UIKit.h>
#import "AppDelegate.h"

int glabel = 12;

int func(int a,int b) {

    printf("haha");
    return a + b + glabel;
}

int main(int argc, char * argv[]) {

    func(10, 20);
    return 0;
}
  • 第一步 找出App包

这里写图片描述

  • 第二步 找出可执行文件

这里写图片描述

  • 第三步 使用反汇编工具对可执行文件进行二进制代码分析

这里写图片描述

这里写图片描述

这里写图片描述

  • Main 函数分析
 public _func
__text:00000001000017B0 _func           proc near               ; CODE XREF: _main+24↓p
__text:00000001000017B0
__text:00000001000017B0 var_C           = dword ptr -0Ch
__text:00000001000017B0 var_8           = dword ptr -8
__text:00000001000017B0 var_4           = dword ptr -4
__text:00000001000017B0
__text:00000001000017B0                 push    rbp
__text:00000001000017B1                 mov     rbp, rsp
__text:00000001000017B4                 sub     rsp, 10h
__text:00000001000017B8                 lea     rax, aHaha      ; "haha"
__text:00000001000017BF                 mov     [rbp+var_4], edi
__text:00000001000017C2                 mov     [rbp+var_8], esi
__text:00000001000017C5                 mov     rdi, rax        ; char *
__text:00000001000017C8                 mov     al, 0
__text:00000001000017CA                 call    _printf
__text:00000001000017CF                 mov     esi, [rbp+var_4]
__text:00000001000017D2                 add     esi, [rbp+var_8]
__text:00000001000017D5                 add     esi, cs:_glabel
__text:00000001000017DB                 mov     [rbp+var_C], eax
__text:00000001000017DE                 mov     eax, esi
__text:00000001000017E0                 add     rsp, 10h
__text:00000001000017E4                 pop     rbp
__text:00000001000017E5                 retn
__text:00000001000017E5 _func           endp
  • 通过以上汇编代码,即可还原高级函数为
int globala = 0;

int func(int a, int b){

    printf("haha");

    return a + b + globala;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值