抄google工程师的代码:通过读setting的源代码,利用反射机制调用系统隐藏的API
2015-04-01 11:35
771 查看
步骤:
1.根据设置中的界面,搜索关键的字符串信息,通常我们首先跟踪到string.xml或者某个布局文件中。2.找到该字符串相应的id获得点击事件的函数名,再次搜索,1到2次就能跟踪到一个src目录下的一个activity中。
3.在该activity中仔细查找,看这个功能是如何实现的。
4.有时我们会进入一个死胡同,系统的有些api是隐藏的我们可
5.将aidl文件加入到我们的程序中时要首先建立包名,在将相应的aidl文件拷贝到该包中,aidl文件可能还会使用其他aidl文件,
那么按照该做法,把其他aidl文件导入直到aidl文件不报错为止。
例如:获取系统中应用程序的缓存大小,代码大小,和数据大小。
首先:获取应用程序的包名,利用反射得到PackageManager的所有method,筛选出我们需要的api,调用,在传入参数时,需要用到aidl找到aidl文件拷贝到我们的程序中并定义一个接口的实现类:(需要用到的aidl文件有:IPackageStatsObserver.aidl,PackageStats.aidl,IPackageDataObserver.aidl)
<span style="font-size:18px;">public void click(View view){ EditText et = (EditText) findViewById(R.id.et_packname ); String packname = et.getText().toString().trim(); PackageManager pm = getPackageManager(); Method[] methods = PackageManager.class .getMethods(); for(Method method : methods){ //筛选出我们需要使用但被隐藏的 api if("getPackageSizeInfo" .equals(method.getName())){ try { method.invoke(pm, new Object[]{packname,new MyObserver()}); } catch (Exception e) { e.printStackTrace(); } } } }</span>
<span style="font-size:18px;">private class MyObserver extends IPackageStatsObserver.Stub{ @Override public void onGetStatsCompleted(PackageStats pStats, boolean succeeded) throws RemoteException { long cache = pStats.cacheSize ; long code = pStats.codeSize ; long data = pStats.dataSize ; System. out.println("缓存:" +Formatter.formatFileSize (MainActivity.this, cache)); System. out.println("代码:" +Formatter.formatFileSize (MainActivity.this, code)); System. out.println("数据:" +Formatter.formatFileSize (MainActivity.this, data)); } }</span>
相关文章推荐
- 通过库函数API和C代码中嵌入汇编代码剖析系统调用的工作机制
- 通过库函数API和C代码中嵌入汇编代码剖析系统调用的工作机制
- [Android] 利用java反射调用隐藏Api
- Android 反射、代理调用系统隐藏API方法与接口类连接Wi-Fi
- 通过AIDL及反射机制,使用隐藏API挂断电话
- 通过反射机制获得系统字体Size【ActivityManagerNative无法调用问题】
- 通过调用C语言的库函数与在C代码中使用内联汇编两种方式来使用同一个系统调用来分析系统调用的工作机制
- android 应用开发,利用反射机制调用非官方api
- 安卓通过反射机制获取隐藏的API
- android学习日记:利用反射调用隐藏API
- 通过AIDL及反射机制,使用隐藏API挂断电话
- 高版本Android如何利用反射调用系统隐藏的远程服务拦截来电
- 109_利用反射调用隐藏api获取应用程序的缓存大小
- 通过AIDL及反射机制,使用隐藏API挂断电话
- 利用Java反射技术调用Android中被隐藏的API
- 通过AIDL及反射机制,使用隐藏API挂断电话
- 如何用Google APIs和Google的应用系统进行集成(3)----调用Google 发现(Discovery)API的RESTful服务
- 利用反射机制,获取类的字段、方法、并实现简单调用
- 获取系统隐藏API远程调用服务方法-挂断电话
- 利用反射机制,读取dll,并调用其中的方法