反编译基础

2018-08-25 09:10:52 -0400

if语法: if 如果 label 标签 (e)(eq)equal 等于 (z)zero 零 (n)not 不 (gt)greater than 大于 (lt)less than 小于 (ge) 大于等于(greater than equal) (le) 小于等于(less than equal)

"if-eq vA, vB, :cond**" 如果vA等于vB则跳转到:cond "if-ne vA, vB, :cond_" 如果vA不等于vB则跳转到:cond** "if-lt vA, vB, :cond" 如果vA小于vB则跳转到:cond_ "if-ge vA, vB, :cond**" 如果vA大于等于vB则跳转到:cond "if-gt vA, vB, :cond_" 如果vA大于vB则跳转到:cond** "if-le vA, vB, :cond" 如果vA小于等于vB则跳转到:cond_ "if-eqz vA, :cond**" 如果vA等于0则跳转到:cond "if-nez vA, :cond_" 如果vA不等于0则跳转到:cond** "if-ltz vA, :cond" 如果vA小于0则跳转到:cond_ "if-gez vA, :cond**" 如果vA大于等于0则跳转到:cond "if-gtz vA, :cond_" 如果vA大于0则跳转到:cond** "if-lez vA, :cond" 如果vA小于等于0则跳转到:cond_

if-eq vA, vB, :cond** 如果vA等于vB则跳转到:cond if-ne vA, vB, :cond_ 如果vA不等于vB则跳转到:cond** if-lt vA, vB, :cond 如果vA小于vB则跳转到:cond_ if-ge vA, vB, :cond** 如果vA大于等于vB则跳转到:cond if-gt vA, vB, :cond_ 如果vA大于vB则跳转到:cond** if-le vA, vB, :cond 如果vA小于等于vB则跳转到:cond_ if-eqz vA, :cond** 如果vA等于0则跳转到:cond if-nez vA, :cond_ 如果vA不等于0则跳转到:cond** if-ltz vA, :cond 如果vA小于0则跳转到:cond_ if-gez vA, :cond** 如果vA大于等于0则跳转到:cond if-gtz vA, :cond_ 如果vA大于0则跳转到:cond** if-lez vA, :cond 如果vA小于等于0则跳转到:cond_

move vx,vy 动作内容为vx,vy move-object vx,vy 把vy对象引用到vx move-result vx 把以前的方法调用的结果值保存到vx move-result-object vx 把以前的方法调用的结果值保存为vx

return-void 无返回值返回 return vx 返回vx move-result-object vx 返回对象引用值vx const/4 vx,lit4 将lit4保存到vx,位宽为4

帮忙更新(转) if-it v0 v1 label_10 这个意思就是判断v0(它是一个数,比如你的积分)是否小于v1(程序的所需积分),那就跳转到函数10 只需将it改为ge 就行了,这个可以用来破解所需的积分要求    还有些判断符合,比如: ne是不等于 eq是等于 nez也是不等与于 eqz是等于 ge是大于等于 gt是大于 it小于 le小于等于

Smali基本语法 .field private isFlag:z  定义变量 .method  方法 .parameter  方法参数 .prologue  方法开始 .line 12  此方法位于第12行 invoke-super  调用父函数 const/high16 v0, 0x7fo3  把0x7fo3赋值给v0 invoke-direct  调用函数 return-void  函数返回void .end method  函数结束 new-instance  创建实例 iput-object  对象赋值 iget-object 调用对象 invoke-static 调用静态函数 条件跳转分支: "if-eq vA, vB, :cond**" 如果vA等于vB则跳转到:cond**

"if-ne vA, vB, :cond**" 如果vA不等于vB则跳转到:cond**

"if-lt vA, vB, :cond**" 如果vA小于vB则跳转到:cond**

"if-ge vA, vB, :cond**" 如果vA大于等于vB则跳转到:cond**

"if-gt vA, vB, :cond**" 如果vA大于vB则跳转到:cond**

"if-le vA, vB, :cond**" 如果vA小于等于vB则跳转到:cond "if-eqz vA, :cond_" 如果vA等于0则跳转到:cond_**

"if-nez vA, :cond**" 如果vA不等于0则跳转到:cond**

"if-ltz vA, :cond**" 如果vA小于0则跳转到:cond**

"if-gez vA, :cond**" 如果vA大于等于0则跳转到:cond**

"if-gtz vA, :cond**" 如果vA大于0则跳转到:cond**

"if-lez vA, :cond**" 如果vA小于等于0则跳转到:cond*       add-float/2addr vx, vy 计算vx + vy并将结果存入vx。 add-float/2addr v0,v4 计算v0 + v4并将结果存入v0。 sub-float/2addr vx, vy 计算vx - vy并将结果存入vx。 sub-float/2addr v0,v4 计算v0 - v4并将结果存入v0。 mul-float/2addr vx, vy 计算vx vy并将结果存入vx。 mul-float/2addr v0, v1 计算v0 * v1并将结果存入v0。

div-float/2addr vx, vy 计算vx / vy并将结果存入vx。 div-float/2addr v0, v1 计算v0 / v1并将结果存入v0。 rem-float/2addr vx, vy 计算vx % vy并将结果存入vx。 rem-float/2addr v0, v1 计算v0 % v1并将结果存入v0。 add-double/2addr vx, vy 计算vx,vx+1 + vy,vy+1并将结果存入vx,vx+1注1。 add-double/2addr v0, v7 计算v0,v1 + v7,v8并将结果存入v0,v1。 sub-double/2addr vx, vy 计算vx,vx+1 - vy,vy+1并将结果存入vx,vx+1注1。 sub-double/2addr v0, v7 计算v0,v1 - v7,v8并将结果存入v0,v1。 mul-double/2addr vx, vy 计算vx,vx+1 vy,vy+1并将结果存入vx,vx+1注1。 mul-double/2addr v0, v2 计算v0,v1 v2,v3并将结果入v0,v1。

«Newer      Older»
Comment:
Name:

Back to home

Subscribe | Register | Login | N