android adb

android adb macos install adb brew install --cask android-platform-tools http://blog.sina.com.cn/s/blog_51335a000101j59n.html 启动adb服务, 该服务用来为模拟器或通过 USB 数据线连接的真机服务, 需要以 root 权限启动, 否则 adb devices 会提示 no permissions. adb kill-server adb start-server 列出已连接的android设备 adb devices 安装apk adb install xxx/xxx.apk adb shell 在SDK的Tools文件夹下包含着Android模拟器操作的重要命令ADB,ADB的全称为Android Debug Bridge,就是调试桥的作用,借助这个工具,我们可以管理设备或手机模拟器的状态 ,还可以进行以下的操作: (1) 快速更新设备或手机模拟器中的代码,如应用或Android系统升级; (2) 在设备上运行Shell命令; (3) 管理设备或手机模拟器上的预定端口; (4) 在设备或手机模拟器上复制或粘贴文件。 ADB的工作方式比较特殊采用监听Socket TCP 5554等端口的方式让IDE和Qemu通信,默认情况下ADB会daemon相关的网络端口,所以当我们运行Eclipse时ADB进程就会自动运行,在Eclipse中通过DDMS来调试Android程序;也可以通过手动方式调用,以下为一些常用的操作供参考。 1.版本信息 D:\unsetup\android-sdk-windows-1.0_r1\tools>adb version Android Debug Bridge version 1.0.20 2.安装应用到模拟器 adb install [-l] [-r] <file> 其中file是需要安装的apk文件的决定路径。 3.卸载已经安装的应用 (1) 方法1: adb uninstall [-k] <package>。 其中package表示需要卸载的应用的包的名字,k表示是否保留应用的配置信息和cache数据。 ...

Created 23236-06-23 · Updated 9096-10-09 · 4 min · 702 words · -

Linux 下用 adb 为 Android 手机批量安装软件

