Android逆向之旅—静态分析技术来破解Apk
2017-08-15 12:06
816 查看
笔记
netstat -ano | findstr 8080(查看用8080端口的进程)
netstat -o | findstr PID(不一定全)
一、准备工作
第一、首先是基本知识:
1、了解Android中的Apk文件的结构。
2、了解Smail语法和dex文件格式
3、apk的签名机制
第二、再者就是几个重要的工具
1、apktool:反编译的利器
2、dex2jar:将dex转化成jar
3、jd-gui:很好的查看jar文件的工具
4、IDA:收费的最全破解利器(分析dex和so都可以)
额外:上面四个工具是最基本的,但是现在网上也有一些更好的工具:JEB,GDA等。但是这些工具就是丰富了上面四个工具,所以说我们只要上面的四个工具就足够了。
二、技术原理
第一、静态分析的流程
1、使用apktool来反编译apk
有很多对apk加密的方式,直接让反编译就通不过,比如Androidmanifest文件,dex文件等,因为apktool需要解析这些重要的资源,一旦这些文件加密了那么就会终止。
2、分析程序的smail源码和AndroidManifest.xml文件
Android的程序入口信息都会在AndroidManifest.xml中,比如Application和入口Activity。这里有一个常用的命令需要记住:
adb shell dumpsys activity top
能够获取到当前程序的Activity信息
然后我们会分析smail代码,进行代码逻辑的修改。
3、直接解压apk文件得到classes.dex文件,然后用dex2jar工具得到jar,用jd-gui工具查看
这里我们主要很容易的查看代码,因为我们在第二步中得到了smail源码,就可以分析程序了,但是我们知道虽然smail语法不是很复杂,至少比汇编简单,但是怎么看着都是不方便的,还是看java代码比较方便,所以我们借助jd-gui工具查看代码逻辑,然后在smail代码中进行修改即可,上面说到的JEB工具,就加强了jd-gui工具的功能,它可以直接将smail源码翻译成java代码,这样我们就不需要先用jd-gui工具查看,再去smail源码中修改了,借助JEB即可。
4、如果程序中有涉及到native层的话,我们可以用IDA打开指定的so文件。我们还是需要先看java代码,找到指定的so文件,在用IDA来静态分析so文件。
第二、用到的技术
1、全局查找关键字符串和日志信息
我们可以在jd-gui工具中全局搜索字符串,这样就会很快的定位到我们想要找的逻辑地方:
还有一个重要点就是Android中的Log信息,不是所有的人都会记得在项目发布的时候关闭项目中的所有log信息。这时候我们就可以通过程序运行起来之后,会打印一些log信息,那么我们可以通过这些信息获取突破点,Android中的log可以根据一个应用来进行过滤的,或者我们可以通过log信息中的字符串在jd-gui中进行全局搜索也是可以的。
2、使用IDA来静态分析so文件
IDA也可以直接查看apk文件:
可以查看apk文件中的所有文件,我们可以选择classes.dex文件。
打开之后,我们可以看到我们的类和方法名,这里还可以支持搜索类名和方法名Ctrl+F,也可以查看字符串内容(Shirt+F12):
三、案例分析
第一、静态分析Java(smail)代码
首先我们拿到我们需要破解的Apk,使用apktool.jar工具来反编译:
netstat -ano | findstr 8080(查看用8080端口的进程)
netstat -o | findstr PID(不一定全)
一、准备工作
第一、首先是基本知识:
1、了解Android中的Apk文件的结构。
2、了解Smail语法和dex文件格式
3、apk的签名机制
第二、再者就是几个重要的工具
1、apktool:反编译的利器
2、dex2jar:将dex转化成jar
3、jd-gui:很好的查看jar文件的工具
4、IDA:收费的最全破解利器(分析dex和so都可以)
额外:上面四个工具是最基本的,但是现在网上也有一些更好的工具:JEB,GDA等。但是这些工具就是丰富了上面四个工具,所以说我们只要上面的四个工具就足够了。
二、技术原理
第一、静态分析的流程
1、使用apktool来反编译apk
有很多对apk加密的方式,直接让反编译就通不过,比如Androidmanifest文件,dex文件等,因为apktool需要解析这些重要的资源,一旦这些文件加密了那么就会终止。
2、分析程序的smail源码和AndroidManifest.xml文件
Android的程序入口信息都会在AndroidManifest.xml中,比如Application和入口Activity。这里有一个常用的命令需要记住:
adb shell dumpsys activity top
能够获取到当前程序的Activity信息
然后我们会分析smail代码,进行代码逻辑的修改。
3、直接解压apk文件得到classes.dex文件,然后用dex2jar工具得到jar,用jd-gui工具查看
这里我们主要很容易的查看代码,因为我们在第二步中得到了smail源码,就可以分析程序了,但是我们知道虽然smail语法不是很复杂,至少比汇编简单,但是怎么看着都是不方便的,还是看java代码比较方便,所以我们借助jd-gui工具查看代码逻辑,然后在smail代码中进行修改即可,上面说到的JEB工具,就加强了jd-gui工具的功能,它可以直接将smail源码翻译成java代码,这样我们就不需要先用jd-gui工具查看,再去smail源码中修改了,借助JEB即可。
4、如果程序中有涉及到native层的话,我们可以用IDA打开指定的so文件。我们还是需要先看java代码,找到指定的so文件,在用IDA来静态分析so文件。
第二、用到的技术
1、全局查找关键字符串和日志信息
我们可以在jd-gui工具中全局搜索字符串,这样就会很快的定位到我们想要找的逻辑地方:
还有一个重要点就是Android中的Log信息,不是所有的人都会记得在项目发布的时候关闭项目中的所有log信息。这时候我们就可以通过程序运行起来之后,会打印一些log信息,那么我们可以通过这些信息获取突破点,Android中的log可以根据一个应用来进行过滤的,或者我们可以通过log信息中的字符串在jd-gui中进行全局搜索也是可以的。
2、使用IDA来静态分析so文件
IDA也可以直接查看apk文件:
可以查看apk文件中的所有文件,我们可以选择classes.dex文件。
打开之后,我们可以看到我们的类和方法名,这里还可以支持搜索类名和方法名Ctrl+F,也可以查看字符串内容(Shirt+F12):
三、案例分析
第一、静态分析Java(smail)代码
首先我们拿到我们需要破解的Apk,使用apktool.jar工具来反编译:
相关文章推荐
- Android逆向之旅---静态分析技术来破解Apk
- Android逆向之静态分析技术来破解Apk
- Android逆向之旅---静态分析技术来破解Apk
- Android逆向之旅---静态分析技术来破解Apk
- Android逆向之旅---静态分析技术来破解Apk
- Android逆向之旅---静态分析技术来破解Apk
- Android逆向之旅---静态分析技术来破解Apk
- Android逆向之旅---静态分析技术来破解Apk
- Android逆向之旅---静态分析技术来破解Apk
- 【Android SDK程序逆向分析与破解系列】之五:Android APK的静态分析
- 【Android安全】APK静态分析-源码反编译逆向分析
- Android逆向分析基础-反破解技术
- 【Android SDK程序逆向分析与破解系列】之一:Android安装程序APK分析
- Android逆向之旅---静态方式破解微信获取聊天记录和通讯录信息
- Android逆向之旅---动态方式破解apk终极篇(加固apk破解方式)
- Android逆向之旅---静态方式破解微信获取聊天记录和通讯录信息
- Android逆向之旅---动态方式破解apk前奏篇(Eclipse动态调试smail源码)
- Android apk如何加固防止被破解(防止逆向编译)
- Android逆向之旅---动态方式破解apk前奏篇(Eclipse动态调试smail源码)
- Android逆向之旅---动态方式破解apk终极篇(加固apk破解方式)