当前位置: 首页 > news >正文

建设银行杭州纪念币预约网站制作个人网站的软件

建设银行杭州纪念币预约网站,制作个人网站的软件,做网站公司哪家便宜,哪个是网站建设里面的smali语法从入门到精通 相关资源 视频中提到的apk和源代码资源#xff0c;到这里下载 Smali是什么 Smali是Android虚拟机的反汇编语言。Android虚拟机的可执行文件并不是普通的class文件#xff0c;而是再重新整合打包后生成的dex文件。dex文件反编译之后就是Smali代码到这里下载 Smali是什么 Smali是Android虚拟机的反汇编语言。Android虚拟机的可执行文件并不是普通的class文件而是再重新整合打包后生成的dex文件。dex文件反编译之后就是Smali代码所以说Smali语言是Android虚拟机的反汇编语言。 掌握Smali有哪些好处 动态调试APK通常静态分析APK是不够的如果需要彻底分析APK的执行逻辑需要通过动态调试来进行。修改APK运行逻辑通过修改Smali代码再重新编译打包成新的APK是Android逆向的基本操作。 Smali基本语法 数据类型 Smali(方法类型) Smali代码 Java 备注 V return-void void 只能用于返回值类型 Z const/4 v0,0x1 boolean 布尔值类型判断逻辑 Ljava/lang/String; const-string v0,”字符串” String 字符串类型 I const/4 v0,0x1 int 整数类型 Lpackage/name; Lpackage/name; 对象类型 L表示这是一个对象类型package表示该对象所在的包; 表示对象名称的结束 S const/16 v0, 0x64 short 短整数类型 J const-wide/32 v0, 0x186a0 long 长整数类型 F const/high16 v0, 0x42c80000    float 浮点数类型 D const-wide/high16 v0, 0x4059000000000000L double 双浮点数类型 C const/16 v0, 0x61 char 字符类型 B const/4 v0, 0x1 byte 字节类型 [类型 [类型 数组 [l表示一个int型数据[Ljava/lang/String 表示一个String的对象数组 语法关键词 关键词 说明 .class 定义java类名 .super 定义父类名 .source 定义Java源文件名 .filed 定义字段 .method 定义方法开始 .end method 定义方法结束 .annotation 定义注解开始 .end annotation 定义注解结束 .implements 定义接口指令 .local 指定了方法内局部变量的个数 .registers 指定方法内使用寄存器的总数 .prologue 表示方法中代码的开始处 .line 表示java源文件中指定行 .paramter 指定了方法的参数 .param 和.paramter含义一致但是表达格式不同 寄存器 Java中变量都是存放在内存中的Android为了提高性能变量都是存放在寄存器中的寄存器为32位可以支持任何类型。 寄存器分为如下两类 1、本地寄存器 用v开头数字结尾的符号来表示v0, v1, v2,... 2、参数寄存器 用p开头数字结尾的符号来表示p0,p1,p2,...注意在非static方法中p0代指thisp1为方法的第一个参数。在static方法中p0为方法的第一个参数。 Smali代码示例 const/4 v0, 0x1 //把值0x1存到v0本地寄存器 iput-boolean v0,p0,Lcom/aaa;-IsRegisterd:Z //把v0中的值赋给com.aaa.IsRegisteredp0代表this相当于this.Isregisteredtrue 成员变量 成员变量定义格式为 .field public/private [static][final] varName:类型 获取指令 iget, sget, iget-boolean, sget-boolean, iget-object, sget-object 操作指令 iput, sput, iput-boolean, sput-boolean, iput-object, sput-object array的操作是aget和aput 指令解析 sget-object v0,Lcom/aaa;-ID:Ljava/lang/String; 获取ID这个String类型的成员变量并放到v0这个寄存器中 iget-object v0,p0,Lcom/aaa;-view:Lcom/aaa/view; iget-object比sget-object多一个参数p0这个参数代表变量所在类的实例。这里p0就是this Smali代码示例1 const/4 v3, 0x0 sput-object v3, Lcom/aaa;-timer:Lcom/aaa/timer; 相当于java代码this.timer null; Smali代码示例2 .local v0, args:Landroid/os/Message; const/4 v1, 0x12 iput v1,v0,Landroid/os/Message;-what:I 相当于java代码args.what 18; 其中args为Message的实例 函数 函数定义格式为 .method public/private [static][final] methodName()类型 .end method Smali代码示例 .method private ifRegistered()Z     .locals 2            // 本地寄存器的个数     .prologue     const/4 v0, 0x1      //v0赋值为1     if-eqz v0, :cond_0   //判断v0是否等于0等于0则跳到cond_0执行     const/4 v1, 0x1      //符合条件分支     :goto_0              //标签     return v1            //返回v1的值     :cond_0              //标签     const/4 v1, 0x0      //cond_0分支     goto :goto_0         //跳到goto_0执行 .end method 函数分为两类direct method和virtual method direct method就是private方法virtual method就是指其余的方法。 调用指令 invoke-direct invoke-virtual invoke-static invoke-super invoke-interface 调用格式 invoke-指令类型 {参数1, 参数2,...}, L类名;-方法名 如果不是是静态方法参数1代表调用该方法的实例。 Smali代码示例 const-string v0, NDKLIB invoke-static {v0}, Ljava/lang/System;-loadLibrary(Ljava/lang/String;)V 相当于java代码System.loadLibrary(NDKLIB) 函数返回结果 Smali需要用指令move-result或move-result-object来保存函数返回的结果 Smali代码示例 const-string v0, Eric invoke-static {v0}, Lcmb/pbi;-t(Ljava/lang/String;)Ljava/lang/String; move-result-object v2 表示将方法t返回的String对象保存到v2中。 方法的定义 private static int sum(int a, int b) {         return ab; } 使用编译后是这样 .method private static sum(II)I     .locals 4   表示需要申请4个本地寄存器     .parameter     .parameter 这里表示有两个参数     .prologue     .line 27     move v0, p0     .local v0, a:I     move v1, p1     .local v1, b:I     move v2, v0     move v3, v1     add-int/2addr v2, v3     move v0, v2     .end local v0           a:I     return v0 .end method 从上面可以看到函数声明使用.method开始 .end method结束java中的关键词private,static 等都可以使用同时使用签名来表示唯一的方法这里是sum(II)I。 指令执行 smali字节码是类似于汇编的如果你有汇编基础理解起来是非常容易的。 比如 move v0, v3 把v3寄存器的值移动到寄存器v0上. const v0 0x1 把值0x1赋值到寄存器v0上。 invoke-static {v4, v5}, Lme/isming/myapplication/MainActivity;-sum(II)I 执行方法sum(),v4,v5的值分别作为sum的参数 条件跳转分支 if-eq vA, vB, :cond_x --- 如果vA等于vB则跳转到:cond_x if-ne vA, vB, :cond_x --- 如果vA不等于vB则跳转到:cond_x if-lt vA, vB, :cond_x --- 如果vA小于vB则跳转到:cond_x if-ge vA, vB, :cond_x --- 如果vA大于等于vB则跳转到:cond_x if-gt vA, vB, :cond_x --- 如果vA大于vB则跳转到:cond_x if-le vA, vB, :cond_x --- 如果vA小于等于vB则跳转到:cond_x if-eqz vA, :cond_x --- 如果vA等于0则跳转到:cond_x if-nez vA, :cond_x --- 如果vA不等于0则跳转到:cond_x if-ltz vA, :cond_x --- 如果vA小于0则跳转到:cond_x if-gez vA, :cond_x --- 如果vA大于等于0则跳转到:cond_x if-gtz vA, :cond_x --- 如果vA大于0则跳转到:cond_x if-lez vA, :cond_x --- 如果vA小于等于0则跳转到:cond_x 常用修改技巧 const-string v0,”json数据”     //写死抓包返回的vip信息的数据 goto :cond_x       //无视后面的任何判断直接跳转到校验成功后的代码段 return-void       //如果方法是返回的void直接在某个代码的后面加上终止后面的代码的执行 const/4 v0,0x1    //对于判断写死true 0x1或者false 0x0 #               //某行代码前添加#代表该行代码被注释掉和删掉这行代码一样但方便恢复 if-eq/…          //直接修改判断条件
http://www.yutouwan.com/news/40462/

