① 求教安卓apk反编译,添加广告教程
工具:
apktool,作用:资源文件获取,可以提取出图片文件和布局文件进行使用查看
dex2jar,作用:将apk反编译成java源码(classes.dex转化成jar文件)
jd-gui,作用:查看APK中classes.dex转化成出的jar文件,即源码文件
反编译流程:
一、apk反编译得到程序的源代码、图片、XML配置、语言资源等文件
下载上述工具中的apktool,解压得到3个文件:aapt.exe,apktool.bat,apktool.jar ,将需要反编译的APK文件放到该目录下,
打开命令行界面(运行-CMD) ,定位到apktool文件夹,输入以下命令:apktool.bat d -f test.apk test
(命令中test.apk指的是要反编译的APK文件全名,test为反编译后资源文件存放的目录名称,即为:apktool.bat d -f [apk文件 ] [输出文件夹])
获取成功之后,发现在文件夹下多了个test文件,点击便可以查看该应用的所有资源文件了。
如果你想将反编译完的文件重新打包成apk,那你可以:输入apktool.bat b test(你编译出来文件夹)便可
之后在之前的test文件下便可以发现多了2个文件夹:
build
dist(里面存放着打包出来的APK文件)
二、Apk反编译得到Java源代码
下载上述工具中的dex2jar和jd-gui ,解压
将要反编译的APK后缀名改为.rar或则 .zip,并解压,得到其中的额classes.dex文件(它就是java文件编译再通过dx工具打包而成的),将获取到的classes.dex放到之前解压出来的工具dex2jar-0.0.9.15 文件夹内,
在命令行下定位到dex2jar.bat所在目录,输入dex2jar.bat classes.dex,
在改目录下会生成一个classes_dex2jar.jar的文件,然后打开工具jd-gui文件夹里的jd-gui.exe,之后用该工具打开之前生成的classes_dex2jar.jar文件,便可以看到源码了
② 如何使用apktool反编译apk
1.下载apktool所需文件:
a、 apktool1.5.2.tar.bz2
b、apktool-install-windows-r05-ibot.tar.bz2 (windows系统)
2.解压刚刚下载的文件,并将解压的文件放入C:\Windows目录下
3.启动控制台,输入apktool,回车可查看到apktool工具常用指令
4.新建一个文件夹,用于存放apk及待解压的文件,这里笔者将文件夹建在D:\apk目录,同时放入用于测试的android app包(test.apk)
5.控制台输入:apktool d D:\apk\test.apk D:\apk\test 进行反编译操作
中句话中“D:\apk\test.apk”指apk存放位置,“D:\apk\test”指反编译后文件存放的位置
6.反编译成功之后,进入D:\apk\test文件目录可以查看到反编译后的文件
③ apk是什么文件,Android文件中怎么反编译
1 使用 apk_killer 工具,可以查看内部所有的东西,代码如果没有很厉害的功底 没有办法更改,
但是一些res下的资源都是可以修改的,还有版本号等。
2 修改好的文件 重新编译一下,可以使用你自己的key,直接可以连接模拟器或真机 运行查看效果。
④ 安卓系统APK反编译的问题——设置里添加新选项
我想问如何在一个已经编译的软件里添加新的事件(不是res)(不是我写的软件,没有源码)
我想你这个情况,应该换上原来的签名试试,我反编译改的都是res,不懂添加新的事件,只改res,就必须用原来的签名,
⑤ 有没有反编译工具,可以把APK完全反成一个android项目的 , 这个android逆向助手只
我可以让你看见项目的源码,但是不知道怎么才能将源码放到eclipse中进行运行!~~我试了好多次,都不成功,导入工程后总是会出错,不知道是我哪里设置的和源码中设置的不一样!~~
方法是:第一步:你先把下载的包的后缀名改成.zip
第二步:到网上搜索dex2jar,下载一个,解压到电脑磁盘中
第三步:打开你改完后缀名的.zip文件,将其中的.dex文件解压出来,拷贝到dex2jar这个文件中,和lib文件夹放在同文件下
第四步:进入cmd命令,然后用cd 命令进入到dex2jar这个文件中,我的是这样的cd C:\android反编译工具\dex2jar-0.0.9.15\dex2jar-0.0.9.15,然后在执行dex2jar classes.dex这个命令,等待一会,反编译好了后
第五步:到网上搜索jd_gui,然后下载一个解压到磁盘,打开它然后点打开文件,找到刚刚反编译好的那个文件夹,即dex2jar那个文件夹中找.jar文件,打开它就能看到源码了!~~~
其它的资源文件什么的就在刚刚你改完的那个zip文件中有。
不过你也可以将.apk文件再反编译回来,在看资源和Androidmanifest.xml文件!~~~这个用到apktool,这个用起来挺简单的,你可以到网上搜索一下!~~~
⑥ 如何自己编译android系统并制作刷机包
android系统制作刷机包方法:
【一】:下载安装最新版ROM助手(市场中有很多类似的制作工具,关键要求操作简单,功能强大),安装程序非常简单,只需在一只蘑菇首页内直接下载,并解压到自己的电脑安装即可。
【二】:如果已经下载了与机型匹配的ROM刷机包,那么现在可以直接打开ROM助手了,接下来绘制专属个性的完美刷机包就从这里开始吧。
【三】:打开软件后,它会自动升级到最新版本,另外打开主界面后,会直观简明的显示出它的所有功能,例如:性能优化,系统精简,预装APK,签名打包等等。提醒大家,不要贪心哦,要根据自己的需求点击需要操作的功能,如系统精简,然后进入操作界面,所有功能全部修改一遍也无妨,反正都是一键操作,省时省力。
⑦ 自己可以编译安卓源码吗
用最新的Ubuntu 16.04,请首先确保自己已经安装了Git.没安装的同学可以通过以下命令进行安装:
sudo apt-get install git git config –global user.email “[email protected]” git config –global user.name “test”
其中[email protected]为你自己的邮箱.
简要说明
android源码编译的四个流程:1.源码下载;2.构建编译环境;3.编译源码;4运行.下文也将按照该流程讲述.
源码下载
由于某墙的原因,这里我们采用国内的镜像源进行下载.
目前,可用的镜像源一般是科大和清华的,具体使用差不多,这里我选择清华大学镜像进行说明.(参考:科大源,清华源)
repo工具下载及安装
通过执行以下命令实现repo工具的下载和安装
mkdir ~/binPATH=~/bin:$PATHcurl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repochmod a+x ~/bin/repo
补充说明
这里,我来简单的介绍下repo工具,我们知道AOSP项目由不同的子项目组成,为了方便进行管理,Google采用Git对AOSP项目进行多仓库管理.在聊repo工具之前,我先带你来聊聊多仓库项目:
我们有个非常庞大的项目Pre,该项目由很多个子项目R1,R2,...Rn等组成,为了方便管理和协同开发,我们为每个子项目创立自己的仓库,整个项目的结构如下:
这里写图片描述
执行完该命令后,再使用make命令继续编译.某些情况下,当你执行jack-admin kill-server时可能提示你命令不存在,此时去你去out/host/linux-x86/bin/目录下会发现不存在jack-admin文件.如果我是你,我就会重新repo sync下,然后从头来过.
错误三:使用emulator时,虚拟机停在黑屏界面,点击无任何响应.此时,可能是kerner内核问题,解决方法如下:
执行如下命令:
通过使用kernel-qemu-armv7内核 解决模拟器等待黑屏问题.而-partition-size 1024 则是解决警告: system partion siez adjusted to match image file (163 MB >66 MB)
如果你一开始编译的版本是aosp_arm-eng,使用上述命令仍然不能解决等待黑屏问题时,不妨编译aosp_arm64-eng试试.
结束吧
到现在为止,你已经了解了整个android编译的流程.除此之外,我也简单的说明android源码的多仓库管理机制.下面,不妨自己动手尝试一下.
⑧ 求安卓软件反编译修改教程
1、baksmali:classes.dex反编译为smali格式
(smali:smali格式编译打包为classes.dex,但由于smali格式类似汇编,比较难阅读,所以用dex2jar进行辅助 )
2、dex2jar:classes.dex转为jar包
3、jdgui:jar反编译并阅读
操作顺序:
apk用zip解开,里面的classes.dex分别用baksmali处理为smali,用dex2jar处理成jar,然后用jdgui看代码,找好java文件中要改的位置后,在smali里找对应的位置修改,改完了用smali再编译为classes.dex,覆盖原来apk里的同名文件,最后重新签名。注意安装时要先删除原来手机里的版本,因为签名不同。
⑨ 怎么反编译APK文件
一、dexmp方法
dexmp是emulator自带提供的查看dex文件的工具,可使用类似这样的命令将dex文件mp到txt文件中:
D:\Program Files\android-sdk-windows-1.6_r1\platforms\android-1.6\tools>dexmp.exe -d classes.dex > spk.mp.txt
得到的文件内容,描述了类的信息,但实在是不好读啊~~~~
二、dex2jar + XJad 方法
该方法是使用dex2jar.jar包,将classes.dex文件解包成jar,在通过XJad(或者其他class反编译工具)进行java反编译。如:
1、dex2jar.bat d:\play\classes.dex
默认的输出路径同classes.dex,生成的文件名为classes.dex.dex2jar.jar
2、使用XJad反编译该jar包
之后的使用方法,大家都懂的:)
该方法的好处在于,通过XJad反编译后,大家可直接开到java源文件,缺点在于只能反编译出开发时的java文件,而开发时使用的lib包不能反编译出来。
三、AXMLPrinter2.jar + baksmali.jar + smali.jar 方法
这个方法就强大了,AXMLPrinter2是还原AndroidManifest.xml和main.xml的工具,直接打开这两个xml文件是乱码,而通过还原之后,可以很明白的看到里面的内容(我猜测还是使用了字节异或的方式加的密)。
baksmali.jar是反解析dex的工具,smali.jar则是再还原成dex的工具
操作方式如下:
1、java -jar AXMLPrinter2.jar D:\play\AndroidManifest.xml > AndroidManifest.txt
2、java -jar AXMLPrinter2.jar D:\play\res\layout\main.xml > main.txt
3、java -jar baksmali-1.2.5.jar -o classout/ d:\play\classes.dex
baksmali可解析(注意,是解析,不是反编译)原java包以及引用的lib包,解析出的文件认真看还是能看懂,比如以下片段:
view plain to clipboardprint?
.class Lcom/paul/test/a;
.super Landroid/view/View;
# static fields
.field private static final a:Landroid/graphics/Typeface;
# instance fields
.field private b:I
.field private c:I
.field private d:Z
.field private e:J
.field private f:I
.field private l:[Ljava/lang/String;
# direct methods
.method static constructor ()V
.registers 2
sget-object v0, Landroid/graphics/Typeface;->SANS_SERIF:Landroid/graphics/Typeface;
const/4 v1, 0x0
invoke-static {v0, v1}, Landroid/graphics/Typeface;->create(Landroid/graphics/Typeface;I)Landroid/graphics/Typeface;
move-result-object v0
sput-object v0, Lcom/wiyun/ad/a;->a:Landroid/graphics/Typeface;
return-void
.end method
#
# other methods ..........
#
# virtual methods
.method public onKeyUp(ILandroid/view/KeyEvent;)Z
.registers 4
const/16 v0, 0x42
if-eq p1, v0, :cond_8
const/16 v0, 0x17
if-ne p1, v0, :cond_b
:cond_8
invoke-direct {p0}, Lcom/paul/test/a;->d()V
:cond_b
const/4 v0, 0x0
invoke-virtual {p0, v0}, Lcom/paul/test/a;->setPressed(Z)V
invoke-super {p0, p1, p2}, Landroid/view/View;->onKeyUp(ILandroid/view/KeyEvent;)Z
move-result v0
return v0
.end method
.class Lcom/paul/test/a;
.super Landroid/view/View;
# static fields
.field private static final a:Landroid/graphics/Typeface;
# instance fields
.field private b:I
.field private c:I
.field private d:Z
.field private e:J
.field private f:I
.field private l:[Ljava/lang/String;
# direct methods
.method static constructor ()V
.registers 2
sget-object v0, Landroid/graphics/Typeface;->SANS_SERIF:Landroid/graphics/Typeface;
const/4 v1, 0x0
invoke-static {v0, v1}, Landroid/graphics/Typeface;->create(Landroid/graphics/Typeface;I)Landroid/graphics/Typeface;
move-result-object v0
sput-object v0, Lcom/wiyun/ad/a;->a:Landroid/graphics/Typeface;
return-void
.end method
#
# other methods ..........
#
# virtual methods
.method public onKeyUp(ILandroid/view/KeyEvent;)Z
.registers 4
const/16 v0, 0x42
if-eq p1, v0, :cond_8
const/16 v0, 0x17
if-ne p1, v0, :cond_b
:cond_8
invoke-direct {p0}, Lcom/paul/test/a;->d()V
:cond_b
const/4 v0, 0x0
invoke-virtual {p0, v0}, Lcom/paul/test/a;->setPressed(Z)V
invoke-super {p0, p1, p2}, Landroid/view/View;->onKeyUp(ILandroid/view/KeyEvent;)Z
move-result v0
return v0
.end method
认真一看,就知道:
# static fields 定义静态变量的标记
# instance fields 定义实例变量的标记
# direct methods 定义静态方法的标记
# virtual methods 定义非静态方法的标记
以onKeyUp方法为例,其中定义了处理逻辑,if-eq p1, v0, :cond_8 表示如果p1和v0相等,则执行cond_8的流程:
:cond_8
invoke-direct {p0}, Lcom/paul/test/a;->d()V
调用com.paul.test.a的d()方法
不相等: if-ne p1, v0, :cond_b 则执行cond_b的流程:
:cond_b
const/4 v0, 0x0
invoke-virtual {p0, v0}, Lcom/paul/test/a;->setPressed(Z)V
invoke-super {p0, p1, p2}, Landroid/view/View;->onKeyUp(ILandroid/view/KeyEvent;)Z
move-result v0
大概意思就是调用com.paul.test.a的setPressed方法,然后再调用父类View的onKeyUp方法
最后 return v0
该方法,能把外部引用的lib包类也解析出来,能开到包的全貌。缺点在于,解析出的smali文件并不是反编译出的java文件,可读性降低了,但仔细研究也能看出大概。
⑩ 关于安卓逆向你需要知道的工具及网站
关于安卓逆向你需要知道的工具及网站
把最近接触到的安卓逆向相关的工具和网站总结下,供需要者拿去使用,还有不全和遗漏后续会不断完善。
工具篇章
模拟器(动态调试需要用真机)
安卓原生模拟器:Android Studio自带的
夜神:今天开始尝试这个模拟器,发现在ida挂载进程时出现了问题,挂不上,架构为x86,不能用ida调试。 地址https://www.yeshen.com/
逍遥:还未使用 地址http://www.xyaz.cn/
蓝叠(bluestack): 地址http://www.bluestacks.cn
雷电模拟器
apk反编译套件工具
jeb:今天开始尝试这个工具 地址https://www.pnfsoftware.com/
YouGais:以前我一直使用这个,没有官网地址,免费版功能受限
打包及签名工具
apktool:apk拆包打包工具 地址https://ibotpeaches.github.io/Apktool/install/
jd-gui:java反编译工具 地址http://jd.benow.ca/
aotusign:自动签名工具,没有官网网络即可
native文件反编译工具
ida:静态分析、动态分析,免费版功能受限 地址https://www.hex-rays.com/
gdb:http://ftp.gnu.org/gnu/gdb/
辅助调试工具
adb:通向手机或模拟器的桥梁,绿色小程序。最常用的就是查看logcat,进入手机shell等。 地址http://adbshell.com/downloads
ddms:android SDK中自带工具。该工具可以查看手机模拟器的进程,选中需要监控的进程后,会出现绿色小蜘蛛图标,同时后面会出现8700端口号。
jdb:jdk目录下自带的与安卓进程连接的程序,常与ddms配合用于动态调试
xposed:需要安装框架+模块,还有对应的xposed市场。可以在常用市场搜索安装。bluestack中安装后变砖了,夜神中安装正常。
十六进制文件编辑工具
UltraEdit:十六进制文件编辑工具
010Edit:还没有用过
winhex:印象中很久前用过
android开发工具
Android Studio
Eclipse
Aide(手机版开发工具)
其他
解压缩软件:winrar、7zip等等都可以,将apk改名为zip就能直接打开
社区资料篇章
论坛及社区
看雪论坛:https://bbs.pediy.com/forum-161.htm
freebuff:http://www.freebuf.com/articles/terminal
还有吾爱破解、知乎、、CSDN等等都有相应版块内容及文章可供学习。
arm指令
官方文档pdf:
https://silver.arm.com/download/ARM_and_AMBA_Architecture/AR570-DA-70000-r0p0-00rel2/DDI0406C_C_arm_architecture_reference_manual.pdf
在线编译网站
c到汇编在线转换
https://gcc.godbolt.org/
汇编到操作码在线转换
http://armconverter.com/