当前位置:首页 » 编程软件 » app怎么反编译

app怎么反编译

发布时间: 2023-04-18 20:37:37

1. 安卓app360加固怎么反编译

1 对比

上传demo进行加固,解包后对比下原包和加固包,发现加固包在assets文件夹下多了libjiagu.so,libjiagu_x86,lib文件夹下多了libjiagu_art.so,同时修改了dex文件和AndroidManifest文件

打开manifest文件,看到xxx加固对Application标签做了修改,添加了壳入口,也就是我们反编译后看到的StubApplication.smali这个文件。

相比于之前版本的加固,自从1.x.x.x加固版本之后,多了几次反调试,使得动态难度稍微增大了一些,不过针对脱壳机脱壳,再多了反调试也是无用。或者通过修改系统源码,也能达到消除反调试的作用。


2 动态调试

(1)把app安装到手机,以调试模式打开app

(2)以shell模式root权限打开IDA的android_server监听

(3)tcp转发

(4)打开IDA,修改配置为在进程开始时下断

(5)搜索到进程后jdwp转发,pid值即为我们进程号,并在命令行下附加。

成功附加后,可以下段了,打开Debugger Option

我们选择在线程开始和库加载时下断,修改成功后,jdb附加,点击运行

程序会断在elf头处,按下G键,搜索mmap,在mmap函数的段首和断尾下段

F9运行,来到断尾时F8单步,

来到此处时,在 BLunk_5C999C2C下断,F9一下,F7跟进去

跟进去今后在BLX LR处进行下断,此处就是进行反调试的地方,原理依然是获取TracePid的值判断当前是不是处于调试状态,建议第一次调试的人在fgets和fopen处下断,再f7跟进此调用就可以看到TracePid的值了。

跟进去之后,我们直接把方法移到最下方,就可以看到kill符号了,这就是杀进程的地方,如果当前处于调试状态,则直接结束进程。

我们在此函数的所有cmpR0,#0处下断,F9一下后即断在断点处,观察寄存器窗口的R0值,实质就是当前的TracePid的16进制的值

不确定的可以使用cat /proc/pid/status进行对比一下,我们直接把R0置0,右键选择Zero Value即可清0,继续F9

我们看到程序又来到了mmap处,继续f9

当继续断在调用反调试功能的方法时,继续F7跟进,依然在所有的cmp R0,#0处下断,断下后把R0清0后继续F9运行

目前的规律是,调用BLXLR的第一次,第二次和第四次是进行反调试判断的,第三次并不影响,可以直接f9跳过去,三次反调试搞定后,就可以愉快的F9运行并观察堆栈窗口了

当看到出现如下所示时:

说明壳已经开始解密并释放dex文件了,我们直接F8单步十几步,最后F9一下就可以看到我们需要的dex头了

直接脚本mp出来即可,最后把libjiagu的所有文件删除,并修复下Application标,如果存在则修复,不存在删除即可

2. 求安卓软件反编译修改教程

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里的同名文件,最后重新签名。注意安装时要先删除原来手机里的版本,因为签名不同。

3. apk怎么反编译换图标比较简单的方法

一、准备工作
1、下载安装java jdk
2、配置java环境
3、下载apktools反编译工具包
二、具体操作
1、将下载来的apktools工具包解压至c:\目录下,然后将需要反编译(修改)的apk文件放入解压文件夹内。今天就用一键锁屏来做试验吧。

2、打开一键apktools.exe工具,因为不是系统文件所以就直接反编译,不需要安装环境!选择2,然后选择文件名。这里我们是lockscreen.apk所以我们选2!

3、等待解压完成,我们在lockscreen文件夹内的res目录里去修改 程序名称和程序图标。程序名称的文件路径为 lockscreen\res\values-zh-rCN\strings.xml 我们使用记事本打开 找到app_name 在 两个>< 修改自己需要显示的程序名称,我们就把 一键锁屏改为 锁屏,修改好以后保存即可~

4、然后在 lockscreen\res\drawable-hdpi 文件夹内替换图标。先找到现在的程图标,因为一键锁屏很简单,所以只有一个图标。我们记下图标的名字 lock.png 然后删除它,将我们准备好的图标放入目录下,改名为刚才的名字 lock.png。

