㈠ 反编译后,怎么就一个smail文件
因为反编译失败了,所以只有smali文件夹了。
1.反编译Apk得到java源代码
首先要下载两个工具:dex2jar和JD-GUI
前则梁者是将apk中的classes.dex转化成Jar文件,而JD-GUI是一个反编译工具,可以直接查看Jar包的源代码。
具体步骤:指盯迟
首先将apk文件,将后缀改为zip,解压,得到其中的classes.dex,它就是java文件编译再通过dx工具打包而成的;
解压下载的dex2jar,将classes.dex复制到dex2jar.bat所在目录。在命令行下定位到dex2jar.bat所在目录
运行 dex2jar.bat classes.dex
生成 classes.dex.dex2jar.jar
2.反编译apk生成程序的源代码和图片、XML配置、语言资源等文件
还是下载工具,这次用到的是apktool
具体步骤:
将下载的两个包解压到同一个文件夹下,唯李应该会有三个文件:aapt.exe,apktool.bat,apktool.jar
1.解压缩下载的两个文件包,apktool-install-windows-r04-brut1.tar解压缩后得到的包里有aapt.exe 和apktool.bat.(注意要把apktool1.4.1.tar解压后的一个.jar 文件到解压后的\apktool-install-windows-r04-brut1文件夹里)
2.特别注意:你要反编译的文件一定要放在C盘的根目录里
㈡ 安卓反编译出来的都是.smali文件,怎么反编译位原工程啊修改后还能重新编译回去
安卓反编译后,都是通过修改smali文件来实现反编译的,因为编译缘故,导致反回编译出来的java文件答一定不会完整,反向工程也是通过修改smali文件来实现的反编译。如果要做到傻瓜式反编译,网络搜索一个安卓修改大师安装就可以了,图形界面,完全傻瓜式操作。
㈢ android反编译APK后,是smali文件,能反编译成dex文件吗
dex文件不需要
反编译
的,apk就是个压缩文件,dex可以通过解压直接得到
㈣ apk反编译后smali文件怎么查看
1,首先得下载SublimeText
2,安装好后,需要去给它安装一个插件包
3,点击Install Now 按钮后进入,然后复制版对应的版本下的代码权
4,打开SublimeText 按下快捷键 ctrl+~,或者打开菜单栏View点击Hide Console 显示控制台,并将第3步中复制的代码粘贴到控制栏并按Enter键确认,然后重新开启SublimeText
5,打开SublimeText,我们可以看到在Preferences下多了一个菜单Package Control,好了那么就点击这个菜单(Package Control)就会弹出界面
6,在弹出框中点击Package Control:Install Package这一行,就会弹出提示,然后直接输入smali
7,搜到后就直接点击Smali这一行,它就已经装了,然后分分钟后就好了,你可以随意打开一个反编译的apk文件中的smali文件了,还自带高亮显示哦!
㈤ 为什么我用apktool反编译systemui.apk后里面没有smali文件夹
说明返编如枯译失败了。
1.反编译Apk得到Java源代码
首先要下载两个工具:dex2jar和JD-GUI
前者是将apk中的classes.dex转化成Jar文件,而JD-GUI是一个反编译工具,可以直接查看Jar包的源代码。
具体步骤:
首先将apk文件,将后缀改为zip,解压,得到其中的classes.dex,它就是java文件编译再通过dx工具打包而成的;
解压下载的dex2jar,将classes.dex复制到dex2jar.bat所在目录。在命令行下定位到dex2jar.bat所在目录
运行 dex2jar.bat classes.dex
生成 classes.dex.dex2jar.jar
2.反编译apk生成程序的源代码和图片、XML配置、语言资源等文件
还是下载工具,缓橡慧这次用到的是apktool
具体步骤:
将下载的两个包解压到同一个文件夹下,应该会有三个文件:aapt.exe,apktool.bat,apktool.jar
1.解压缩下载的两个文件包,apktool-install-windows-r04-brut1.tar解压缩后得到的包里有aapt.exe 和apktool.bat.(注意要把apktool1.4.1.tar解压后的一个.jar 文件到解压后的\apktool-install-windows-r04-brut1文件夹里)
2.特别注意:你要反编译的文件一定要放在扰答C盘的根目录里
㈥ APK反编译后没有res文件夹,只有一个smali文件夹正常吗
不正常,这情况一般是资源混淆了,资源混淆的apk反编译时提示错误,生成一个res文件夹和一个AndroidManifest.xml
㈦ APK反编译后的smali文件如何修改其中的一个数值
反编译apk步骤,把文件名的 .apk修改为 .rar,解压就看到res,lib等文件,其中classes.dex是需要你反编译的java代码回。
把apk文件修改成答.rar文件解压获得classes.dex和资源文件。
dex2jar-0.0.7.9-SNAPSHOT 拖动生成的classes.dex文件到dex2jar.bat突变生成classes.dex.dex2jar.jar文件,解压.jar文件获得.class文件,用XJad进行反编译java文件。
㈧ 电脑端反编译apk 反编译出现下面 输出文件只有smali文件,怎么解决
修改smali文件,再反编译回去
㈨ android反编译怎么修改游戏道具
需要的工具
jdk:必须的
baksmali:classes.dex反编译为smali格式(文本文件,可修改)
smali:smali格式编译打包为classes.dex
但由于smali格式类似汇编,比较难阅读,所以用dex2jar进行辅助
dex2jar:classes.dex转为jar包
jdgui:jar反编译并阅读
以上工具可以在 http://liye111111.ys168.com/ 下载
好了,顺序就是把apk用zip解开,里面的classes.dex分别用baksmali处理为smali,用dex2jar处理成jar,然后用jdgui看代码,找好java文件中要改的位置后,在smali里找对应的位置修改,改完了用smali再编译为classes.dex,覆盖原来apk里的同名文件,最后重新签名。注意安装时要先删除原来手机里的版本,因为签名不同了,我第一次再这里卡了好久。
以“捕鱼达人海底捞”为例
下载这个游戏的apk,fishing_joy_1.apk,和工具放在一起
用zip解开fishing_joy_1.apk
classes.dex到baksmali的同一目录
用baksmali处理为smali
java -jar baksmali-1.2.6.jar -x classes.dex
得到out目录,里面是smali文件
用dex2jar处理classes.dex为jar包
dex2jar-0.0.7.10-SNAPSHOT\dex2jar.bat classes.dex
得到classes.dex.dex2jar.jar
这时我们的工作目录下面是这样
用jdgui打开classes.dex.dex2jar.jar
好了,可以看代码,但还不能直接修改,需要对比着来修改smali文件
比如我们通过对比找到控制鱼被打到几率的代码在FishLayer.smali
Java代码
㈩ 有的安卓程序反编译后是samli文件,这是程序员直接用smali语言写的,还是是用java写的
您好,
1、原始类型:
v void 只能用于返回值类型
Z boolean
B byte
S short
C char
I int
J long(64位)
F float
D double(64位)
对象类型:
Lpackage/name/ObjectName相当于java中的package.name.ObjectName解释如下:
L:表示这是一个对象类型
package/name:该对象所在的包
;:表示对象名称的结束
数组的表示形式:
[I :表示一个整形的一维数组,相当于java的int[];
对于多维数组,只要增加[ 就行了,[[I = int[][];注:每一维最多255个;
对象数组的表示形式:
[Ljava/lang/String 表示一个String的对象数组;
方法的表示形式:
Lpackage/name/ObjectName;——>methodName(III)Z 详解如下:
Lpackage/name/ObjectName 表示类型
methodName 表示方法名
字段的表示形式:
Lpackage/name/ObjectName;——>FieldName:Ljava/lang/String;
即表示: 包名,字段名和各字段类型
方法的传参:
当一个方法被调用的时候,方法的参数被置于最后N个寄存器中;
例如,一个方法有2个参数,5个寄存器(v0~v4)
那么,参数将置于最后2个寄存器(v3和v4)
非静态方法中的第一个参数总是调用该方法的对象;
说明:对于静态方法除了没有隐含的this参数外,其他都一样
寄存器的命名方式:
V命名
P命名 第一个寄存器就是方法中的第一个碰明参数寄存器
比较:使用P命名是为了防止以后如果在方法中增加寄存器,需要对参数寄存器重新进行编号的缺点:
特别说明一下:Long和Double类型碰猜是64位的,需要2个寄存器
例如:对于非静态方法
LMyObject——>myMethod(IJZ)V;
有4个参数:LMyObject,int,long,bool; 需要5个寄存器来笑吵型存储参数;
P0 this
P1 I (int)
P2,P3 J (long)
P4 Z(bool)