今天发现用Apktool和Jeb反编译出来的smali在语法上有一定区别,比如一个Java函数:

    private void packageNameCheck()
{
com.example.testfor360.MainActivity mm = new com.example.testfor360.MainActivity();
mm.packageNameCheck();
}

用Jeb反编译出来是这样的:

.method private packageNameCheck()V
.registers 2
.prologue
00000000 new-instance v0, MainActivity
00000004 invoke-direct MainActivity-><init>()V, v0
.local v0, mm:Lcom/example/testfor360/MainActivity;
0000000A invoke-virtual MainActivity->packageNameCheck()V, v0
00000010 return-void
.end method

而用Apktool反编译出来是这样的:

.method private packageNameCheck()V
.locals 1 .prologue  #代码起始指令
.line 80
new-instance v0, Lcom/example/testfor360/MainActivity; invoke-direct {v0}, Lcom/example/testfor360/MainActivity;-><init>()V .line 81
.local v0, mm:Lcom/example/testfor360/MainActivity;
invoke-virtual {v0}, Lcom/example/testfor360/MainActivity;->packageNameCheck()V .line 82
return-void  #返回空
.end method

仅仅这一小段看来,有这些区别:

1.Apktool的smali中所有的类都用了完整路径名(L打头),并且以分号结束,包括后面;-><init>的之前,也加了分号;而Jeb只写了类名,并且不带分号

2.方法调用指令invoke-direct中,Apktool把寄存器放到了前面,并且用open brace "{" 和 close brace"}"括起来了;Jeb把寄存器放到了后面,没有大括号

另外,Apktool里的.line在Jeb里也没有出现。

再另外,APKIDE反编译出来的和Apktool基本一致,不同的地方是new出来的对象mm他给加了双引号。看了下APKIDE目录下就有APKTOOL文件夹,基本确定就是用Apktool反编译的,只是Apktool版本不同罢了。

Apktool 和 Jeb 给出的不同的smali语法的更多相关文章

  1. 练习题 --- 写出5种css定位语法

    写出至少5种css语法(每种语法不一样)

  2. JEB 无源码调试 以dvm smali字节码方式,Demo尝试

    关于调试器看不到进程,无法attach的问题,网上也有很多教程,基本是修改ro.debugable =1  ,ro.secure = 0 让adbd有root权限 attach到其他进程,涉及到要修改 ...

  3. apktool动态破解apk

    那么今天我们就用另外一种方式来破解apk:动态方式,关于动态方式其实很广义的,因为动态方式相对于静态方式来说,难度大一点,但是他比静态方式高效点,能够针对更过的破解范围.当然动态方式很多,所以这里就分 ...

  4. ApkTool反编译和重新打包

    有时会需要反编译APK,各人有各人的原因,你都懂的…… 准备工作: 下载APKTool,通过下面这个连接进行下载,https://code.google.com/p/android-apktool/d ...

  5. apktool介绍

    apktool可以反编译出app的资源文件,apktool工具的下载路径:https://ibotpeaches.github.io/Apktool/ 下载后获取到一个jar文件,可以通过如下命令进行 ...

  6. Android stdio Apktool源码编译

    Android Apktool源码编译 标签(空格分隔): Android Apktool 源码编译 需求 习惯NetBeans调试smali需要用Apktool反编译apk,需要用-d的参数才能生成 ...

  7. Ubuntu使用ApkTool进行APK反编译

    1.Apktool下载 http://ibotpeaches.github.io/Apktool/ 下载最新版本Apktool_2.1.1.jar 2.新建一个apktool目录,将Apktool_2 ...

  8. 5. apktool 给XX手机卫士加广告页

    一. 编写广告页 写一个广告页面,并调用其他页面的demo (1) 设计界面如下 (2) 编写代码如下 public class SplashActivity extends Activity {   ...

  9. Android Studio 动态调试 apk 反编译出的 smali 代码

    在信安大赛的准备过程中,主要通过 Android Studio 动态调试 apk 反编译出来的 smali 代码的方式来对我们分析的执行流程进行验证.该技巧的主要流程在此记录.以下过程使用 Andro ...

随机推荐

  1. Android GC 原理探究

    导语 想写一篇关于 android GC 的想法来源于追查一个魅族手机图片滑动卡顿问题,由于不断的 GC 导致的丢帧卡顿的问题让我们想了很多方案去解决,所以就打算详细的看看内存分配和 GC 的原理,为 ...

  2. angular - 新建项目 - 2

    ng new testNg 新建项目后,从网络上拉取模板(最后缓存下来,我们下次创建项目的时间将会减少80%) 安装过程中,需要我们提供Git账号和姓名 最后,我们进入 useNg 然后,启动服务器 ...

  3. css3 - 基本选择器

    有人说类选择器最好不要超过三层,其实我也是这样认为的,不是吗? 选择器分为四大类 标签.全选(相对于子类继承了0.1).类.ID 权值分别是:1->0.1->10->100(权值可叠 ...

  4. Android自己定义控件

    今天我们来讲一下 Android中自己定义控件的介绍,在Android中, 我们一般写xml都是用的是单个的控件来完毕的 ,但是.往往在一些项目中.单个控件有时是满足不了的.故此我们能够自己定义控件 ...

  5. SqlServer查询语句中用到的锁

    前段时间**公司DBA来我们这培训.讲了一大堆MYSQL的优化. QA环节一程序员问“SQL语句中的 with nolock 除了不锁表外,是否能读其他锁住的数据". 讲课的人嘟嘟了半天没解 ...

  6. python(37)- 软件开发规范

    软件开发规范 一.为什么要设计好目录结构? 1.可读性高: 不熟悉这个项目的代码的人,一眼就能看懂目录结构,知道程序启动脚本是哪个,测试目录在哪儿,配置文件在哪儿等等.从而非常快速的了解这个项目. 2 ...

  7. mysql + php 中文乱码 全是? 解决方法

    在my.ini文件中找到[client]和[mysqld]字段,在下面均加上default-character-set=utf8,保存并关闭,重启服务器 在window下重启失败,这是因为你安装了高版 ...

  8. 在Linux中将php-fpm配置成服务的方法

    1.配置php-fpm.conf vi /usr/local/php/etc/php-fpm.conf php-fpm.pid 目录必须指向:/usr/local/php/var/run/php-fp ...

  9. 一个经典的比喻( 关于TCP连接API )

    前言 编程是对现实世界的模拟,网络通信自然也是对现实世界通信的模拟.可以将网络通信中使用的各种API和对现实世界中的各种通信设备进行通讯的操作进行对比以加深理解. 对比 socket() 函数 vs ...

  10. jquery设置多个css样式

    $(selector).css({property:value, property:value, ...}) 实例: $("p").css({ "color": ...