5、然后返回到apktools解压文件夹,编译后的文件在 回编apk生成目录 下,我们将其签名,然后安装即可。

4. android studio 如何回编译一个APP

android studio中不能编译反编译出来的文件,android studio只能编译源代码。

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盘的根目录里

5. apk反编译工具怎么使用

反编译apk工具使用最广泛的就是apktool,这里先说一下整个流程用到的工具有:

1.apktool,下载后拿到apktool.bat和apktool.jar,然后把这两个工具放到C:Windows底下。这个工具的作用主要是得到apk的资源文件和配置文件

2.dex2jar 下载这个工具解压后放到任意盘都可以,后面主要用这个根据apk的classes.dev文件生成供jd-gui工具解析的jar。

3.jd-gui上一步提到其作用,和2一样,也是下载后放到任意盘即可,到时候只要运行jd-gui.exe打开上一步生成的jar即可查看源码,下面对这个工具不再赘述

下面详细说一下前面两个工具类的详细用法:

先说apktool的用法:

1.下载后拿到apktool.bat和apktool.jar,然后把这两个工具放到C:Windows底下

2.cmd打开后默认是你的计算机,默认的不用改,直接输入apktool,如果出现如下图的效果,即表示准备已就绪


6. 如何反编译android应用并重新打包

一.看android的源代码

1)将Apkd.apk 用zip解压后,出现了一个classes.dex文件
2014/02/19 19:42
.
2014/02/19 19:42
..
2014/02/19 15:35 1,656 AndroidManifest.xml
2014/02/19 15:35 687,024 classes.dex
2014/02/19 15:49
META-INF
2014/02/19 15:49
res
2014/02/19 15:35 2,200 resources.arsc
2)进入到dex2jar目录中,运行情况如下:
D:\developer\tools\test_apk\dex2jar-0.0.9.15>dex2jar.bat "..\Apkd(d2j)\classes.d
ex"
this cmd is deprecated, use the d2j-dex2jar if possible
dex2jar version: translator-0.0.9.15
dex2jar ..\Apkd(d2j)\classes.dex -> ..\Apkd(d2j)\classes_dex2jar.jar
Done.
在apk所在的目录会出现 classes_dex2jar.jar 文件。
3) 用JD-GUI对jar包进行查看,可以查看源文件

二.反编译apk

1.在下载APKTOOL中的三个文件(aapt.exe、apktool.bat、apktool.jar)解压缩到你的Windows安装目录下,以方便使用Dos命令.
2012/12/06 11:44 854,016 aapt.exe
2014/02/19 17:15 277,372 Apkd.apk//示例用apk文件
2012/12/23 23:39 92 apktool.bat
2013/02/03 02:37 2,655,843 apktool.jar
2.进入到apktool.bat所在的目录,运行:
apktool d Apkd.apk decode_dir
反编译后,decode_dir目录下的内容如下:
2014/02/19 17:16 716 AndroidManifest.xml
2014/02/19 17:16 237 apktool.yml
2014/02/19 17:18
build
2014/02/19 17:16
res
2014/02/19 17:16
smali
此时我可以查看原文件AndroidManifest.xml了,也是查看smali源文件(是用smali语言写的,可以对照java看)。

三.APKTOOL的使用

1).decode
该命令用于进行反编译apk文件,一般用法为
apktool d

代表了要反编译的apk文件的路径,最好写绝对路径,比如C:\MusicPlayer.apk
代表了反编译后的文件的存储位置,比如C:\MusicPlayer
如果你给定的已经存在,那么输入完该命令后会提示你,并且无法执行,需要你重新修改命令加入-f指令
apktool d –f

这样就会强行覆盖已经存在的文件
2).build
该命令用于编译修改好的文件,一般用法为
apktool b

这里的
就是刚才你反编译时输入的
(如C:\MusicPlayer),输入这行命令后,如果一切正常,你会发现C:\MusicPlayer内多了2个文件夹build和dist,其中分别存储着编译过程中逐个编译的文件以及最终打包的apk文件。
3).install-framework
该命令用于为APKTool安装特定的framework-res.apk文件,以方便进行反编译一些与ROM相互依赖的APK文件。具体情况请看常见问题

四.smali与java源码对照,并做出相应的修改

java源代码:

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.*;

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView a = (TextView)this.findViewById(R.id.test) ;
a.setText("raoliang");
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

}