相关文章:

  • 在哪人网站要以接it项目做济南代理公司注册
  • 企业网站建设的内容水网站模板
  • 做网站 对方传销查询网站是否备案
  • 自己做的网站图片不显示北京建站推广
  • 免费男人做那个的视频网站免费php空间
  • 加强网站的建设工作的通知wordpress 知识管理主题
  • 武进网站建设基本流程wordpress外贸建站 视频
  • 设计网站接单靖州建设局网站
  • 做外贸网站卖什么好处哪家建设公司网站
  • 东莞百度网站快速优化滁州58同城网站怎么做
  • 集团网站建设基础方案网页制作与设计千年之恋代码
  • 中新生态城建设局门户网站做购物网站赚钱吗
  • 郑州网站建设哪家信息发布推广方法
  • 比较好的家装设计网站代理网店加盟
  • 泉州网站建设优化公司东莞新增病例详惰
  • 成都开发网站建设重庆网络公司排行榜
  • 速成网站怎么做小程序商店官网
  • 曲靖网站设计公司网站制作技术培训
  • 常州网站建设外包公司哪家好临河做网站
  • 重庆网站建设案例企业网站宣传方案
  • 比较好的网站建设品牌设计做足彩推荐赚钱的网站
  • 西安淘宝网站建设公司哪家好网站可以嵌入WordPress
  • 网站推广站html网站制作教程
  • 医院信息化建设网站南京企业微信网站建设
  • 泰州网站制作哪家好江门有那几间公司做网站的
  • 百度主机做视频网站怎么样北京平台网站建设
  • 公司网站彩页怎么做品牌科技公司排名
  • 济南建设网站 概况淘宝客聚惠购的网站怎么做
  • 网站建设相关小论文电商网站建设市场分析
  • 广告制作公司网站建设模板河北智能网站建设