android怎么动态调试dex
x03 Andoid原生动态链接库动态调试 通常为了加密保护等措施,有时dex执行过程中会调用动态链接库文件,该文件以so为后缀,存在于APP文件包里。这里我们以动态附加的方式来调试原生库。
官方rom大部分每个apk对应一个.odex文件,而deodex化的rom里面只有一个apk,把.odex转换成classes.dex放到apk包里面了。所以 odex rom的.apk+.odex=deodex化rom的1个.apk (简单地来说,其实就上一个合并的过程)。
在Android中支持动态加载dex文件的两种方式:DexClassLoader:这个可以加载jar/apk/dex,也可以从SD卡中加载,也是本文的重点 PathClassLoader:只能加载已经安装到Android系统中的apk文件。也就是 /data/app 目录下的 apk 文件。
动态调试 (1)把app安装到手机,以调试模式打开app (2)以shell模式root权限打开IDA的android_server监听 (3)tcp转发 (4)打开IDA,修改配置为在进程开始时下断 (5)搜索到进程后jdwp转发,pid值即为我们进程号,并在命令行下附加。
在android studio中新建默认的android应用app。点击菜单栏的“Run”-“Attach debugger to Android process”。然后会打开“Choose Process”窗口。选中要调试的进程,然后点击ok。console中会输出:Connected to the target VM, address: localhost:8601, transport: socket。
如何高效阅读android反编译后的源码
1、首先把反编译的apk存放到apktools同级文件夹目录下,如下图所示。按住shift+鼠标右键打开命令窗口,运行代码 apktool d yd.apk(安装包的名字)。apk后缀名改成zip,解压双击打开xml格式文件如下图所示。打开cmd命令窗口,如下图所示依次输入命令。
2、显然Eclipse不是阅读Android源码的好工具,不流畅,搜索低效,继承性关系/调用关系都无法有效查看。推荐Source Insight,在这个工具帮助下,你才可以驾驭巨大数量的Android 源码,你可以从容在Java,C++,C代码间遨游,你可以很快找到你需要的继承关系。顺便,我们公司一直是Windows+Linux+Samba的工作模式。
3、第一种是选择工作目录,即已经存在的android应用程序源代码。第二种分两种方式 (1)选择External File…按钮,添加Jar格式文件或者zip格式文件路径;(2)选择External Floder…按钮,添加文件夹所在路径。下面问题就来了,源代码在哪里?不能凭空产生阿。
4、要查看Android APP的源代码,你可以通过以下几种方法: 从开源平台获取:如果APP是开源的,你可以在如GitHub、GitLab等代码托管平台上搜索该APP的源代码。 使用反编译工具:对于非开源的APP,你可以尝试使用反编译工具如Apktool和JD-GUI来反编译APK文件。
5、下载反编译工具 需要下载四个工具:dex2jar、JD-GUI、apktool、apktool-install-windows-r05-ibot dex2jar:将apk中的classes.dex转化成Jar文件。JD-GUI:反编译工具,可以直接查看Jar包的源代码。apktool:反编译工具,通过反编译APK中XML文件,直接可以查看。
6、是不是发现,我们在 build.gradle 里的 android{...} 使用过的标签名原来都在这里的啊。以后就算是再碰到大神的 build.gradle 文件里各种没看见过的标签名,不用再担心看不懂了。
什么是dex文件
简单说就是优化后的android版.exe。每个apk安装包里都有。相对于PC上的java虚拟机能运行.class;android上的Davlik虚拟机能运行.dex。作用 让dalvik能够运行。dex好处 可以直接用DexClassLoader类加载,动态加载。于是只要在dex上加壳,在程序运行时脱壳,就可以规避静态反编译的风险。
dex文件是Android平台上可执行文件的类型。对于Android DEX文件进行优化,需要注意的一点是DEX文件的结构是紧凑的,但是我们还是要想方设法的进行提高程序的运行速度,我们就仍然需要对DEX文件进行进一步优化。
Dex文件就是Dalvik可执行文件,实际上它就是一个优化后的java字节码文件,因此构造这类文件需要先写个java文件 Pino.java 然后编译 之后得到了Pino.class文件,之后我们用dx工具,该工具需要安装Android SDK才能有的工具 这样就得到了一个dex文件了,之后我们利用010editor工具来进行分析。
dex是apk目录下的文件,可在虚拟机中运行。
所谓dex,是由android软件中的classes.dex生成的,dex化即是把那个文件预先提取出来作用是能加快软件加载速度和开机速度。不过dex也有缺点,那就是有时候加刷东西会出现问题。原本系统恢复出厂设置后第一次开机需要先提取classes.dex出来,而dex化就是现在你提前把它提取出来了。
ODEX是安卓上的应用程序apk中提取出来的可运行文件,是通过apk安装包的中的dex优化过的,再把apk包里的dex文件删除。这样做可以加快软件的启动速度,预先提取,减少对RAM的占用,因为没有odex的话,系统要从apk包中提取dex再运行。
Android上,怎么用16进制加密apk的dex文件让别人无法反编译或进内部查看...
1、apk如何防止反编,就用反编译工具来举例,例如dex2jar和JD-GUI。dex2jar是将APK中的classes.dex转化成Jar文件,而JD-GUI是一个反编译工具,可以直接查看Jar包的源代码。
2、第三方App加密保护平台,爱加密对APK包进行精准的安全检测分析,对App提供一个全方位的加密保护服务并进行实时的渠道监测和信息反馈。同时还可以通过对源文件加壳技术实现DEX保护,即隐藏原本的classes.dex文件,然后生成一个 classes.dex壳文件放到 APK 中,这样黑客无法看到实质性的源代码。
3、进行源码保护检测。检测DEX文件保护,查看DEX文件是否做了保护,避免法分子反编译得到程序源码,从而杜绝恶意插入广告、恶意植入扣费代码等行为,保证用户体验以及APP的功能完整。源码混淆保护检测。
4、DEX文件加壳:相当于把源码打包至其他文件夹下,逆向工具对加密后的dex文件解析,只能看到壳文件,可以防止解包后看到真正的源码。爱加密利用挖空技术实现函数级加密,安全强度高,启动效率快。dex加花:由于大部分逆向工具都是线性读取字节码并解析,当遇到无效字节码时就会引起反编译工具字节码解析失败。
5、Android APK运行环境依赖的文件/文件夹 res、DEX、主配文件Lib 只是简单的加密甚至没有任何保护措施。APKtool(一种反编译工具)可轻易将其轻松破解,再配合其他各种工具基本可以做到:源码暴露(代码混淆也几乎起不到任何安全作用)、资源文件裸奔、主配文件可任意修改、核心SO库暴露、暴力破解恶意利用等。
6、反编译流程详解 以HelloAndroid.apk为例,首先在命令行中定位到Apktool文件夹,输入java -jar apktool.bat d HelloAndroid.apk,解包后,我们会看到资源和smali文件,但加固处理的app可能无法完全反编译。查看与回编译 apk其实是一个zip文件,通过解压后,我们可以处理classes.dex。
android反编译之后怎么更快的看懂代码
1、比较重要的是边看要边加注释,越详细越好。细到每个变量是做什么的,每个if else分支是在什么情况下触发的,看懂的都要注释,以后别人看也方便。
2、首先把反编译的apk存放到apktools同级文件夹目录下,如下图所示。按住shift+鼠标右键打开命令窗口,运行代码 apktool d yd.apk(安装包的名字)。apk后缀名改成zip,解压双击打开xml格式文件如下图所示。打开cmd命令窗口,如下图所示依次输入命令。
3、每个人都有自己的思维习惯,因此再乱的代码也有自己的风格。比如命名, 比如UI的时候习惯先写Insert动作等等. 找到这些地方可以帮助阅读代码。 一般情况都可以从界面录入着手读代码, 先搞清楚有那些输入,做了什么, 有什么输出。之后在看代码的细节会比较容易。
4、以HelloAndroid.apk为例,首先在命令行中定位到Apktool文件夹,输入java -jar apktool.bat d HelloAndroid.apk,解包后,我们会看到资源和smali文件,但加固处理的app可能无法完全反编译。查看与回编译 apk其实是一个zip文件,通过解压后,我们可以处理classes.dex。
5、要查看Android APP的源代码,你可以通过以下几种方法: 从开源平台获取:如果APP是开源的,你可以在如GitHub、GitLab等代码托管平台上搜索该APP的源代码。 使用反编译工具:对于非开源的APP,你可以尝试使用反编译工具如Apktool和JD-GUI来反编译APK文件。
6、生成classes-dex2jar.jar。接着,通过jd-gui打开此文件,即可查看到Java源代码的反编译版本。通过以上步骤,无论是初学者还是经验丰富的开发者,都能顺利掌握Apktool的基本操作,开启Android应用的神秘面纱,探寻代码背后的逻辑。