一,android 工具箱
工欲善其事必先利其器。介绍一些常用工具和个别使用。一些工具脚本发现 windows 下发送到这个东西蛮方便的,研究一下脚本用来提高效率.
1Apk 反编译或回编译.bat
2 用 jd-gui 查看(或者转 jar 文件).bat 可以直接用 jd-gui 打开 apk 或 dex 看java 代码
3,baksmali 或 smali.bat
4,Apk 反或回编译(调试).bat 主要用于 smali 调试打包
5,smali 生成 dex 文件.bat
6, 对 Apk 进行签名.bat
7,启动调试 apk.bat ida 附加调试 so 时、jdb 调试、smali 调试
8 安装 APK.bat 管家这些老是乱装东西,真不爽,直接用命令多好
9 用 jeb 打开.bat jeb smali->java 的神器使用把 1Apk 反编译.bat 到 9 用 jeb 打开.bat 生成快捷方式再把快捷方式剪贴到用户的sendto 文件夹 sendto 文件夹快速打开方式.
按下 win 键,再搜索输入 shell:sendto 反编译回编译 apk 可以右键发送至对应的操作,可以自行修改编号来排序
工具脚本
使用启动 apk 调试
smali 阅读工具
apkstudio
sublime
ue
notepad++
apk 修改之理
SmaliViewer
ida每个工具各有优点,尝试一番,最后选择了 notepad++,配合 notepad++的一些插件,可以 diy 一个强大的 smali ide
1 语法高亮配色
2 搜索 当前文件搜索、文件夹搜索、所有打开问题搜索
3 Explorer 文件浏览插件 Python Script python 插件,通过这个插件可以 python写些工具脚本
加上自己写的几个插件
openjava 可直接跳到 java 类(jd-gui,jeb 研究中)
jumpsmali 调转到定义函数
比如一个引用了 invoke-static {v0}, Lcom/mydebug;->log([B)V,使用插件后快速调转到 mydebug.smali 的.method public static log([B)V
jumpback 从调转到定义函数返回
gotosmalifile 快速调转到想打开的 smali 文件apktoolb 回编译并签名插件
apk java 反编译
jd-gui
jad
jebps:不要过于相信这些工具,特别是加密算法分析的,smali 才是根本
so 静态分析工具
IDA
hopperso
动态调试工具IDA
gdb
Affinic Debugger
gikdbg.art
ida+arm F5 下载链接: http://pan.baidu.com/s/1i3qqGoH
ida 启动时附加
1) adb am start -D -n 包/启动类
2) adb forward tcp:你要转发的端口 jdwp:调转 app 的 pid
3) ida pro attach 进程, 设置新线程,加载 so 时断点,continue
4) jdb -connect com.sun.jdi.SocketAttach:port=转发的端口,hostname=localhostps:不能打开想 eclipse 等调试工具,不然 jdb 会附加不上
如果想用 eclipse,第 4 步换成:
打开调试选项 debug configurations -> Remote Java Application->New_configuration->Project 填包名 ->Conenection Type 选择 SocketAttach->host:localhost->Post:8700点击 debug 即可 (我把调试命令封装在“启动调试 apk.bat”,可以试试)
busybox
Linux 工具里的瑞士军刀。
镜像修改工具
默认情况下 emulator 会以只读的形式加载 system.img,即便 remount 之后对其进行的修改也不会实际被保存下来, 你要安装 xposed 或 su 管理工具就需要修改镜像.mkfs.yaffs2.arm
mkfs.yaffs2.arm 镜像 dump 工具你安装好 xposed、su、busybox 之后,用 mkfs.yaffs2.arm 把镜像 dump 出来
adb shell #mount -o remount,rw /dev/block/mtdblock0 /system # mkdir /filesname#cd /filesname #./mkfs.yaffs2.arm /system /filesname/my_system.img #exit adb pull /filesname/my_system.img
接着将该 my_system.img 替换 $ANDROID_SDK/sdk/system-images/android-xx 下的system.img 即可(转自:http://www.kanxue.com/bbs/showthread.php?t=191113)
ps(这样做有个问题就是你有可能收到提示 system 空间不足,因为是在模拟器中,dump 时间过长)
mkyaffs2image_y unyaffsimage
如果有 linux 环境,可以尝试 mkyaffs2image_y unyaffsimage
工具解开镜像
# ./unyaffsimage system.img systemout你可以在解开镜像文件夹 systemout 添加你的程序,注意权限和用户组生成镜像 #./mkyaffs2image_y ./systemout systemnew.img可以参考我写个一个脚本 #!/bin/shrm system/app/QuickSearchBox.*rm system/app/Calendar.*rm system/app/Music.* cp -av ./bin/su ./system/bin/su cp -av ./bin/proxy.sh ./system/bin/proxy.sh cp -av ./bin/redsocks ./system/bin/redsocks cp -av ./bin/busybox ./system/bin/busybox cp -av ./bin/Superuser.apk ./system/app/Superuser.apk echo add xposed support .. cpav./system/bin/app_process./system/bin/app_process.orig cp-av-f./bin/app_process_xposed./system/bin/app_processcd ./system/bin pwd ln -s -f proxy.sh proxy echo back .. cd .. cd .. sudo chown -R 0:0 ./system/bin/ sudo chown -R 0:0 ./system/lib/ sudo chown -R 0:0 ./system/app/ echo chmod ......... chmod 644 ./system/app/Superuser.apk chmod 4755 ./system/bin/su chmod 755 ./system/bin/proxy.sh chmod 755 ./system/bin/redsocks chmod 755 ./system/bin/busybox chmod 755 ./system/bin/app_processpwd./mkyaffs2image_y ./system systemNew.img>./log.txt chmod 644 ./systemNew.img
hook 框架
xposed
Cydiasubstrate
adbd-Insecure
如果你手机 root 后,adb shell 不是默认 su 权限,可以试试 adbd-Insecure。
网络协议分析工具
http 代理:autoproxy
proxy
droid抓包:
HttpAnalyzer
Fiddler
tcpdump