希望翻译一下没有看懂

invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget-object v3, v0, Lcom/secret/prettyhezi/l/y;->expire:Lcom/secret/prettyhezi/l/y$b;
iget-wide v3, v3, Lcom/secret/prettyhezi/l/y$b;->p2:J
invoke-virtual {p0, v3, v4}, Lcom/secret/prettyhezi/share/AjdrK1uJR;->V0(J)Ljava/lang/String;
move-result-object v3
invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-virtual {p1, v1}, Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V
iget-object p1, p0, Lcom/secret/prettyhezi/share/AjdrK1uJR;->D:Landroid/widget/TextView;
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;->()V
const-string v3, "全站超级浏览权限:"
invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget-object v3, v0, Lcom/secret/prettyhezi/l/y;->expire:Lcom/secret/prettyhezi/l/y$b;
iget-wide v3, v3, Lcom/secret/prettyhezi/l/y$b;->p3:J
invoke-virtual {p0, v3, v4}, Lcom/secret/prettyhezi/share/AjdrK1uJR;->V0(J)Ljava/lang/String;
move-result-object v3
invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-virtual {p1, v1}, Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V
iget-object p1, p0, Lcom/secret/prettyhezi/share/AjdrK1uJR;->E:Landroid/widget/TextView;
iget-object v1, v0, Lcom/secret/prettyhezi/l/y;->expire:Lcom/secret/prettyhezi/l/y$b;
iget-wide v3, v1, Lcom/secret/prettyhezi/l/y$b;->p1:J
invoke-virtual {p0, v3, v4}, Lcom/secret/prettyhezi/share/AjdrK1uJR;->V0(J)Ljava/lang/String;
move-result-object v1
const-string v3, "永久"
invoke-virtual {v1, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v1
const/16 v4, 0x8
if-eqz v1, :cond_f4
const/16 v1, 0x8
goto :goto_f5
:cond_f4
const/4 v1, 0x0
:goto_f5
invoke-virtual {p1, v1}, Landroid/widget/TextView;->setVisibility(I)V
iget-object p1, p0, Lcom/secret/prettyhezi/share/AjdrK1uJR;->F:Landroid/widget/TextView;
iget-object v0, v0, Lcom/secret/prettyhezi/l/y;->expire:Lcom/secret/prettyhezi/l/y$b;
iget-wide v0, v0, Lcom/secret/prettyhezi/l/y$b;->p2:J
invoke-virtual {p0, v0, v1}, Lcom/secret/prettyhezi/share/AjdrK1uJR;->V0(J)Ljava/lang/String;
move-result-object v0
invoke-virtual {v0, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_10a
const/16 v2, 0x8
:cond_10a
invoke-virtual {p1, v2}, Landroid/widget/TextView;->setVisibility(I)V
sget-object p1, Lcom/secret/prettyhezi/MainApplication;->s:Lcom/secret/prettyhezi/MainApplication;
invoke-virtual {p1}, Lcom/secret/prettyhezi/MainApplication;->j()Lcom/secret/prettyhezi/l/g;
move-result-object p1
iget-object p1, p1, Lcom/secret/prettyhezi/l/g;->sys:Lcom/secret/prettyhezi/l/g$c;
iget-boolean p1, p1, Lcom/secret/prettyhezi/l/g$c;->proxy:Z
if-eqz p1, :cond_11c
invoke-virtual {p0}, Lcom/secret/prettyhezi/share/AjdrK1uJR;->N0()V
:cond_11c
return-void

这是smali语句,你看过我下边这段说明,你就能读懂smali语句了
一.Smali含义
Smali是Davlik的寄存器语言,语法上和汇编语言类似. Davlik是基于寄存器的,就是说smali里的所有操作都必须经过寄存器来进行.
二.Smali基本类型
B—byte
C—char
D—double
F—float
I—int
S—short
V—void
J—long
Z—boolean

三.Smali引用类型
[XXX ----> array 数组
eg:
int[] ---> [I

Lxxx/yyy ----> object 对象
格式为 LpackageaName/objectName
eg:
String str --->str Ljava/lang/String;
LpackageaName/objectName$subobjectName 内部类

四.Smali函数
格式:
Func-Name (Para-Type1Para-Type2Para-Type3…)Return-Type 注意: 参数之间没有任何分隔符,返回值在最后

eg:
void fun() —> fun()V
boolean fun(int,int,int) —>fun(III)Z
String fun(boolean, int[], int[], String, long)
—>fun(Z[I[ILjava/lang/String,J)Ljava/lang/String

五.Smali基本语法
.field private isFlag:z 定义变量
.method 方法
.parameter 方法参数
.prologue 方法开始
.line123 此方法开始于123行
invoke-super 调用父函数
const/high16 v0,0x7fox 把0x7fox的值赋值给v0
invoke-direct 调用函数
return-void 函数返回void
.end method 函数结束
new-instance 创建实例
iput-object 对象赋值
iget-object 调用对象
invoke-static 调用静态函数
.class public Lcom/disney/WMW/WMWActivty; 类名
.super Lcom/XXX/XXX/XXX; 父类名
.source “XXX.java” 源文件名
.implements Lcom/XXX/XXX/XXX; 实现了接口
.annotation 内部类
六.Smali局部变量
本地寄存器 (local register, 非参寄存器)
常用v开头数字结尾的符号表示 v0,v1,v2…
参数寄存器 (parameter regisgter)
常用p开头数字结尾的符号来表示 p1,p2,p3…
.register 用来标明方法中寄存器的总数,即参数寄存器和非参寄存器
.local 标明在这个函数中最少要用到本地寄存器的个数,出现在方法第一行.
七.Smali条件语法
if-eq vA,vB,:cond_** 如果vA等于vB则跳转到:cond_**

ne 不等于

lt 小于

le 小于等于

gt 大于

ge 大于等于

eqz 等于0

nez 不等于0

ltz 小于0

gez 大于等于0

gtz 大于0

lez 小于0

八. Smali的包信息

  • .class public Lcom/aaa;
  • .super Lcom/bbb;
  • .source "ccc.java"

说明

  • 是com.aaa 这个package下的一个类
  • 继承自 com.bbb这个类
  • 是由 ccc.java这个类编译得到的smali文件

九. Smali函数分析
类型
smali中的函数和成员变量一样也分为两种:

  • direct
  • virtual

(1) direct method 就是 private 函数.

(2)其余的public 和 protected 函数都属于 virtual method.

eg:
invoke-direct,invoke-virtual,invole-static
invole-XXX/range (参数大于等于5个时候调用的指令)

1.invoke-static

  • 用于调用static 函数

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

  • static后面的一对大括号{},实际就是调用该方法的实例 + 参数列表, 由于方法即不需要参数也是static, 所以{}为空.

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

  • static void System.loadLibrary(String) 来加载 NDK编译的so库用的方法, 就是说这里的v0 就是参数"NDKLIB"

2. invoke-super

  • 用于调用父类方法用的指令, 一般用于onCreate,onDestory等方法

3. invoke-direct

  • 调用private 函数

  • eg:
    invoke-direct{p0},Landroid/app/TabActivity;->()V

  • 这里init()就是定义在TabActivity中的一个private函数

4. invoke-virtual

  • 用于调用protectd或 public函数, 同时要注意修改smali时候不要错用invoke-direct或 invoke-static

  • eg:
    sget-object v0,Lcom/ddd;->bbb:Lcom/ccc;

    invoke-virtual{v0,v1},Lcom/ccc;->Message(Ljava/lang/Object;)V

  • v0 就是 bbb:Lcom/ccc

  • v1 就是 Ljava/lang/Object参数

5. invoke-xxx/range

  • 当方法的参数大于等于5个时候,需要在后面加上 "/range", range表示范围,使用方法也与以上不同

  • eg:
    invoke-direct/range{v0..v5
    },Lcom/pb/ui/TestActivity;->
    h(ILjava/lang/String,Ljava/lang/String;Landroid/content/intent;I)Z

  • 表示需要传递v0到v5 一共6个参数,大括号里的参数采用省略形式, 且需要连续

6. Smali 中函数返回结果的操作

  • Smali中需要分开来表示调用函数和返回函数结果

  • 如果调用的函数返回非void, 还需要
    move-result(返回基本数据类型)和move-result-object(返回对象)指令:

  • eg:
    const-string v0,"Eric"
    invoke-static{v0},Lcom/pbi;->t(Ljava/lang/String;)Ljava/lang/String;
    move-result-object v2;

  • 这里 v2保存的就是调用t方法返回的字符串

您的采纳就是对我最大的动力,谢谢!!!

img

这个是日志信息?

  • 这是程序输出的日志信息
  • 打印的时候打印的是class名字
  • 可以换成输出具体的对象值
  • 这样更方便阅读和理解

如有帮助,请采纳!

翻译过来就是

全站超级浏览权限:永久

smali中的函数调用也分为direct和virtual两种类型,direct method就是private函数,public和protected函数都属于virtual method。在调用函数时,有invoke-direct,invoke-virtual,invoke-static、invoke-super以及invoke-interface等几种不同的指令。还有invoke-XXX/range 指令的,这是参数多于4个的时候调用的指令,比较少见。

invoke-static:就是调用static函数的,示例:

invoke-static {}, Lcom/disney/Class1;->fun()Z
上句invoke-static后面有一对大括号“{}”,内部是调用该方法的实例和参数列表,由于这是static方法也不需要参数,所以{}内为空。

invoke-super:调用父类方法,在onCreate、onDestroy等方法都能看到。
invoke-direct:调用private函数,示例:


invoke-direct {p0}, Lcom/disney/Class1;
->getGlobalIapHandler()Lcom/disney/config/GlobalPurchaseHandler;

上句即this->getGlobalIapHandler(),函数GlobalPurchaseHandler getGlobalIapHandler()是定义在Class1中的一个private函数。

invoke-virtual:用于调用protected或public函数,示例:

sget-object v0, Lcom/disney/Class1;->shareHandler:Landroid/os/Handler;
invoke-virtual {v0, v3}, Landroid/os/Handler;
->removeCallbacksAndMessages(Ljava/lang/Object;)V

上句v0是shareHandler android/os/Handler,v3是传递给removeCallbackAndMessage方法的Ljava/lang/Object参数。
在smali里调用函数和返回函数结果需要分开来完成,在调用的函数返回非void后,用move-result(返回基本数据类型)和move-result-object(返回对象)指令获取返回结果。