170717 逆向-Smali函数分析

本文详细介绍了Smali中的函数分析,包括direct和virtual函数类型,以及invoke指令的使用,如invoke-static、invoke-super和invoke-direct等。同时讲解了参数多于4个时如何使用invoke-range,返回结果的指令以及if和for函数的分析。内容涵盖了Smali代码中函数调用的各个方面。
摘要由CSDN通过智能技术生成

1625-5 王子昂 总结《2017年7月17日》 【连续第288天总结】
A. Smali函数分析
B.
Smali中函数的调用:
  函数和成员变量一样也分为两种类型,分别为direct和virtual之分
  简单来说,direct method就是private函数,其余的public和protect函数都属于virtual method
  所以在调用函数时,有invoke-direct,invoke-virtual,另外还有invoke-static,invoke-super和invoke-interface等不同的指令
  当参数多于4个时,需要使用invoke-xxx/range,比较少见

  invoke-static:
    调用static函数

    invoke-static {},Lcom/aaa;->CheckSignature()Z

    {}内其实是调用方法的实例+参数列表,由于这个方法既不需参数也是static的,所以{}内为空
    

    const-string v0,"NDKLIB"
    invoke-static {v0}, Ljava/lang/System;->loadLibrary(Ljava/lang/String;)V

    这里调用static void System.loadLibrary(String)来加载NDK编译的so库用的方法,参数是v0即”NDKLIB”
    
  invoke-super:
    调用父类方法所使用的指令,一般用于调用onCreate,onDestroy等方法
  invoke-direct:
    调用private函数

    invoke-direct{p0},Landroid/app/TabActivity;->< init>()V

    这里< init>()就是定义在TabActivity中的一个private函数
    
  invoke-virtual:
    调用public和protect函数,同样注意修改smali时不要错用invoke-direct或invoke-static

sget-object v0,Lcom/dddd;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值