APK说明
- 格式:doc
- 大小:52.00 KB
- 文档页数:7
支持所有安卓系统电视盒子,如小米盒子,天猫盒子,华为盒子等;
步骤如下:
1.将盒子接到电视,设置菜单将“允许安装未知来源的应用”启用,防止安装自己想要的
APK失败。
2.将盒子通过安卓手机数据线连接到电脑,安装好ADB驱动。
(安装驱动可通过豌豆荚或
自己手动下载相应盒子驱动安装,安装成功在电脑设备管理器(我的电脑—>属性—>设备管理器)会有如下图类似的设备(android或ADB字样)):
3.
4.打开cmd(开始—>运行—>输入cmd),调出如下对应框:
5.输入adb install –r APK所在的路径.(如APK在D盘根目录,名称为test.apk)输入如图:
6.按回车键,若成功安装,则会有如下提示:
7.若失败,则根据失败提示进行相应处理。
8.将盒子接回电视尽情享用吧~~。
apk +接口密钥规则【实用版】目录1.APK 概述2.接口密钥规则简介3.APK 与接口密钥规则的关系4.应用示例正文1.APK 概述APK(Android Package Kit)是 Android 操作系统使用的一种应用程序包文件格式。
它包含了应用程序的代码、资源文件、配置信息等,用于在 Android 设备上安装和运行应用程序。
APK 文件通常由开发者使用Android SDK 中的工具进行构建和签名,然后通过应用商店或其他途径分发给用户。
2.接口密钥规则简介接口密钥规则是一种用于保护应用程序接口的安全机制。
它通过在客户端和服务器之间共享密钥来验证请求的身份和完整性。
当客户端需要调用服务器上的接口时,需要先获取一个密钥,然后将该密钥与请求数据一起发送给服务器。
服务器收到请求后,使用相同的密钥对请求数据进行加密解密和校验,以确保请求来自合法客户端且数据未被篡改。
3.APK 与接口密钥规则的关系在开发 Android 应用程序时,为了保证应用程序接口的安全性,开发者需要使用接口密钥规则对客户端与服务器之间的通信进行保护。
此时,开发者需要在 APK 文件中嵌入接口密钥,并在客户端代码中实现接口密钥规则的相关逻辑。
这样,当客户端需要调用服务器接口时,就可以使用嵌入的密钥进行加密和校验,确保通信的安全性。
4.应用示例以一个简单的在线购物应用程序为例,该应用程序需要调用服务器上的接口以完成商品查询、下单、支付等操作。
为了保证这些接口的安全性,开发者需要在 APK 文件中嵌入接口密钥,并在客户端代码中实现接口密钥规则的相关逻辑。
当客户端需要调用服务器上的接口时,例如查询商品信息,客户端会使用嵌入的密钥对请求数据进行加密和附加一个签名。
然后将加密后的数据和签名一起发送给服务器。
服务器收到请求后,使用相同的密钥对接收到的数据进行解密和签名验证。
如果解密成功且签名验证通过,说明请求来自合法客户端且数据未被篡改,服务器才会处理请求并返回结果。
GPS安全预警系统安装及使用说明正版数据终身免费升级GPS安全预警系统安装及使用说明一、预警系统安装第一步:连接电脑用USB数据线将导航与电脑连接,连接后,电脑会提示发现新硬件,打开“我的电脑”并且可以看到新增的两个可移动盘,一个是导航内存所在盘符,一个是SD卡(或TF卡)所在盘符。
温馨提示:如果连接电脑没有发现新的可移动盘,请检查一下原因B功能是否设置正确。
可通过系统设置——USB设置——设置成U盘模式。
B.电脑USB接口是否有效。
最好直接连接电脑后置USB接口。
不要通过延长线等设备。
C.检查USB线是否正常,更换一根尝试一下。
第二步:复制文件把随机自带的光盘插入电脑光驱,打开这个文件夹后,看到这两个文件夹。
根据导航屏幕实际分辨率情况选择对应分辨率文件夹打开,并复制DDS文件夹到导航内存所在盘符。
第三步:设置路径复制完成后,断开导航和电脑的连接,在导航界面上通过系统设置——导航路径,把导航路径设置成\NandFlash\DDS\Alarmmenu.exe,设置好点击确定保存。
返回导航主界面,点击导航,则启动预警系统激活界面。
第四步:获取激活码a.打开网站,点击立即注册(如图1-1)。
图1-1b.输入经销商提供的预警仪序列号(注意是预警仪序列号,不是GPS导航仪上的序列号),然后点击下一步(如图1-2)。
图1-2c.页面出现“请输入需要绑定的VP系列GPS导航仪条码”,GPS条码位于导航机器背面SN后面一长串字符,也可通过导航界面点击系统设置——查看序列号,输入条码后点击下一步,您将成功获取激活码(如图1-3)。
图1-3d.点击下一步,继续填写资料完成注册。
注册成功后,您将可以终身免费在网站上升级预警电子眼数据(如图1-4)。
图1-4图1-5第五步:激活预警系统在导航预警系统激活界面输入您刚从网站上获取的激活码,点击激活,将成功开通预警系统(如图1-6)。
图1-6注意:如果激活后点导航提示“open com2 error”错误,可进入预警系统----预警设置中关闭“启动电子预警系统”一栏。
APK文件安装说明在StarAndroid网站下载的APK文件均可按照本文提供的方法进行安装。
请用户在安装APK 文件前先进行以下步骤:一、手机进入设置Settings->应用程序Applications->勾选“未知源Unknown Sources”,以确保手机可以安装不是通过Market(电子市场)下载的软件。
二、手机进入设置Settings->应用程序Applications->开发Development->勾选“USB 调试USB Debugging”,以确保可以在电脑上正常安装手机驱动。
方法一(针对手机可以上网的用户)一、在Market(电子市场)中安装一款资源管理器软件,如“Astro File Manager”。
二、将手机与电脑连接,下拉通知栏,选择“USB已连接”,再选择“装载”。
三、电脑上会弹出可移动磁盘提示,此时手机中的存储卡已被电脑成功识别。
四、将在网站上下载的APK文件拷贝到存储卡中。
五、断开手机与电脑间的连接,运行Astro File Manager。
六、进入sdcard目录,选择相应的APK文件即可进行安装。
方法二(针对手机无法上网的用户)一、下载Android手机驱动二、解压下载文件,可得到四个文件夹,其中Vista_x64适用于Vista和Windows 7的64位系统,Vista_x86适用于 Vista和Windows 7的32位系统,XP_x86适用于XP和2003的32位系统,amd64适用于XP和2003的64位系统。
三、将手机与电脑连接后,电脑会提示硬件更新向导(以XP系统为例),选择“否,暂时”,点击“下一步”。
四、选择“从列表或指定位置安装(高级)”,点击“下一步”。
五、选择“在这些位置上搜索最佳驱动程序”->“在搜索中包括这个位置”,点击“浏览”,在电脑上选择驱动文件所在的文件路径,点击“下一步”。
六、等待系统安装好驱动,点击“完成”关闭向导。
安全侠APK文件检测API接口目录一.概要 (2)二.API合作及调用流程说明 (2)三.文件扫描接口 (2)3.1使用规范 (2)3.2返回数据格式 (3)四.文件MD5散列扫描接口 (3)4.1使用规范 (3)4.2返回数据格式 (4)五.扫描进度查询接口 (5)5.1使用规范 (5)5.2返回数据 (5)六.扫描结果通知接口 (6)6.1使用规范 (6)6.2返回数据 (6)七.请求验证串加密方法 (8)7.1前提条件 (8)7.2加密方法 (8)八.API调用测试演示地址 (8)8.1上传文件扫描: (8)8.2提供文件下载URL扫描: (8)8.3文件MD5散列请求 (9)8.4扫描进度查询接口 (9)一. 概要本接口主要功能是对APK文件进行内部扫描,并发送和反馈扫描结果。
二. API合作及调用流程说明第一步,通过我们的网站(/api.php)在线提交API 使用申请,申请同时请提交您用来接收扫描结果的页面URL。
申请成功会以邮件形式通知您API接口的APP_ID和APP_Key,请保存这两个参数,在后续的API接口调用时需要用到。
第二步,提供文件进行扫描:API合作方通过调用文件扫描接口提供一个APK文件给API接口进行扫描,文件支持直接上传和提供文件下载URL两种方式。
如果您在调用文件扫描接口时提供了完成后返回URL(ReturnURL),API接口在成功接收扫描请求后会直接跳转到您提供的URL页面,并返回给您一个扫描任务ID,如果没有提供完成后返回URL(ReturnURL),API接口会在当前页面直接输出扫描任务ID。
第三步,在APK文件扫描完成后,API接口会自动向第一步您申请合作时提供的结果通知URL发送扫描结果(参见扫描结果通知接口),这个过程中如果您希望实时了解您当前的文件扫描进度,可以通过接口扫描进度查询来实时查询您当前的文件扫描进度,通常在查询到扫描完成时,系统已经将扫描结果发送到您的结果通知URL上了。
android⿊科技系列——Apk的加固(加壳)原理解析和实现⼀、前⾔今天⼜到周末了,憋了好久⼜要出博客了,今天来介绍⼀下Android中的如何对Apk进⾏加固的原理。
现阶段。
我们知道Android中的反编译⼯作越来越让⼈操作熟练,我们⾟苦的开发出⼀个apk,结果被⼈反编译了,那⼼情真⼼不舒服。
虽然我们混淆,做到native层,但是这都是治标不治本。
反编译的技术在更新,那么保护Apk的技术就不能停⽌。
现在⽹上有很多Apk加固的第三⽅平台,最有名的应当属于:爱加密和梆梆加固了。
其实加固有些⼈认为很⾼深的技术,其实不然,说的简单点就是对源Apk进⾏加密,然后在套上⼀层壳即可,当然这⾥还有⼀些细节需要处理,这就是本⽂需要介绍的内容了。
⼆、原理解析下⾯就来看⼀下Android中加壳的原理:我们在加固的过程中需要三个对象:1、需要加密的Apk(源Apk)2、壳程序Apk(负责解密Apk⼯作)3、加密⼯具(将源Apk进⾏加密和壳Dex合并成新的Dex)主要步骤:我们拿到需要加密的Apk和⾃⼰的壳程序Apk,然后⽤加密算法对源Apk进⾏加密在将壳Apk进⾏合并得到新的Dex⽂件,最后替换壳程序中的dex⽂件即可,得到新的Apk,那么这个新的Apk我们也叫作脱壳程序Apk.他已经不是⼀个完整意义上的Apk程序了,他的主要⼯作是:负责解密源Apk.然后加载Apk,让其正常运⾏起来。
在这个过程中我们可能需要了解的⼀个知识是:如何将源Apk和壳Apk进⾏合并成新的Dex这⾥就需要了解Dex⽂件的格式了。
下⾯就来简单介绍⼀下Dex⽂件的格式具体Dex⽂件格式的详细介绍可以查看这个⽂件:/detail/jiangwei0910410003/9102599主要来看⼀下Dex⽂件的头部信息,其实Dex⽂件和Class⽂件的格式分析原理都是⼀样的,他们都是有固定的格式,我们知道现在反编译的⼀些⼯具:1、jd-gui:可以查看jar中的类,其实他就是解析class⽂件,只要了解class⽂件的格式就可以2、dex2jar:将dex⽂件转化成jar,原理也是⼀样的,只要知道Dex⽂件的格式,能够解析出dex⽂件中的类信息就可以了当然我们在分析这个⽂件的时候,最重要的还是头部信息,应该他是⼀个⽂件的开始部分,也是索引部分,内部信息很重要。
目录:前言1◆关于 APK 文件◆ 1◆APK文件的汉化过程概述◆2◆APK文件详细汉化过程◆2一、选用工具2二、开始汉化2第一步,首先使用WinRAR 3第二步,解压APK文件。
4第三步,开始汉化。
5第四步,汉化图片。
7第五步,收尾打包。
9三、文件签名9四、安装测试10◆关于 APK 文件◆APK是Android Package的缩写,即Android安装包。
APK是类似Symbian Sis或Sisx的文件格式。
通过将APK文件直接传到Android模拟器或Android手机中执行即可安装。
apk文件和sis一样最终把android sdk编译的工程打包成一个安装程序文件格式为apk。
APK文件其实是zip格式,但后缀名被修改为apk,在Android系统安装时,APK程序会被存放在系统默认的APP目录中。
现在很多人在使用GPhone 时,特别是G1都喜欢使用APP To SD 技术设置。
这就是把系统默认的APP文件夹移到SD卡上,安装APK程序时,直接把APK安装到手机SD储存卡,而不是手机内存,这样就大大提升了手机的使用空间,同时也就相对的提示了手机运行速度。
◆APK文件的汉化过程概述◆在汉化APK之前,不得不先提一下汉化的大概过程,只有先做一个简单的了解,才能更好的熟悉后面的汉化步骤。
1. 首先,汉化APK之前,必须先用WinRAR之类的压缩解压缩工具,将其进行解压缩。
2. 然后,解压后,我们就可以开始汉化了,一般APK文件只需要汉化解压后得到的扩展名为.ARSC的文件,即可!3. 接着,用ARSC文件汉化工具将其打开,之后就可以在汉化工具里进行汉化了。
汉化后的文件不会对APK程序运行做任何影响。
4. 再接着,再次用“压缩及解压缩”工具打开APK文件,直接把汉化后的ARSC文件添加替换进去。
同时,在进入压缩包里的【META-INF】目录(这是储存签名文件目录),删除里面除了MANIFEST.MF外的其他文件。
APK应⽤程序的解包、修改、编辑、汉化、打包及应⽤第⼆部分:三星闭源系统apk⽂件的处理,汉化和签名在这⼀部分,我们要进⼊实战。
⾸先,利⽤⼀个具体的例⼦来阐述apk⼯具包的使⽤,对apk⽂件进⾏解包、汉化、打包和签名。
然后,我们来对付三星闭源系统的apk程序,达到我们修改、汉化和美化的⽬的。
我们假定所有apk⽂件都是单个独⽴⽂件,不含odex⽂件(在官版ROM中,通常每个apk都分成两部分,第⼀部分是apk,第⼆部分是odex。
将它们合并是另⼀个题⽬,这⾥不作叙述)。
1. 配置框架(Framework)环境在处理APK⽂件时,apktool需要框架⽂件(framework-res.apk)来解码和打包。
apktool已经包含了标准的框架,所以在⼤多数APK⽂件的解包时,不需要另外提供框架⽂件。
但是,某些制造商(例如三星)使⽤了他们⾃⼰的框架⽂件,为了解包,就不得不从⼿机中或从ROM中把框架⽂件(framework-res.apk)提取出来,然后安装到计算机。
安装命令是:apktool if framework-res.apk安装后就会得到:~\apktool\framework\1.apk注意:三星系统(例如:I897)有两个框架⽂件:framework-res.apk和twframework-res.apk。
在使⽤apktool之前,要安装这两个框架⽂件。
安装⽅法同上:apktool if framework-res.apkapktool if twframework-res.apk安装后就会得到:~\apktool\framework\1.apk和~\apktool\framework\2.apk。
许多⼈拿来apktool⼯具包⽤,说解不开包,运⾏出错。
原因是没有配置框架环境。
2. akp⽂件的汉化和修改我⾸先来讲对⼀般的(⾮三星)apk应⽤程序进⾏解包、汉化和打包。
为你们⽅便和叙述⽬的,我在上传的apktool和apk manager⼯具包⾥都带了⼀个⼩的apk应⽤程序SilentBoot_EN.apk。
APK push操作步骤说明
前提条件:
1.手机系统必须烧录工程版本(即能获取root权限的版本)
2.电脑需配置有ADB环境
3.手机必须打开USB调试
4.手机与PC间的以多媒体连接(推荐,其他方式或许无法连接ADB)
注:步骤4有些项目没有设置方式,则不需设置。
Push具体步骤:
1.启动命令提示符(启动方式可以参照A、B两种方式)
A. 若开始菜单栏中有命令提示符选项可以直接启动
B. 在开始菜单栏中选择运行,输入cmd后选择确认
2.输入命令adb devices,提示如图
3.输入命令adb root(MTK项目不需此步骤)
4.输入命令adb remount
5.输入命令adb shell rm /system/app/***.apk (系统若有你需push的apk,则删除)
注:若不知道***.apk具体名称,可
A. 输入adb shell
B. 输入cd /system/app (若是Android4.4系统,在app目录下没有找到要删除的apk时,
可在priv-app目录下寻找,即输入cd /system/priv-app)
C. 输入ls或是输入ls -l,查找所需删除的apk名称
6.输入adb push /../../../***.apk /system/app
注:”/../../..”是apk存储的路径,Android4.4亦可输入adb push /../../../***.apk /system/priv-app。
【Android】【apk反编译基础】大家都应该知道APK文件其实就是一个MIME为ZIP的压缩包,我们修改ZIP后缀名方式可以看到内部的文件结构,例如修改后缀后用RAR打开鳄鱼小顽皮APK能看到的是(Google Play下载的完整版版本):Where's My Water.zip\asset\ <资源目录1:asset和res都是资源目录但有所区别,见下面说明>lib\ <so库存放位置,一般由NDK编译得到,常见于使用游戏引擎或JNI native调用的工程中>|---armeabi\ |---<so库文件分为不同的CPU架构>|---armeabi-v7a\META-INF\ <存放工程一些属性文件,例如Manifest.MF>res\ <资源目录2:asset和res都是资源目录但有所区别,见下面说明>|---drawable\ |---<图片和对应的xml资源>|---layout\ |---<定义布局的xml资源>|---...AndroidManifest.xml <Android工程的基础配置属性文件>classes.dex <Java代码编译得到的Dalvik VM能直接执行的文件,下面有介绍>resources.arsc <对res目录下的资源的一个索引文件,保存了原工程中strings.xml等文件内容>asset和res资源目录的不同在于:1. res目录下的资源文件在编译时会自动生成索引文件(R.java),在Java代码中用R.xxx.yyy来引用;而asset目录下的资源文件不需要生成索引,在Java代码中需要用AssetManager来访问;2. 一般来说,除了音频和视频资源(需要放在raw或asset下),使用Java开发的Android 工程使用到的资源文件都会放在res下;使用C++游戏引擎(或使用Lua binding等)的资源文件均需要放在asset下。
因为Where's My Water是使用迪斯尼公司自家的DMO游戏引擎开发,所以游戏中用到的所有资源文件都存放在asset下,除了应用图标这些资源仍需要放在res下。
Dalvik字节码Dalvik是google专门为Android操作系统设计的一个虚拟机,经过深度的优化。
虽然Android上的程序是使用java来开发的,但是Dalvik和标准的java虚拟机JVM还是两回事。
Dalvik VM是基于寄存器的,而JVM 是基于栈的;Dalvik有专属的文件执行格式dex(dalvik executable),而JVM则执行的是java字节码。
Dalvik VM比JVM速度更快,占用空间更少。
通过Dalvik的字节码我们不能直接看到原来的逻辑代码,这时需要借助如Apktool 或dex2jar+jd-gui工具来帮助查看。
但是,注意的是最终我们修改APK需要操作的文件是.smali文件,而不是导出来的Java文件重新编译(况且这基本上不可能)。
smali文件好了,对Dalvik有一定认识后,下面介绍重点:smali,及其语法。
简单的说,smali就是Dalvik VM内部执行的核心代码。
它有自己的一套语法,下面即将介绍,如果有JNI开发经验的童鞋则能够很快明白。
一、smali的数据类型在smali中,数据类型和Android中的一样,只是对应的符号有变化:B---byteC---charD---doubleF---floatI---intJ---longS---shortV---voidZ---boolean[XXX---arrayLxx x/yyy---object这里解析下最后两项,数组的表示方式是:在基本类型前加上前中括号“[”,例如int 数组和float数组分别表示为:[I、[F;对象的表示则以L作为开头,格式是LpackageName/objectName;(注意必须有个分号跟在最后),例如String对象在smali中为:Ljava/lang/String;,其中java/lang对应ng包,String就是定义在该包中的一个对象。
或许有人问,既然类是用LpackageName/objectName;来表示,那类里面的内部类又如何在smali中引用呢?答案是:LpackageName/objectName$subObjectName;。
也就是在内部类前加“$”符号,关于“$”符号更多的规则将在后面谈到。
二、函数的定义函数的定义一般为:Func-Name (Para-Type1Para-Type2Para-Type3...)Return-Type注意参数与参数之间没有任何分隔符,同样举几个例子就容易明白了:1. foo ()V没错,这就是void foo()。
2. foo (III)Z这个则是boolean foo(int, int, int)。
3. foo (Z[I[ILjava/lang/String;J)Ljava/lang/String;看出来这是String foo (boolean, int[], int[], String, long) 了吗?三、smali文件内容具体介绍下面开始进一步分析smali中的具体例子,取鳄鱼小顽皮中的WMW Activity.smali来分析(怎么获得请参考下一节的APK反编译之二:工具介绍,暂时先介绍smali语法),它的内容大概是这样子的:复制代码看得一头雾水的话那是正常的。
现在我将逐一解析,理解这些符号的含义令你在后面注入代码的时候事半功倍。
1、smali中的继承、接口、包信息首先看看开头的几行:1] .class public Lcom/disney/WMW/WMW Activity;2] .super Lcom/disney/common/BaseActivity;3] .source "WMWActivity.java"5] # interfaces6] .implements Lcom/burstly/lib/ui/IBurstlyAdListener;8] # annotations9] .annotation system Ldalvik/annotation/MemberClasses;10] value = {11] Lcom/disney/WMW/WMW Activity$MessageHandler;,12] Lcom/disney/WMW/WMW Activity$FinishActivityArgs;13] }14] .end annotation1-3行定义的是基本信息:这是一个由WMW Activity.java编译得到的smali文件(第3行),它是com.disney.WMW这个package下的一个类(第1行),继承自mon.BaseActivity(第2行)。
5-6行定义的是接口信息:这个WMW Activity实现了一个com.burstly.lib.ui这个package下(一个广告SDK)的IBurstyAdListener接口。
8-14行定义的则是内部类:它有两个成员内部类——MessageHandler和FinishActivityArgs,内部类将在后面小节中会有提及。
分析完smali文件开头的这些信息,我们已经能在大脑中构造出一个大概这样的Java 文件:复制代码没错,这就是本来WMW Activity.java的大概框架了,成员变量和函数信息?别急,下面正要分析。
在继续分析之前,有些东西需要先说明一下。
前面说过,Dalvik VM与JVM的最大的区别之一就是Dalvik VM是基于寄存器的。
基于寄存器是什么意思呢?也就是说,在smali里的所有操作都必须经过寄存器来进行:本地寄存器用v开头数字结尾的符号来表示,如v0、v1、v2、...参数寄存器则使用p开头数字结尾的符号来表示,如p0、p1、p2、...特别注意的是,p0不一定是函数中的第一个参数,在非static函数中,p0代指“this”,p1表示函数的第一个参数,p2代表函数中的第二个参数…而在static函数中p0才对应第一个参数(因为Java的static方法中没有this方法)。
本地寄存器没有限制,理论上是可以任意使用的,下面是例子:const/4 v0, 0x0iput-boolean v0, p0, Lcom/disney/WMW/WMWActivity;->isRunning:Z在上面的两句中,使用了v0本地寄存器,并把值0x0存到v0中,然后第二句用iput-boolean 这个指令把v0中的值存放到com.disney.WMW.WMWActivity.isRunning这个成员变量中。
即相当于:this.isRunning = false;(上面说过,在非static函数中p0代表的是“this”,在这里就是com.disney.WMW.WMWActivity实例)。
关于这两句话的具体指令和含义暂可不用理会,先把DalvikVM的机制弄明白就可以了,其实语法上和汇编语言非常相似,具体的指令会在后面逐一介绍。
2、smali中的成员变量下面继续介绍有关成员变量的内容:1 ] # static fields2 ] .field private static final PREFS_INSTALLATION_ID:Ljava/lang/String; = "installationId"3 ] //...4 ]6 ] # instance fields7 ] .field private _activityPackageName:Ljava/lang/String;8 ] //...上面定义的static fields和instance fields均为成员变量,格式是:.field public/private [static] [final] varName:<类型>。
然而static fields和instance fields还是有区别的,当然区别很明显,那就是static fields是static的,而instance则不是。
根据这个区别来获取这些不同的成员变量时也有不同的指令。
一般来说,获取的指令有:iget、sget、iget-boolean、sget-boolean、iget-object、sget-object等,操作的指令有:iput、sput、iput-boolean、sput-boolean、iput-object、sput-object等。