Android开发我用到的Chrome插件

Chrome调试WebView

前提一定要开启手机USB调试模式如果千万不要丢了U

在电脑上打开Chrome浏览器的菜单– 更多工具 – 检查设备(Chromemenu > More tools > Inspect Devices),或者直接在浏览器地址栏输入chrome://inspect 或者about:inspect

然后自己瞎鼓捣就行了。

Chrome(电脑端)操作Android真机(解放双手)

  1. Chrome有个叫做 Vysor 的插件,可以直接在Chrome应用市场搜索。
    可惜的是这个的免费版,画面太不清晰。

  2. 其实还有一个不是Chrome插件的东西,是Google开发的亲儿子,(简称ASM)是一款监视手机或者模拟器屏幕的工具,主要和上面相比分辨率高 android-screen-monitor 这个托管在GoogleCode上面,要科学上网! 这个和上面的相比仅仅有监视的功能不能操作。

配置方式:解压后将 asm.jar拷贝到本机 android-sdk\platform-tools目录下。然后命令行运行 java -jar asm.jar 如果不copy到 platform-tools目录下,可能要配置Android sdk的环境变量。切记。

Facebook出了一个叫做Stetho东西

作用: 他能在Chrome控制台中查看app的网络请求,数据抓包,和app的数据库文件等等。但是要在app中引入库,具体的操作看官网吧。

Android逆向工程用到的工具

第一套组合(入门级组合)

Apktool + dex2jar + jd-gui

可惜的是apktool好像后来不再支持调试Smali文件,jd-gui 作者从 2015 年开始就停止了维护.

但是AndroidStudio有个调试Smali的插件 地址 https://github.com/JesusFreke/smali/wiki/smalidea
据说jadx 不错(推荐使用),可以取代 jd-gui 地址 https://github.com/skylot/jadx

Google 出的几个逆向分析工具

  1. enjarify

https://github.com/google/enjarify
功能:可直接将 apk 文件还原成为 jar 文件,也可以和 dex2jar 一样,直接操作某个dex

这是 Google 出品的一个逆向分析工具,从反编译成 jar 包的流程来说,要比 dex2jar 方便得多。下载完工具到本地并配置好 Python 环境后,需要修改 enjarify 目录下的 enjarify.bat 文件,将 python3 改为 python

  1. ClassyShark

https://github.com/google/android-classyshark

功能:可直接浏览 Apk,支持对.dex, .aar, .so,.apk, .jar, .class等文件的操作。

同是Google出品,但是只能看到方法声明,没法看到方法的定义。

java -jar ClassyShark.jar -open XXX.apk

  1. AndroidStudio2.2 (APK Analyzer)

在Android Studio2.2 中添加了个新的功能Build -->analyze apk ...
然后选择你要分析的 APK 文件就可以了。但是只能看到方法声明,没法看到方法的定义。

me

procyon 和 cfr 和 Jad ,这些主要专注于jar的反编译

  1. orocyon 和 cfr 和 Jad

当然这几个不是Google的产物,这几个是jar.class 反编译工具。为啥要用这些,因为jd-gui,反编译java7会有问题。有些语法有点让人难以读懂。但是他有图形化界面剩下的这几个都没有。

procyon 反编译jar包命令:(我用的是这个,比jd-gui好很多真的)

$ java -jar procyon-decompiler-0.5.30.jar -jar myJar.jar -o out

cfr 反编译jar包命令:

java -jar cfr_0_79.jar example.jar -–outputdir out

2.bytecode-viewer 这是个套装

再来一个基于Procyon的项目 bytecode-viewer
A Java 8 Jar & Android APK Reverse Engineering Suite (Decompiler, Editor, Debugger & More) https://bytecodeviewer.com. 不知道如何没用过。

  1. Jadx

强烈推荐这个玩意,反编译后的代码可读性好,自带图形化界面。

这个是一款GUI界面的反编译工具,是一款点击鼠标就可以使用的跨平台工具。

项目在这里

##JEB for Android

非常不错,但是不开源,不免费官网

me

http://bbs.pediy.com/showthread.php?p=1397272&mode=threaded

Python使用虚拟环境

Python的虚拟环境可以使一个Python程序拥有独立的库library和解释器interpreter,而不用与其他Python程序共享统一个library和interpreter。虚拟环境的好处是避免了不同Python程序间的互相影响(共同使用global library 和 interpreter),例如程序A需要某个库的1.0版本,而程序B需要同样这个库的2.0版本,如果程序B执行则A就不能执行了。

  1. 安装virtualenv:
    pip install virtualenv
  2. 创建虚拟环境

    virtualenv venv
    venv是新创建的虚拟环境的名称。 同时会创建一个与虚拟环境名称相同的文件夹venv, 里面存储了一个独立的Python执行环境。

  3. 进入虚拟环境

    source venv/bin/activate
    进入虚拟环境后,命令行的提示符会加入虚拟环境的名称,例如:(venv)user@machine:~$

  4. 退出虚拟环境
    deactivate
  5. 删除虚拟环境
    rm -r venv
    直接删除虚拟环境所在的文件夹venv就删除了我们创建的venv虚拟环境。

Android 开发中的小技巧

ListView小技巧

  • 可以设置空白站位View listView.setEmptyView(view);非常有用
  • 缓慢滚动到某个位置listView.smoothScrollToPosition();当然还有其他的滚动方法
  • 在使用adapter.notifyDataSetChanged()方法的时候,必须保证传进adapter的数据List是同一个对象,否则无法实现效果(我就犯过这个错)

Read More