Proto table中每一项占12个字节,每一项包括3个元素: shorty_idx(uint):函数原型(函数类型的简写),指向string table的索引 return_type_idx(uint):返回类型,指向type table的索引 parameters_off(uint):指向这个函数的参数列表(如果这个字段为0表示这个函数没有参数) shorty_idx 这个字段的内容是函数原型的简写形式,它遵循ShortyDescriptor语法。其中,第一个字母...

添加权限 <uses-permission android:name="android.permission.INTERNET" /> 1 <uses-permission android:name="android.permission.INTERNET" /> 主要代码 import java.io.ByteArrayInputStream; import java.i...

在IDA动态调试so库这篇文章中讲了基本的动态调试方法,但是这种方法有一个缺点,就是只能在进程运行起来之后才能attach上,也就是说这时进程已经将so库加载进内存并且已经执行完JNI_OnLoad,所以只需要在JNI_OnLoad函数中完成一些反调试措施,就无法使用上篇文章所介绍的方法来动态调试。这篇文章就介绍动态调试的另一种方法:直接在JNI_OnLoad函数上下断点。 另外,上...

最近在逆向apk的时候发现关键的加密算法被放进了so库里,毕竟直接用java写这种代码太容易被破了,放在so里面更安全些。既然这样,那也只好动态调so了,查资料研究了几个小时终于搞定了,现记录如下: 1.基本配置 IDA,adb,android_server,模拟器。这里用的是IDA6.5。 android_server在IDA的目录下面,需要用adb push至模拟器: adb push androi...

1.Dex文件格式 在上篇Dex文件解析文章中大致介绍了Dex文件的格式,回顾点这里:Android 文件解析之Dex文件头 这一节主要介绍string字符串是如何保存在Dex文件中的。 下面这张图很清晰的表示了string字符串在Dex文件中的存储方式: 在Dex的header中string_ids_size和string_ids_off分别表示了字符串的个数和string table的偏移,而string table中又存储着每个string数据的真实偏移...

1.工具准备 动态调试Smali代码需要的工具有:apktool,netbeans,signapk.jar,ddms 2.apktool反编译 apktool d -d xxx.apk -o out 1 apktool d -d xxx.apk -o out 不加-d选项时生成的smali代码是.class结尾的,不能用于动态调试,加上-d选项后生成的smali代码是.java 结尾的,并且...

判断手机是否root只需判断su文件是否在特定的目录下(适用于大部分情况),代码如下: /** * * 判断手机是否ROOT * */ public boolean isRoot() { boolean root = false; try { if ((!new File("/system/bin/su").exists()) && (!new File("/system/xbi...

1.Android apk文件结构 Android的apk文件相当于一个压缩文件,解压apk文件后目录下文件大致如下: 其中,META-INF文件夹一般存放apk的签名文件,res文件夹存放资源文件,AndroidManifest.xml是程序的全局配置文件,classes.dex是Dalvik下的可执行程序,resources.arsc是编译后的二进制资源文件。要想实现对apk文件的加壳脱壳首先得熟悉dex文件的结构,接下来就一步步的分析并...

Android逆向分析常用到的网站,先收藏起来: androidterm:    Android Terminal Emulator    http://code.google.com/p/androidterm/    droidbox:    Android Application Sandbox    https://code.google.com/p/droidbox    TaintDroid:    Realtime Privacy Monitoring on Smartphones    https://github.com/TaintDroid   http://appanalysis.or...

方法一: 在setcontentview前加上两句话: Java //不显示程序的标题栏 requestWindowFeature( Window.FEATURE_NO_TITLE ); //不显示系统的标题栏 getWindow().setFlags( WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLS...

1.使用的工具请看另一篇文章:Android逆向基础之常用工具介绍 2.分析apk的基本步骤 要分析一款apk的主要步骤大概有以下几步: 第一步:使用这款apk,尽可能熟悉apk的各项功能及使用步骤 第二步:使用工具反编译出smali代码和java代码 第三步:查看AndroidManifest.xml,找到程序主activity等关键信息 第四步:从AndroidManifest.xml找到的入口点开始静态分析具体的代码 第五步...

要分析一个apk首先要将apk文件反编译出相应的smali文件或class文件,要用到的主要工具有:apktool,dex2jar,jd-gui等。 1.使用apktool反编译及回编译 apktool可以将apk文件反编译出smali文件,主要命令有: 反编译: apktool d xxx.apk ,反编译目录下的smali文件即是该apk文件的smali代码。 若想加入调试信息(动态调试的时候使用)需要加上-d选项 回编译: apktool b xxx ,修改完smal...

Android设备管理器对于一个普通app而言似乎不太常用,但是对于研究Android安全的人而言,病毒app中最常见到的就是设备管理器。 1.设备管理类:DevicePolicyManager DevicePolicyManager(android.app.admin.DevicePolicyManager)这是设备管理的主类,它可以完成许多系统级的命令,如锁屏,恢复出厂设置,设置密码,清空密码等。官方文档对该类的解释如下:Public interface f...

1.显示Intent和隐式Intent Intent分为显示和隐式两种。对于显示Intent,因为指定了“目的地”,所以无视Intent-filter,直达“目的地”。而隐式Intent没有明确的指定“目的地”,所以要根据Intent携带的数据来确定该Intent要被发往哪里,同时“目的地”也要有一个“门牌”来表示该“目的地”可以接受哪种类型的Intent,这种“门牌”机制即Intent-filter。两种情况大致如下: 2...

1.Bundle类的作用 Bundle类用于在不同Activity之间传递数据,Bundle类内部实际上是用HashMap来存放数据即用键值对来存放相应的数据。 2.Bundle类继承关系及主要方法 Bundle类的继承关系如下: Java java.lang.Object android.os.Bundle 12 java.lang.Object     android...

jdk1.7和jdk1.6在Android应用程序签名过程中有所不同。在官网中有详细说明:http://developer.android.com/tools/publishing/app-signing.html#setup   。下面具体的介绍jdk1.7下Android应用程序的签名过程。   1.签名使用工具 给Andorid程序签名主要使用到3个工具: keytool : 放在jdk安装目录/bin下 jarsigner : 放在jdk安装目录/bin下 zipalign : 放在android sdk目录bu...

+
跳转到评论