对应的smali源代码:
.class public Lali/text/apkd/MainActivity;
.super Landroid/app/Activity;
.source "MainActivity.java"

# direct methods
.method public constructor ()V
.locals 0

.prologue
.line 8
invoke-direct {p0}, Landroid/app/Activity;->()V

return-void
.end method

# virtual methods
.method protected onCreate(Landroid/os/Bundle;)V
.locals 2
.parameter "savedInstanceState"

.prologue
.line 12
invoke-super {p0, p1}, Landroid/app/Activity;->onCreate(Landroid/os/Bundle;)V

.line 13
const/high16 v1, 0x7f03

invoke-virtual {p0, v1}, Lali/text/apkd/MainActivity;->setContentView(I)V

.line 14
const/high16 v1, 0x7f08

invoke-virtual {p0, v1}, Lali/text/apkd/MainActivity;->findViewById(I)Landroid/view/View;

move-result-object v0

check-cast v0, Landroid/widget/TextView;

.line 15
.local v0, a:Landroid/widget/TextView;
const-string v1, "raoliang"

invoke-virtual {v0, v1}, Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V

.line 16
return-void
.end method

.method public onCreateOptionsMenu(Landroid/view/Menu;)Z
.locals 2
.parameter "menu"

.prologue
.line 21
invoke-virtual {p0}, Lali/text/apkd/MainActivity;->getMenuInflater()Landroid/view/MenuInflater;

move-result-object v0

const/high16 v1, 0x7f07

invoke-virtual {v0, v1, p1}, Landroid/view/MenuInflater;->inflate(ILandroid/view/Menu;)V

.line 22
const/4 v0, 0x1

return v0
.end method

通过对比可以看到,常量是没有必变的,可以根据的smali的语法,进行相应的修改

五.3、打包、签名和安装修改后的apk

修改完了,就可以打包回apk了。执行以下命令:
apktool b decode_dir
在mygame目录下的dist在会看到打包好的apk。
当然,现在一般是无法安装的,因为apk还没有签名。下面就来签名。签名需要keystore文件,我已经有专用的keystore了,如果还没有,请参阅这里进行生成。
执行以下命令为重新编译的my_game.apk签名:
jarsigner -verbose -keystore demo.keystore Apkd.apk demo.keystore
最后,在安装到手机前,需要把手机中的已有版本先卸载,因为如果签名不同,是不能覆盖安装的,会提示“应用程序未安装”错误。
完整的运行情况如下:

D:\developer\tools\test_apk\new\decode\dist>keytool -genkey -alias demo.keystore -keyalg RSA -validity 40000 -keystore demo.keystore
输入keystore密码:
再次输入新密码:
您的名字与姓氏是什么?
[Unknown]: rao
您的组织单位名称是什么?
[Unknown]: rao
您的组织名称是什么?
[Unknown]:
您所在的城市或区域名称是什么?
[Unknown]:
您所在的州或省份名称是什么?
[Unknown]:
该单位的两字母国家代码是什么
[Unknown]:
CN=rao, OU=rao, O=Unknown, L=Unknown, ST=Unknown, C=Unknown 正确吗?
[否]: y

输入的主密码
(如果和 keystore 密码相同,按回车):

D:\developer\tools\test_apk\new\decode\dist>jarsigner -verbose -keystore demo.keystore Apkd.apk demo.keystore
输入密钥库的口令短语:
正在添加: META-INF/MANIFEST.MF
正在添加: META-INF/DEMO_KEY.SF
正在添加: META-INF/DEMO_KEY.RSA
正在签名: res/drawable-hdpi/ic_launcher.png
正在签名: res/drawable-mdpi/ic_launcher.png
正在签名: res/drawable-xhdpi/ic_launcher.png
正在签名: res/drawable-xxhdpi/ic_launcher.png
正在签名: res/layout/activity_main.xml
正在签名: res/menu/main.xml
正在签名: AndroidManifest.xml
正在签名: classes.dex
正在签名: resources.arsc

D:\developer\tools\test_apk\new\decode\dist>
到此为止,修改后的apk可以正常的安装了,不过,在安装之前,必须要先卸载以前的apk,不能直接替换(因为签名不一样)

7. 如何反编译一个app

