导航:首页 > 源码编译 > 自己编译安卓系统逆向apk

自己编译安卓系统逆向apk

发布时间:2022-11-25 19:41:04

① 求教安卓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内核问题,解决方法如下:
执行如下命令:

  • ./out/host/linux-x86/bin/emulator -partition-size 1024 -kernel ./prebuilts/qemu-kernel/arm/kernel-qemu-armv7

  • 通过使用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/

    阅读全文

    与自己编译安卓系统逆向apk相关的资料

    热点内容
    app易语言post怎么学 浏览:963
    地梁的箍筋加密区位置 浏览:300
    二分法排序程序及编译结果 浏览:677
    日语命令形和禁止型 浏览:283
    安装软件用管理员解压 浏览:503
    编译原理代码块 浏览:398
    小孩可以用压缩面膜吗 浏览:12
    锥形倒角怎么计算法 浏览:880
    java合并链表 浏览:505
    pic单片机编译器 浏览:803
    丽水四轴加工中心编程 浏览:689
    国产系统怎么解压 浏览:552
    战双程序员 浏览:483
    him触摸编程软件 浏览:931
    植物大战僵尸存档怎么转移安卓 浏览:852
    java栈的元素 浏览:738
    程序员与篮球事件 浏览:676
    app反编译不完整 浏览:789
    电脑上的文件夹怎么调整 浏览:8
    服务器无响应是什么原因呀 浏览:985