Android逆向工程
主要是逆向工程的经验笔记
王先生的副业
屌丝,爱做梦的屌丝。
展开
-
smali语法(II)
基本语法• .field private isFlag:z 定义变量• .method 方法• .parameter 方法参数• .prologue 方法开始• .line 123 此方法位于第123行• invoke-super 调用父函数• const/high16 v0, 0x7fo3 把0x7fo3赋值给v0• invoke-direct 调用函数• ...原创 2018-03-15 21:44:42 · 384 阅读 · 0 评论 -
APK文件夹
Assets 文件夹Assets 文件夹中一般用于存放外挂的一些文件,很多安装包中含有子包的情况,都是讲 apk 文 件存放于这个目录中,在程序运行起来后再进行调用安装,按照 Android 的官方文档介绍,放在这个目录下的文件,不会被赋予 resourceid,访问这些文件时,不能使用 R.class 或者 xml 的资源文件的形式,可以通过 Asset Manager 直接从文件系统访问...转载 2018-03-16 21:54:02 · 930 阅读 · 0 评论 -
魔数(Magic Number)
原文地址:https://baike.baidu.com/item/%E9%AD%94%E6%95%B0/2464954?fr=aladdin定义很多类型的文件,其起始的几个字节的内容是固定的(或是有意填充,或是本就如此)。因此这几个字节的内容也被称为魔数 (magic number),因为根据这几个字节的内容就可以确定文件类型。例子1)FreeBSD 上 ELF 文件的 ...转载 2018-03-16 21:58:11 · 1866 阅读 · 0 评论 -
androguard初体验
使用的APKAPK来自某个apk第三方市场Androguard主要方法获取manifest文件:get_AndroidManifest()判断APK是否有效:is_valid_APK()获取APK文件名:get_filename()获取APP名:get_app_name()获取package名:get_package()获取android版本名:get_androidve...原创 2018-03-19 18:51:11 · 1248 阅读 · 0 评论 -
Android常见文件名称(I)
jar文件性质:JAR(Java Archive,Java 归档文件)是与平台无关的文件格式,它允许将许多文件组合成一个压缩文件。其中包括了很多类文件,在引入jar包之后可以不再重新编写jar包中已经包括的类,可以直接引用。文件结构:1. META-INF\ (注:Jar文件中常可以看到);2. 其他文件夹或者是.class文件apk文件性质:APK是AndroidPackage的缩写,即And原创 2017-11-25 20:00:06 · 418 阅读 · 0 评论 -
Dalvik虚拟机是如何执行程序的
Android层次介绍Android系统架构采用分层思想,这样可以减少层与层之间的依赖性 Android系统由以下几个部分组成:应用程序(APPLICATIONS)应用程序框架(APPLICATIONS FRAMEWORK)Android运行时(ANDROID RUNTIME) 核心库 DVM(Dalvik Virtual Machine)函数库(LIBRARIES)Li原创 2017-11-26 12:07:24 · 1326 阅读 · 0 评论 -
Android程序生成步骤
步骤流程图 整个APK的打包过程分为以下7个步骤:第一步:工作打包资源文件,生成R.java文件工具aapt位置:工具位置: android-sdk\platform-tools 源码位置: frameworks\base\tools\aapt步骤:调用aapt源码目录下的Resource.cpp文件中的buildResources()函数函数buildResources()函数首先检查原创 2017-11-26 16:16:59 · 344 阅读 · 0 评论 -
Dalvik汇编指令集(I)
指令格式每16位的字采用空格分隔开每个字母表示四位,每个字母按照顺序从高字节开始,排列到低字节,每四位之间可能使用竖线“|”来表示不同的内容顺序采用A~Z的单个大写字母作为一个4位的操作码,op表示一个8位的操作码“∅\varnothing”来表示这字段所有位为0值实例A|G|op BBBB F|E|D|C 位数 内容 含义 16位 A|G|op 高8位由A和G组成,原创 2017-11-29 11:59:24 · 514 阅读 · 0 评论 -
Dex文件格式
dex文件的整体结构逻辑结构文件结构struct DexFile{ DexHeader Header; DexStringId StringId[stringIdsSize]; DexTypeId TypeIds[typeIdsSize]; DexProtoId ProtoIds[protoIdsSize]; DexFieldId FieldIds[field原创 2017-11-29 16:43:48 · 329 阅读 · 0 评论 -
smali语法(I)
类信息描述smali文件的前三行描述的是当前的类信息。格式:.class<访问权限>[修饰关键字]<类名>.super<父类名>.source<源文件名>示例代码:.class public Lcom/qq/unclegy/MainActivity.super Landroid/app/Activity.source "MainActivity.java"注:如果经过代码混淆,则反编译出来的原创 2017-12-01 10:54:27 · 434 阅读 · 0 评论 -
使用ApkTool分析apk文件(windows)
使用androidstudio生成一个APK文件 方法是: build→\rightarrowgenerate signed apk 生成一个APK文件,在mainifest.xml文件中添加一些权限, <uses-permission android:name="android.permission.SEND_SMS"/> <uses-permission android:name=原创 2017-12-03 21:06:14 · 950 阅读 · 0 评论 -
定位关键代码(施工中)
信息反馈法(静)运行目标程序,根据程序运行时给出的反馈信息作为突破口寻找关键代码。比如字符串特征函数法(静)反馈信息最后都是使用Android SDK中的相关API函数来实现的。在反汇编代码中可以通过搜索API函数名称来定位关键代码。顺序查看法(静)从软件启动代码开始,逐行向下分析。代码注入法(动)手动改写apk文件的反汇编代码加入log输出,配合logcat查看执行到特定点时的状态数据栈跟踪法(动原创 2017-12-04 08:49:48 · 319 阅读 · 0 评论 -
信息反馈法
具体做法运行目标程序,根据程序运行时给出的反馈信息作为突破口寻找关键代码。比如字符串,在程序中字符串有两种保存方式:1是string.xml,2是写到代码中字符串信息编写一个APK文件主要文件:MainActivity.xmlpackage com.example.administrator.myapplication;import android.support.v7.app.AppCompatA原创 2017-12-04 20:27:24 · 460 阅读 · 0 评论 -
Android程序的安装
系统程序安装特点:开机时安装,没有安装界面 具体方式:由开机时启动PackageManagerService服务完成,这个服务会在启动时扫描系统目录/system/app并且重新安装所有程序。通过Android市场安装特点:直接通过Android市场进行网络安装,没有安装界面 具体方式:直接通过Android市场下载APK文件进行安装,如果手机没有集成Google Play而是从其他的应用商店来原创 2017-12-05 08:52:27 · 242 阅读 · 0 评论 -
ARM处理器寻址
ARM处理器的运行模式用户模式可以使用的不分组寄存器R0~R7,分组寄存器R8~R14.程序计数器R15(PC),工作状态ARM状态和Thumb状态,处理器可以在这两种状态之间随意切换。 当处理器处于ARM状态的时候,执行32位字对齐的ARM指令 当处理器处于Thumb状态的时候,会执行16位对齐的Thumb指令 ARM状态和Thumb状态的寄存器命名差异 Thumb状态下R0~R7和ARM原创 2017-12-05 15:13:58 · 343 阅读 · 0 评论 -
Java使用JNI调用C/C++方法
需要的文件:一个java文件:SayHello.java内容:public class SayHello{ public native void sayHello(); static { System.loadLibrary("hellodll"); } public static void main(String[]args){ ne原创 2017-12-05 20:48:42 · 329 阅读 · 0 评论 -
逆向分析方法(施工中)
静态分析特点在不执行代码文件的情况下,对代码进行静态分析的一种方法。方式不执行代码,观察代码文件的外部特征,获得文件的类型,大小,PE头信息,Import/Export API,内部字符串,是否运行时解压缩,注册信息,调试信息,数值证书等多种信息。使用反编译工具查看内部代码,分析代码结构也属于静态分析的范畴。动态分析特点在程序文件的执行过程中对代码进行动态分析的一种方式方式通过调试来获得代码流,获得原创 2017-12-06 19:13:17 · 301 阅读 · 0 评论 -
正则表达式(I)
特殊符号和特殊字符 表示法 描述 实例 literal 匹配文本字符串的字面值literal foo re1 | re2 匹配正则表达式re1或者re2 foo\bar ⋅\cdot 匹配任何字符(除了\n之外) b⋅\cdotb ∧\wedge 匹配字符串的起始位置 ∧\wedgeDear $\$ 匹配字符串终止的部分 /bin原创 2017-12-08 10:53:03 · 801 阅读 · 0 评论 -
移动互联网恶意代码属性
移动互联网恶意代码属性当一个可运行于移动终端上的程序具有以下一种或多种属性时,可判定为移动互联网恶意代码。 本规范所述在用户不知情或未授权的情况,指用户未完全理解其功能,或未对其全部行为进行授权,包括但不限于以下情况:用户点击“是”、“同意”、“确认”、“允许”、“安装”等按钮,但并未对其隐藏的行为 明确知情或授权的;通过捆绑、诱骗等手段致使用户点击“是”、“同意”、“确认”、“允...转载 2018-03-15 08:54:47 · 920 阅读 · 0 评论 -
移动互联网恶意代码命名规范
移动互联网恶意代码命名格式移动互联网恶意代码采用分段式格式命名,前四段为必选项,使用英文(不区分大小写)或数字标识;第五段起为扩展字段,扩展字段为可选项,内容使用中括号“[]”标识,主要用于标识其它重要信息或中文通用名称,扩展字段可增加多个。 受影响操作系统编码.恶意代码属性主分类编码.恶意代码名称.变种名称.[扩展字段] 如:s.remote.dumusicplay.b.[毒媒]...转载 2018-03-15 08:59:12 · 1108 阅读 · 0 评论 -
Android权限相关
Android所有权限 编 号 权限 说明 001 ACCESS_CHECKIN_PROPERTIES 允许读写访问”properties”表在checkin数据库中,改值可以修改上传 002 ACCESS_COARSE_LOCATION 允许一个程序访问CellID或 WiFi热点来获取粗略的位置 003 ACCESS_FINE...转载 2018-03-15 15:39:10 · 379 阅读 · 0 评论