下载apktool所需文件:
a、 apktool1.5.2.tar.bz2
b、apktool-install-windows-r05-ibot.tar.bz2 (windows系统)

解压刚刚下载的文件,并将解压的文件放入C:\Windows目录下
启动控制台,输入apktool,回车可查看到apktool工具常用指令
新建一个文件夹,用于存放apk及待解压的文件,这里笔者将文件夹建在D:\apk目录,同时放入用于测试的android app包(test.apk)
控制台输入:apktool d D:\apk\test.apk D:\apk\test 进行反编译操作
中句话中“D:\apk\test.apk”指apk存放位置,“D:\apk\test”指反编译后文件存放的位置 反编译成功之后,进入D:\apk\test文件目录可以查看到反编译后的文件

8. apk反编译/回编译

再次记录一次apk反编译/回编译过程,链接失效请留言,会及时更新。

参考博客: https://blog.csdn.net/w327918069/article/details/82761437

首先,我们需要一个apk,下图是Android Studio编写并打包的一个apk。

其实apk就相当于一个zip压缩包,通过 WinRar 工具可以对其解压缩,像这样:

此时,祭出我们的神器----> apktool ,当当当当~~~~~~~。
一行命令进行apk反编译:
apktool d -r app-debug.apk 一定要加入参数 -r ,不然后面回编译回报错。

apk反编译到此结束。

回编译就是通过 apk反编译 生成的目录文件转换成一个apk。
十分简单的一行命令:
apktool b app-debug

此时安装apk到手机无法安装成功,还需要对apk进行签名才能安装。

1.生成key.keystore
keytool -genkey -alias key.keystore -keyalg RSA -validity 30000 -keystore key.keystore

可以看到key.keystore已经生成。

2.对apk进行签名
可用于没有签名和已经签名的apk,再次签名。

jarsigner -verbose -keystore [keystorePath] -signedjar [apkOut] [apkin] [alias]

命令格式及参数意义:

-verbose -> 输出签名过程的详细信息

-keystore [keystorePath] -> 密钥的库的位置

-signedjar [apkOut] -> 签名后的输出文件名

[apkin] -> 待签名的文件名

[alias] -> 证书别名
jarsigner -verbose -keystore key.keystore -signedjar app-debug_signed.apk app-debug.apk key.keystore

回编译完成。

9. 用mt怎么反编译app获取key

一、工具准备:apktool , dex2jar , jd-gui

二、使用dex2jar + jd-gui 得到apk的java源码
1.用解压工具从 apk包中取出 classes.dex 文件
用命令(dex2jar.bat classes.dex)得到一个 jar文件
2.用jd-gui反编译工具将得到.jar文件反编译成.java文件

三、使用apktool得到apk的xml文件
1.用命令(apktool d xxx.apk xxx_xml)反编译xxx.apk包
2.从 xxx_xml 文件夹得到xml文件

四、第二步 得到的程序源代码 和 第三步 得到的xml文件组合下,即可得到完整的apk源码。

五、应用: 汉化/去广告,加 values-zh-rCN, values-zh-rTW, values-de, values-fr

1.在步骤三的文件夹xxx_xml/res/ 下, 建文件夹: values-zh-rCN,values-zh-rTW

2.1复制values\strings.xml 到 values-zh-rCN 并翻译.

2.2 去广告见;

3.重建APK,用命令(apktool b xxx) ,输出到ABC/dist/out.apk

或命令( apktool b xxx out.apk)

10. 如何反编译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文件目录可以查看到反编译后的文件

热点内容
商汤科技存储负责人 发布:2025-07-15 01:24:21 浏览:251
文件夹如何批量替换文件名 发布:2025-07-15 01:19:15 浏览:67
ftp上传网页 发布:2025-07-15 01:13:09 浏览:181
音乐文件夹图标 发布:2025-07-15 01:03:41 浏览:494
安卓机怎么反向充电 发布:2025-07-15 01:03:40 浏览:500
电脑使用华为云服务器 发布:2025-07-15 00:48:10 浏览:533
中考应该如何排解压力 发布:2025-07-15 00:17:54 浏览:362
安卓第三方应用软件是什么 发布:2025-07-15 00:12:06 浏览:149
程序业务配置存储 发布:2025-07-14 23:52:16 浏览:685
csdn编程挑战 发布:2025-07-14 23:52:08 浏览:791