linux下用adb为android手机批量安装软件 通常大家安装软件都是从Andorid Market或者从网上下载到手机本地安装,这有两个问题,第一个情况碰到网速慢,那要急死,第二种情况是安装的太慢,如果软件多的话,手指累死,那么,就用adb安装吧,看我的操作情况: 首先把以前安装的软件备份到电脑,比如~/backup/,接着,打开电脑上的终端,取得root权限, cd adb ./adb start-server 打开另一个终端,默认用户权限 $ cd adb $ sh install.sh (-sh里面的内容如这样: ./adb install ~/backup/***.apk……,把你要装的软件都这样编辑,一行一个软件) ok,等着吧,安装完,切换到第一个终端,执行 ./adb kill-server 安全移除手机,看看手机上是不是已经显示你安装的软件了,呵呵 维护记录 时间 修改内容 原因 2026-10-09 修复本地 Hugo 构建的 Raw HTML 警告:代码/配置放入代码块,正文中的尖括号占位符改为行内代码;文件重命名为 adb-batch-install.md;title 改为「Linux 下用 adb 为 Android 手机批量安装软件」;url 改为 adb-batch-install;旧 url 加入 aliases 正文中的 HTML/XML 片段被当作原始 HTML 丢弃;文件名/URL/标题按规范调整

Created 24246-09-24 · Updated 9096-10-09 · 1 min · 51 words · -

APK 编译、反编译, AXMLPrinter2, smali, baksmali

apk 编译,反编译,AXMLPrinter2,smali,baksmali http://blog.csdn.net/android_tutor/article/details/5724435 1.AXMLPrinter2.jar 2.baksmali.jar 3.smali.jar 三、准备工作 为了方便起见,作者把AXMLPrinter2.jar, 还有baksmali.jar,还有smali.jar(下下来为了方便重命名),放在Android SDK tools文件夹中如下图所示: 为了便于大家更容易程序比对,作者写了一个简单的应用(叫APKInstaller)目录结构如下图所示: 四、开始拿来主义 1.用 AXMLPrinter2.jar查看apk中的布局xml文件: 将ApkInstaller应用生成的ApkInstaller.apk(为了方便起见放到tools目录里)用WinRAR等 工具打开,将res/layout/main.xml解压出来(也还是放在tools目录里哦) 打开main.xml文件,内容如下(一堆天文): 这时候AXMLPrinter2.jar派上用场了,打开cmd终端,一直进入到tools目录下,输入如下命令: java -jar AXMLPrinter2.jar main.xml > main.txt. (如下图所示) 打开main.txt代码如下(是不是有个123了呵呵~): <?xml version="1.0" encoding="utf-8"?> <WebView android:id="@7F050000" android:layout_width="-1" android:layout_height="-2" > </WebView> </LinearLayout> 为了比对打开源程序中的main.xml代码如下(大家比对一下吧): <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" <WebView android:id="@+id/apk_web" android:layout_height="wrap_content" android:layout_width="fill_parent" /> </LinearLayout> 2.用baksmali.jar反编译classes.dex: 将ApkInstaller.apk里的classes.dex解压到tools目录里,然后baksmali.jar就派上用场了,在cmd命令行里输入如下命令: java -jar baksmali.jar -o classout/ classes.dex .(如下图所示:) 你将会发现在tools里多一个classout文件夹里面(我代码的包目录结构清晰可见呀),如下图所示: 从上面看出除了Android本身资源的类R开头的,我的源程序里只有一个ApkInstaller.java,完全吻合,真TMD的猥琐呵呵~ 下面我们看一下ApkInstaller.smali内容是什么,如以下代码: .class public Lcom/tutor/apkinstaller/ApkInstaller; .super Landroid/app/Activity; .source "ApkInstaller.java" # instance fields .field private apkWeb:Landroid/webkit/WebView; # direct methods .method public constructor <init>()V .registers 1 .prologue .line 8 invoke-direct {p0}, Landroid/app/Activity;-><init>()V return-void .end method # virtual methods .method public onCreate(Landroid/os/Bundle;)V .registers 5 .parameter "savedInstanceState" .prologue .line 13 invoke-super {p0, p1}, Landroid/app/Activity;->onCreate(Landroid/os/Bundle;)V .line 14 const/high16 v2, 0x7f03 invoke-virtual {p0, v2}, Lcom/tutor/apkinstaller/ApkInstaller;->setContentView(I)V .line 15 const/high16 v2, 0x7f05 invoke-virtual {p0, v2}, Lcom/tutor/apkinstaller/ApkInstaller;->findViewById(I)Landroid/view/View; move-result-object v2 check-cast v2, Landroid/webkit/WebView; iput-object v2, p0, Lcom/tutor/apkinstaller/ApkInstaller;->apkWeb:Landroid/webkit/WebView; .line 16 iget-object v2, p0, Lcom/tutor/apkinstaller/ApkInstaller;->apkWeb:Landroid/webkit/WebView; invoke-virtual {v2}, Landroid/webkit/WebView;->getSettings()Landroid/webkit/WebSettings; move-result-object v1 .line 17 .local v1, webSettings:Landroid/webkit/WebSettings; const/4 v2, 0x1 invoke-virtual {v1, v2}, Landroid/webkit/WebSettings;->setJavaScriptEnabled(Z)V .line 19 const-string v0, "http://frankiewei.net/apk/demos/main/index.html#home" .line 20 .local v0, apkUrl:Ljava/lang/String; iget-object v2, p0, Lcom/tutor/apkinstaller/ApkInstaller;->apkWeb:Landroid/webkit/WebView; invoke-virtual {v2, v0}, Landroid/webkit/WebView;->loadUrl(Ljava/lang/String;)V .line 21 return-void .end method 同样为了比对我们看一下ApkInstaller.java的源代码如下: ...

Created 14146-04-14 · Updated 9096-10-09 · 2 min · 269 words · -

apktool APK 解压、打包

apktool APK解压、打包 keytool -genkey -alias JFrench.keystore -keyalg RSA -validity 1000000 -keystore JFrench.keystore jarsigner -verbose -keystore E:\projects\keystore\JFrench.keystore -s ignedjar JFrench_signed.apk foo.apk JFrench.keystore http://showlike.iteye.com/blog/1686103 http://blog.csdn.net/jesusjzp/article/details/7922451 apktool之APK解压、打包 http://blog.csdn.net/caszhao/article/details/6030425 博客分类: java apktoolandroidjava 简介: Android apktool是一个用来处理APK文件的工具,可以对APK进行反编译生成程序的源代码和图片、XML配置、语言资源等文件,也可以添加新的功能到APK文件中。用该工具来汉化Android软件然后重新打包发布是相当简单的。 安装 .首先安装需要JAVA环境,先下载JDK/JRE,点击下载,已经有JAVA环境的可跳过此步 .到code.google上下载apktool.jar以及相关文件: http://code.google.com/p/android-apktool/downloads/list 点击下载apktool1.4.3.tar.bz2 和 apktool-install-windows-r04-brut1.tar.bz2 .解压apktool-install-windows-r04-brut1.tar.bz2到任意文件夹,然后解压apktool1.4.3.tar.bz2,把apktool.jar拷贝至apktool-install-windows-r04-brut1.tar.bz2解压所在的文件夹下,此时文件下有aapt.exe、apktool.bat及apktool.jar三个应用。 .点击开始菜单,运行,输入CMD回车,用cd命令转到刚刚解压的D:\My Documents\Desktop\apktool-install-windows-r04-brut1所在的文件夹,输入apktool,出现如下命令即说明安装成功 (以下信息,即apktool使用命令) 。 D:\My Documents\Desktop\apktool-install-windows-r04-brut1>apktool Apktool v1.4.3 - a tool for reengineering Android apk files Copyright 2010 Ryszard Wi?niewski <brut.alll@gmail.com> Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0) Usage: `apktool [-q|-quiet OR -v|-verbose] COMMAND [...]` COMMANDs are: d[ecode] [OPTS] <file.apk> [<dir>] Decode <file.apk> to <dir>. OPTS: -s, -no-src Do not decode sources. -r, -no-res Do not decode resources. -d, -debug Decode in debug mode. Check project page for more info. -f, -force Force delete destination directory. -t <tag>, -frame-tag <tag> Try to use framework files tagged by <tag>. -keep-broken-res Use if there was an error and some resources were dropped, e.g.: "Invalid config flags detected. Dropping resources", but you want to decode them anyway, even with errors. You will have to fix them manually before building. b[uild] [OPTS] [] [<out_file>] Build an apk from already decoded application located in . It will automatically detect, whether files was changed and perform needed steps only. If you omit then current directory will be used. If you omit <out_file> then /dist/<name_of_original.apk> will be used. OPTS: -f, -force-all Skip changes detection and build all files. -d, -debug Build in debug mode. Check project page for more info. if|install-framework <framework.apk> [<tag>] Install framework file to your system. For additional info, see: http://code.google.com/p/android-apktool/ 使用 .解压APK D:\My Documents\Desktop\apktool-install-windows-r04-brut1>apktool d F:\document\APK\PushAd.apk F:\document\app ...

Created 24246-09-24 · Updated 9096-10-09 · 2 min · 344 words · -

将 HTML5 封装成 Android 应用 APK 文件的几种方法

将HTML5封装成android应用APK文件的几种方法 http://mobile.51cto.com/android-386448.htm 越来越多的开发者热衷于使用html5+JavaScript开发移动Web App。不过,HTML5 Web APP的出现能否在未来取代移动应用,就目前来说,还是个未知数。一方面,用户在使用习惯上,不喜欢在浏览器上输入复杂的网址;另一方面,Html5 Web App 存放在服务器端,在每次使用时需要进行数据传递,会造成流量浪费。有些开发者不想接触复杂的JAVA代码,那么,有什么办法,既可以使用HTMl5开发应 用,又可以将其简单封装成APK文件呢? 一、Android SDK中的WebView 1.在要Activity中实例化WebView组件: WebView webView = new WebView(this); 2.调用WebView的loadUrl()方法,设置WevView要显示的网页: 互联网用: webView.loadUrl(“http://www.31358.com”); 本地文件用: webView.loadUrl(“file:///android_asset/XX.html”); 本地文件存放在: assets 文件中 3.调用Activity的setContentView( )方法来显示网页视图 4.用WebView点链接看了很多页以后为了让WebView支持回退功能,需要覆盖覆盖Activity类的onKeyDown()方法,如果不做任何处理,点击系统回退剪键,整个浏览器会调用finish()而结束自身,而不是回退到上一页面 5.需要在AndroidManifest.xml文件中添加权限,否则会出现Web page not available错误。 <uses-permission android:name="android.permission.INTERNET" /> 缺点: 如果是载入的是普通网页,没有什么问题,但如果是html5,封装后,在android2.3以上才能正常访问,android2.2及以下,SDK中的WebView还没完全支持HTML5 下面是具体例子: MainActivity.java package com.android.webview.activity; import android.app.Activity; import android.os.Bundle; import android.view.KeyEvent; import android.webkit.WebView; public class MainActivity extends Activity { private WebView webview; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //实例化WebView对象 webview = new WebView(this); //设置WebView属性,能够执行Javascript脚本 webview.getSettings().setJavaScriptEnabled(true); //加载需要显示的网页 webview.loadUrl("http://www.31358.cn/"); //设置Web视图 setContentView(webview); } @Override //设置回退 //覆盖Activity类的onKeyDown(int keyCoder,KeyEvent event)方法 public boolean onKeyDown(int keyCode, KeyEvent event) { if ((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) { webview.goBack(); //goBack()表示返回WebView的上一页面 return true; } return false; } 在AndroidManifest.xml文件中添加权限 ...

Created 30306-12-30 · Updated 9096-10-09 · 1 min · 184 words · -

Android APK 安全评估项目回顾(2014)

2014 年,我在第一家公司接到了一个非常规的项目:对一款 Android APK 做安全评估。说"非常规",是因为那时部门的项目周期动辄两三个月到两三年,而这个只有一周。领导把任务交给我,大概是觉得我平时喜欢折腾各种新东西, 当时业余时间在研究树莓派。 背景 客户是一家制造电梯的公司,他们有一套电梯维保工单系统,安装在配发给维修工程师的 Android 平板上。工程师通过这个 APK 查看维护保养订单、处理故障报修。这个 APK 由另一家第三方公司(vendor-A)开发。 客户委托我所在的公司(vendor-H)对这个 APK 做安全评估,核心问题是:这个 APK 能不能被破解?里面内置的密钥等敏感数据能不能被提取出来? 这本质上是一次白盒逆向测试,只是用了"安全评估"这个更正式的说法。 第一次评估:一周内出报告 拿到 APK 之后,我先去查了 Android APK 逆向的相关资料。 APK 文件本质上是一个 zip 包,解压后可以看到 classes.dex——这是 Android Dalvik 虚拟机的字节码文件,而不是标准 Java 的 .class 文件。逆向的第一步是用 dex2jar 把 classes.dex 转换成普通的 jar 包,再用 jd-gui 等 Java 反编译工具将 jar 里的 .class 文件反编译成可读的 Java 源码。具体流程可以参考我当时整理的 Android APK 反编译。 第一版 APK 虽然有一些保护措施——把部分逻辑封装成单独的 jar 包作为依赖,密钥也不是直接明文写死,而是在运行时动态加载/生成——但通过反编译拿到全部源码之后,这些都可以被分析清楚。我新建了一个 Java 工程,把 APK 里的密钥加载逻辑复制进去单独执行,成功还原出了被保护的密钥。 此外,代码里也存在硬编码的敏感信息。 第一次评估报告在一周内交付给了客户,列出了几个可被利用的安全漏洞。 第二次评估:加壳技术 几个月后,客户再次找到我们,带来了 vendor-A 升级后的新版 APK。 ...

Created 5056-06-05 · Updated 5056-06-05 · 1 min · 148 words · -

Android APK 加壳技术方案

Android APK加壳技术方案 本文章由Jack_Jia编写,转载请注明出处。 文章链接: http://blog.csdn.net/jiazhijun/article/details/8678399 作者: Jack_Jia 邮箱: 309zhijun@163.com 一、什么是加壳? 加壳是在二进制的程序中植入一段代码,在运行的时候优先取得程序的控制权,做一些额外的工作。大多数病毒就是基于此原理。PC EXE文件加壳的过程如下: 二、加壳作用 加壳的程序可以有效阻止对程序的反汇编分析,以达到它不可告人的目的。这种技术也常用来保护软件版权,防止被软件破解。 三、Android Dex文件加壳原理 PC平台现在已存在大量的标准的加壳和解壳工具,但是Android作为新兴平台还未出现APK加壳工具。Android Dex文件大量使用引用给加壳带来了一定的难度,但是从理论上讲,Android APK加壳也是可行的。 在这个过程中,牵扯到三个角色: 加壳程序: 加密源程序为解壳数据、组装解壳程序和解壳数据 解壳程序: 解密解壳数据,并运行时通过DexClassLoader动态加载 源程序: 需要加壳处理的被保护代码 阅读该文章,需要您对DEX文件结构有所了解,您可以通过以下网址了解相关信息: http://blog.csdn.net/jiazhijun/article/details/8664778 根据解壳数据在解壳程序DEX文件中的不同分布,本文将提出两种Android Dex加壳的实现方案。 (一) 解壳数据位于解壳程序文件尾部 该种方式简单实用,合并后的DEX文件结构如下。 加壳程序工作流程: 加密源程序APK文件为解壳数据 把解壳数据写入解壳程序Dex文件末尾,并在文件尾部添加解壳数据的大小。 修改解壳程序DEX头中checksum、signature 和file_size头信息。 修改源程序AndroidMainfest.xml文件并覆盖解壳程序AndroidMainfest.xml文件。 解壳DEX程序工作流程: 读取DEX文件末尾数据获取借壳数据长度。 从DEX文件读取解壳数据,解密解壳数据。以文件形式保存解密数据到a.APK文件 通过DexClassLoader动态加载a.apk。 (二) 解壳数据位于解壳程序文件头 该种方式相对比较复杂, 合并后DEX文件结构如下: 加壳程序工作流程: 加密源程序APK文件为解壳数据 计算解壳数据长度,并添加该长度到解壳DEX文件头末尾,并继续解壳数据到文件头末尾。 (插入数据的位置为0x70处) 修改解壳程序DEX头中checksum、signature、file_size、header_size、string_ids_off、type_ids_off、proto_ids_off、field_ids_off、 method_ids_off、class_defs_off和data_off相关项。 分析map_off 数据,修改相关的数据偏移量。 修改源程序AndroidMainfest.xml文件并覆盖解壳程序AndroidMainfest.xml文件。 解壳DEX程序工作流程: 从0x70处读取解壳数据长度。 从DEX文件读取解壳数据,解密解壳数据。以文件形式保存解密数据到a.APK 通过DexClassLoader动态加载a.APK。 四、加壳及脱壳代码实现 http://blog.csdn.net/jiazhijun/article/details/8809542

Created 20206-03-20 · Updated 5056-06-05 · 1 min · 62 words · -

dex2jar

dex2jar https://code.google.com/p/dex2jar/ http://blog.csdn.net/kesenhoo/article/details/6544094 dex2jar contains following compment dex-reader is designed to read the Dalvik Executable (.dex/.odex) format. It has a light weight API similar with ASM. An example here dex-translator is designed to do the convert job. It reads the dex instruction to dex-ir format, after some optimize, convert to ASM format. dex-ir used by dex-translator, is designed to represent the dex instruction dex-tools tools to work with .class files. here are examples: Modify a apk DeObfuscate a jar d2j-smali [To be published] disassemble dex to smali files and assemble dex from smali files. different implementation to smali/baksmali, same syntax, but we support escape in type desc “Lcom/dex2jar\t\u1234;” dex-writer [To be published] write dex same way as dex-reader.

Created 10106-04-10 · Updated 5056-06-05 · 1 min · 118 words · -

Android APK 反编译

Android APK反编译 http://blog.csdn.net/ithomer/article/details/6727581 这段时间在学Android应用开发,在想既然是用Java开发的应该很好反编译从而得到源代码吧,google了一下,确实很简单,以下是我的实践过程。 在此郑重声明,贴出来的目的不是为了去破解人家的软件,完全是一种学习的态度,不过好像通过这种方式也可以去汉化一些外国软件。 本文Android反编译教程,测试环境: Win7 Ultimate x64 Ubuntu 12.04 x86_x64 反编译工具包 下载 (2012-10-10更新) 一、Apk反编译得到Java源代码 下载上述反编译工具包,打开apk2java目录下的dex2jar-0.0.9.9文件夹,内含apk反编译成java源码工具,以及源码查看工具。 apk反编译工具dex2jar,是将apk中的classes.dex转化成jar文件 源码查看工具jdgui,是一个反编译工具,可以直接查看反编译后的jar包源代码 dex2jar 和 jdgui 最新版本下载,分别见google code: dex2jar (google code) jdgui (google code) ,最新版本请见 官方 具体步骤: 首先将apk文件后缀改为zip并解压,得到其中的classes.dex,它就是java文件编译再通过dx工具打包而成的,将classes.dex复制到dex2jar.bat所在目录dex2jar-0.0.9.9文件夹。 在命令行下定位到dex2jar.bat所在目录,运行 dex2jar.bat classes.dex 生成 classes_dex2jar.jar 然后,进入jdgui文件夹双击jd-gui.exe,打开上面生成的jar包classes_dex2jar.jar,即可看到源代码了,如下图: HelloAndroid源码在反编译前后的对照如下: 二、apk反编译生成程序的源代码和图片、XML配置、语言资源等文件 如果是汉化软件,这将特别有用 首先还是要下载上述反编译工具包,其中最新的apktool,请到google code下载 apktool (google code) 具体步骤: 下载上述反编译工具包,打开apk2java目录下的apktool1.4.1文件夹,内含三个文件: aapt.exe,apktool.bat,apktool.jar 注: 里面的apktool_bk.jar是备份的老版本,最好用最新的apktool.jar 在命令行下定位到apktool.bat文件夹,输入以下命令: apktool.bat d -f abc123.apk abc123,如下图: 上图中,apktool.bat 命令行解释: apktool.bat d -f [apk文件 ] [输出文件夹] 反编译的文件如下 (AndroidManifest.xml为例) : 将反编译完的文件重新打包成apk,很简单,输入apktool.bat b abc123 (你编译出来文件夹) 即可,命令如下: ...

Created 30306-12-30 · Updated 5056-06-05 · 1 min · 93 words · -