导航:首页 > 操作系统 > android反编译smali

android反编译smali

发布时间:2022-07-03 16:54:46

A. APK反编译后没有res文件夹,只有一个smali文件夹正常吗

不正常,这情况一般是资源混淆了,资源混淆的apk反编译时提示错误,生成一个res文件夹和一个androidManifest.xml

B. 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代码

C. 有的安卓程序反编译后是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)

D. android反编译apk后只有一个smail是因为防止反编译了吗

不是,你用apktool,可以转化为.java文件,不过一般变量名,类名都是些abcd之类的,看着很累

E. 安卓反编译出来的都是.smali文件,怎么反编译位原工程啊修改后还能重新编译回去

反编译步骤:

下载apktool 并设置环境变量
命令行进入apk目录执行:apktool d xx.apk (如果遇到一些错误说明apk做了防破解处理)
执行成功后会生成xx文件夹,进入xx文件夹修改需要修改的内容,如果需要修改代码,进入xx\smali\里面,需要懂一些smali语法
修改完后回到命令行,执行:apktool b xx ,会在xx文件夹里面生成一个dist文件夹,里面的apk就是回编译的,这个apk是没有签名的
下载网上的签名工具对apk签名,完了就可以安装了(如果你下载了源码或者sdk,里面自带一个signapk也可以签名)

F. 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文件了,还自带高亮显示哦!

G. Android 如何对apk文件进行反编译以及重新

第一:使用apktool直接反编译apk

第六:把生成的hellodemo.apk安装到手机,可以看到主界面上已经显示的是hello,而不再是你好。说明反编译重新打包成功!

H. 如何反编译android应用以及重编译,签名和对齐优化

首先,了解一下我们为什么需要反编译apk
大部分情况下,是由于想本地化一款优秀的应用,才需要做这事儿;又或者进行少量的smali修改以达到想要的效果(如添加归属地,使3G版Nexus 7支持Wi-Fi热点)。

下面我们先准备运行环境和工具
建立工作目录,如.\workspace\apktoolbox (下面同样以此路径为例)
必不可少的JDK:Oracle Java下载,安装完成后把<jdk-inst-path>\bin添加到$PATH环境变量中
反编译和重编译工具apktool:Google Code下载,按平台下载(一个apktool-install-<platform>-<ver>-tar.bz2,一个apktool<ver>.tar.bz2,下载完成后解压至.\workspace\apktoolbox\bin
密钥文件,共4组。test/shared/media/platform,从android source中获取,分别对应不同共享用户ID时签名所需(查看应用AndroidManifest.xml第二行android:sharedUserId项 ),放到.\workspace\apktoolbox\bin下
test - 无android:sharedUserId项
shared - android:sharedUserId=android.uid.shared
media - android:sharedUserId=android.uid.media
platform - android:sharedUserId=android.uid.system
签名工具signapk.jar,放到.\workspace\apktoolbox\bin下
对齐优化工具zipalign(从android sdk中获取,在tools目录下),放到.\workspace\apktoolbox\bin下
准备工作完成

接下来我们就要开始工作了(以本地化工作为例)
把待反编译的apk放到.\workspace\apktoolbox\apks下
在命令行模式下进入.\workspace\apktoolbox\bin目录,输入以下命令进行解包(反编译)
apktool d ..\apks\<apkfile>.apk ..\apks\<outdir>
.\workspace\apktoolbox\apks\<outdir>\res下的values目录(英文原版)和values-r<locale>目录(本地化)就是我们需要的对象。
本地化工作完成后,在命令行中输入以下命令进行重新打包(重新编译)
apktool b ..\apks\<outdir>

.\workspace\apktoolbox\apks\<outdir>\dist目录下会生成重新打包后的apk(未签名,未对齐优化)
重新打包完成后,在命令行中输入以下命令进行签名(根据实际情况选用密钥,这里以test密钥为例)
java -jar signapk.jar testkey.x509.pem testkey.pk8 ..\apks\<outdir>\dist\<apkfile>.apk ..\apks\<apkfile>_signed.apk

签名完成后,在命令行中输入以下命令进行对齐优化
zipalign -f -v 4 ..\apks\<apkfile>_signed.apk ..\apks\<apkfile>_zipaligned.apk

<apkfile>_zipaligned.apk就是我们最终需要的apk了。
完成
部分apk需要系统框架资源,没有的话在重新打包时会报错,这种情况下我们只需要先安装一下对应系统框架即可(从你目标ROM中把/system/framework/framework-res.apk提取出,放到.\workspace\apktoolbox\apks下)。在命令行中输入以下命令进行安装
apktool if ..\apks\framework-res.apk

I. android反编译APK后,是smali文件,能反编译成dex文件吗

dex文件不需要
反编译
的,apk就是个压缩文件,dex可以通过解压直接得到

阅读全文

与android反编译smali相关的资料

热点内容
开云服务器怎么申请 浏览:813
安卓从哪看什么时候开始使用 浏览:504
php取文本长度 浏览:408
公交车供电电压转为单片机 浏览:106
电流单片机 浏览:124
算法中ceil代表什么 浏览:491
内核源码超频 浏览:226
怎样把图片文件夹转化为压缩包 浏览:462
程序员概率题 浏览:268
东营银行app限额在哪里设置 浏览:483
word虚拟打印pdf 浏览:737
pdf画面 浏览:888
文件夹常用命令 浏览:205
被调侃的程序员 浏览:495
哪里有无损音乐app下载 浏览:223
单片机如何使用proteus 浏览:995
java常用的服务器 浏览:285
集结APP在哪里下载 浏览:800
欧洲cf玩什么服务器 浏览:535
如何连接另一台电脑上的共享文件夹 浏览:681