- 浏览: 229990 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
sfshine:
非常好非常好
Android 窗口管理 -
mthhk:
...
android3.0之Fragment(碎片)基础 -
FrankHB1989:
“C/C++标准不会保证这样的代码一定不会出错”的依据?你要说 ...
Duff's Device -
2006003845:
请问知道 刚体之间怎么不碰撞嘛 ?相互穿插
JBOX2D分析
在上一篇中,我解释了为什么我们不通过反射就会很难使用internal和hidden API。这是因为android.jar中就没包含这些API,因此,没人能够在编译时引用这些类。
这篇文章将描述如何还原最初的android.jar。这将允许我们像使用公开的API那样使用internal和hidden API。
如何得到原版android.jar?
我们需要修改android.jar,这样它才能包含所有的*.class文件(包括internal和hidden API类)。有两种办法:
1) Android是一个开源工程。我们可以下载源码并搭建编译环境,这样它就不能移除那些internal和hidden的类了。这个办法比较困难;
2) 每个模拟器或真机在运行时都会有一个等同android.jar的东西。我们可以从这里拿到jar文件,提取出原始的.class文件,并拷贝到Android SDK的android.jar中。
我将采用方案2。它易于开始,还不需要搭建Linux环境及编译环境等。
从设备上获取framework.jar
你可以使用命令行(adb pull)从模拟器或设备上下载文件,或者使用DDMS(借助Eclipse或SDK中的应用)。
注意:模拟器通常在.dex文件中包含代码,而真机一般在优化版的dex文件中包含代码——odex文件。操作odex文件比较困难,这也是为什么我选择模拟器的原因。
与Android SDK中的android.jar等同的文件是framework.jar。这个文件位于设备的:/system/framework/framework.jar
adb pull /system/framework/framework.jar
当framework.jar从设备上下下来之后,重命名为framework.zip并解压到独立的文件夹中,看起来是这个样子的:
classes.dex正是我们需要的。
创建framework-classes.zip
首先,我们需要把.dex文件转换成.jar格式。你可以使用通用的工具dex2jar。只需要运行:
dev2jar classes.dex
当转换结束时,你应该得到了classes.dex.dex2jar.jar文件。重命名为framework-classes.zip。使用zip查看器,进入到framework-classes.zip/com/android/internal/:
恭喜你,你已经拥有了所有的.class文件,包括internal和hidden API(尽管截图只确认了internal部分)。
创建original-android.jar
Android SDK的android.jar位于ANDROID_SDK/platforms/android-X/android.jar(X表示API等级)。
拷贝android.jar成custom-android.jar。解压至custom-android文件夹。将framework-classes.zip中所有的.class文件拷贝到custom-android文件夹中(你需要覆盖所有已经存在的.class文件)。
然后,压缩custom-android文件成original-android.zip。重命名为original-android.jar。
步骤总结
1. 选择你的目标平台X
2. 创建目标平台X的模拟器
3. 启动模拟器,下载/system/framework/framework.jar
4. 重命名framework.jar -> framework.zip
5. 从framework.zip中抽取classes.dex
6. 使用dex2jar工具,将其转换成classes.jar
7. 重命名classes.jar -> framework-classes.zip
8. 拷贝android.jar –> custom-android.zip
9. 解压custom-android.zip至custom-android文件夹
10. 将framework-classes.zip中所有文件拷贝至custom-android文件夹(覆盖存在的文件)
11. 压缩custom-android文件夹成original-android.zip
12. 重命名original-android.zip -> original-android.jar
打完收功。
总结
我们还原了android.jar,使其包含所有的internal和hidden API的.class文件。这只是第一步。下一步将创建定制的android平台,使其使用未删节版的android.jar,并将其添加到Android SDK platforms文件夹中。
发表评论
-
Java中循环嵌套跳出的高效写法
2014-04-24 19:31 3140(下面写的这些并不是Jdk的新特性,也不是Java某个版本提供 ... -
Android各版本新增功能一览(转)
2013-12-05 20:43 1685Android3.0新增功能:主要增加全息主题 ... -
NotificationManager和Notification的使用总结(转)
2013-11-26 12:51 610这几天一直在修改twig ... -
Android应用程序资源的编译和打包过程分析 (转自老罗的博客)
2013-11-13 10:57 15516我们知道,在一个APK文件中,除了有代码文件之外,还 ... -
Proguard 源码分析 (七) 混淆
2013-11-10 21:19 1789本章我们讲Proguard非常重要的一个步骤:混淆Obfu ... -
Proguard源码分析(六)前文总结
2013-11-05 14:40 1061目前,我们读了Proguard的 ... -
Proguard源码分析(五) ConfigurationParser.keep参数
2013-10-31 14:43 3914本章节我们绕回来讲Keep参数,也就是Configurat ... -
Proguard源码分析(四) 压缩
2013-10-30 10:59 1106上一次我们讲了seed文件,这次我们说压缩,对应的输出文件是 ... -
Proguard源码分析(三)Seed文件
2013-10-29 12:45 1516Seed文件就是保持住的类文件,直白一点就是不被混淆的文件, ... -
Proguard源码分析(二)输出文件
2013-10-28 10:28 897ProGuard outputs thefollowing ... -
Android 2.2.2到Android 4.2.2源码下载地址(转)
2013-10-28 10:13 986Android 2.2.2到Android 4.2.2源码下 ... -
代码混淆器Proguard源码分析(一) 读取
2013-10-22 19:40 2290Proguard是Android中经常用的混淆工具,当然你也 ... -
Android内存之VSS/RSS/PSS/USS
2013-09-25 14:07 679Terms VSS - Vi ... -
chrome开源工程(转)
2013-09-13 10:42 1307在chrome地址栏输入about:credits就可以看 ... -
dex文件结构(转)
2013-09-03 14:10 1006Dex文件和Dalvik虚拟机 在Android系统中 ... -
android clipPath切割画布
2013-08-29 12:00 6221(转自:http://wallage.blog.163.co ... -
Android WebView控件
2013-06-06 11:46 2241android.webkit库聚合了webkit内核的浏览器 ... -
dumpsys命令~(非常有用~)
2013-04-03 12:02 0dumpsys是系统中重要的函数,我们来看看它如何使用,都能 ... -
内存监控命令~
2013-04-03 00:30 0meminfo 命令:cat /proc/meminfo ... -
adb常用命令
2013-04-03 00:17 1084Android 调试桥(adb)是多种用途的工具,该工具可以 ...
相关推荐
### JS调用C#方法及C#调用JS方法详解 在Web开发中,前后端交互是必不可少的一个环节。本文将详细介绍如何实现前端JavaScript(JS)与后端C#之间的相互调用,这对于构建功能丰富的Web应用至关重要。下面将按照问题的...
3. **签名和权限**:调用隐藏API可能需要额外的签名权限或者特殊的系统权限,这可能使得应用在Google Play或其他市场上的分发变得困难。 4. **版本更新**:随着Android系统的更新,隐藏API可能会被修改甚至移除,...
在Android系统中,调用隐藏服务来实现锁屏和设置默认锁屏密码涉及到对Android框架层及安全机制的深入理解。下面将详细讲解这个过程涉及的知识点。 首先,Android系统是一个基于Linux内核的开源移动操作系统,它允许...
这些方法通常定义在ASPX页的代码隐藏类中。调用方式与Web Service相似,但无需通过`Services`属性注册,而是直接在JavaScript中通过`PageMethods`对象调用,例如`PageMethods.SayHelloFromPage(name, OnSuccess, On...
在这个例子中,`Cache`类包含了两类方法:一类是缓存操作方法,如`get()`、`put()`和`delete()`,这些方法是面向调用者的,用于处理数据的存取;另一类是配置更新方法`reBuild()`,这是专为远程配置中心设计的,用于...
在这个特定的压缩包文件中,标题提及的是“易语言隐藏调用系统API源码”,这涉及到易语言中如何在程序中不显式地调用操作系统提供的函数,即API(应用程序接口)。 API调用是编程中的常见操作,通过API,程序可以与...
本文将详细讨论如何使用易语言调用API来隐藏指定窗口。 易语言是一款基于中文编程的开发工具,它为程序员提供了一种直观的、以中文词汇为基础的编程语法。在易语言中,调用API函数是通过“系统支持”库实现的,该库...
利用java的反射原理来调用 Android隐藏api 应用开发必备哦 详细描述: http://blog.csdn.net/y_haiyang/article/details/9924925 ====================关注小鱼=================== 新浪微博:...
本主题主要探讨如何将多个类封装到一个DLL中,并介绍两种调用DLL函数的方式:隐式链接和显式链接。 1. **DLL的封装** 当我们需要在DLL中封装多个类时,首先需要创建这些类的接口,通常是纯虚基类。然后,每个具体...
通过反射机制调用系统隐藏的API清除手机所有的app缓存.关键方法freeStorageAndNotify。前提添加AIDL文件.zip,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
在易语言中,隐藏调用系统API是一项高级技术,它涉及到程序的底层交互和安全性。通过隐藏调用,开发者可以避免程序被恶意分析或篡改,保护程序的内部逻辑。 在标题和描述中提到的几个关键术语有: 1. **隐藏调用...
android 系统隐藏类 直接调用包 ServiceManager和StatusBarManager,主要用来屏蔽通知栏下拉。
这些方法在派生类`Derived`中可能被重写或隐藏。 - **非虚方法与虚方法的区别**:`Base`类中的`NoneVirtualFun1`是非虚方法。这意味着即使在派生类中,它也不能被重写。这也回答了最初的问题之一——父类中的非虚...
如果你能反编译这个APK并查看其资源和类,可能会发现更多关于如何调用隐藏网络信息设置的线索。 总之,调用Android系统中的隐藏网络信息设置菜单涉及了权限管理、反射机制、Intent的使用以及源码分析等多个知识点,...
8. **应用场景**:API调用隐藏窗口的技巧广泛应用于自动化工具、系统监控、软件开发等领域。例如,自动化测试可能需要在后台运行程序,避免界面干扰;系统维护工具可能会隐藏某些窗口以优化用户体验。 通过学习和...
需要注意的是,由于这些方法涉及底层的Windows API调用,它们可能会受到浏览器版本、安全设置以及操作系统更新的影响。此外,随着Edge浏览器逐渐取代IE,这种技术在未来的适用性可能会有所下降。对于更现代的浏览器...
本文将详细介绍两种在WinForm中调用EXE并控制其在窗口内外显示的方法。 1. **使用Process类** .NET Framework提供了`System.Diagnostics.Process`类,用于启动、管理和控制进程。这是最常用的方法来调用外部EXE...
所谓隐藏是指使用常规的调用方法,派生类对象访问这个函数时,会优先访问派生类中的这个函数,基类中的这个函数对派生类对象来说是隐藏起来的。 但是隐藏并不意味这不存在或完全不可访问。通过 b->Base::func()访问...
Feign 使得 Java 程序员可以像调用本地方法一样调用远程服务,隐藏了底层的网络通信细节。 Spring Cloud Feign Spring Cloud Feign 是 Spring Cloud 中的一个子项目,提供了对 Feign 的支持。它使得开发者可以使用...
通过学习和实践这样的例子,开发者不仅可以掌握易语言的API调用方法,还能加深对Windows窗口管理机制的理解,这对于进行系统级编程和自动化任务处理是非常有用的。同时,这种技术也可以应用到其他领域,如系统监控、...