安卓逆向入门(1)

1.Android APK文件

这里写图片描述

这里写图片描述
META-INF目录,签名文件,包括公司信息,文件的HASH值,可以用来辨别app的真伪;
res目录,资源信息,包括图片,xml文件(包括布局文件,字符串,风格样式等)
AndroidMainfest.xml清单文件,包括APK包名,四大组件的一些声明定义,权限,程序入口等
Classes.dex安卓可执行文件,包括java的类信息,方法信息,字段信息,虚拟机指令等
dex文件的生成大概流程:java源文件->class文件->dex文件
resources.arsc资源序号文件,包括资源里的所有ID,名称,资源id对应文件是R.class

见下图:
(一定要编译完之后才能看见如下的图:)
这里写图片描述

查看apk的两种途径:
1.在output里面的apk下面的Debug文件里面
2.build->build apk
这里写图片描述
这里写图片描述

从上图可以看出,Lib目录,扩展名是.so,包括C++代码,有各种平台,比如x86,arm
在arm体系中,每一条指令不是2字节就是4字节

如何创建Assets文件(自定义资源)

这里写图片描述
注意:这里自定义资源的名称只能起为assets,(因为对于安卓的系统API它只识别以assets为名字的自定义资源)
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
android 项目里面.gradle,idea,build,gradle这几个文件夹可以删掉.

Android APK的入口函数是什么

默认情况下是MainActivity中的oncreate()函数;
但是清单文件中application节点可以添加android:name属性,指定继承自application的类,用于初始化整个app的全局信息,继承自application的类有两个重写函数会执行,这两个函数就是程序最早执行的函数.
1.attachBaseContext
2.OnCreate
所以一般一个app最早执行的函数是application的类中的attachBaseContext函数,一般apk加固之后,都会自定义application类,并且重写其中的attachBaseContext函数或onCreate函数,并且声明为native类型的函数,

进行栈回溯时候遇到的几个问题:

1.模拟器启动问题:
这里写图片描述
如果在这个窗口没有看见模拟器的图标,说明模拟器没有启动,需要启动模拟器
这里写图片描述
这里写图片描述
如果启动之后还没有效果,那么则需要把模拟器删掉重新创建,此时不需要重新下载了,
这里写图片描述
这里写图片描述
2.怎么进行栈回溯
这里写图片描述
这里写图片描述

清单文件

    <application
        android:name=".Myapp"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
Myapp类:
package com.example.bluelesson.myhelloworld;


import android.app.Activity;
import android.app.Application;
import android.content.Context;
import android.os.Bundle;
import android.support.annotation.Nullable;

public class Myapp extends Application {
    public Myapp() {
    }

    @Override
    protected void attachBaseContext(Context newBase) {
        super.attachBaseContext(newBase);
    }

    @Override
    public void onCreate() {
        super.onCreate();
    }
}
MainActivity类:(默认的)
package com.example.bluelesson.myhelloworld;


import android.app.Activity;
import android.app.Application;
import android.content.Context;
import android.os.Bundle;
import android.support.annotation.Nullable;

public class Myapp extends Application {
    public Myapp() {
    }

    @Override
    protected void attachBaseContext(Context newBase) {
        super.attachBaseContext(newBase);
    }

    @Override
    public void onCreate() {
        super.onCreate();
    }
}
网传资源,如有侵权请联系/留言,资源过大,上传乃是下载链接,失效请留言,下面上大纲: 01.Android环境配置与常用工具介绍 02.Android smali 与 java 代码介绍1 : d% y( z) X- o& ~, e0 _; c1 I 03.Android smali 与 java 代码介绍2 c+ K& I/ q( b 04.Android smali 与 java 代码介绍3 % ]7 Z+ f! I! [5 S. O. N 05.Android smali 与 java 代码介绍4 7 A9 G6 c k; B 06.Android smali 与 java 代码介绍5 ; [. D3 O0 ~9 _0 ]3 W 07.常用Android快速定位关键点方法介绍 " v+ h0 Z5 x& }1 o4 c/ L 08.从0开始打造自己的破解代码库 09.Android 结构基础讲解 10.快速Hook代码搭建之 Cydia Substrate 11.快速Hook代码搭建之 Xposed 12.安装部署Android源码编译环境 13.Android源码目录结构与修改引导 / |3 T: f, f8 [2 @+ p 14.Android源码修改与刷机介绍 & D- q# v- o) o) ?/ u( A 15.Android Jni 编程 & Y6 ^/ J* G3 ] 16.arm 汇编代码讲解1 . J) E# f# h! Q4 x2 P+ K 17.arm 汇编代码讲解2 18.arm 汇编代码讲解3 19.arm 汇编代码讲解4 20.arm 汇编代码讲解5 ' B! y1 m7 _% U8 r2 G! R% h& L! a4 J0 B 21.class.dex文件格式讲解 22.Android 动态代码自修改原理 23.Android 动态代码自修改实现1 . F; Z5 @* D* r 24.Android 动态代码自修改实现2 25.Android dvm 脱壳1 26.elf结构详解1, d9 H, S" s2 }8 j' B6 v 27.elf结构详解2 8 A9 q+ O" `- v 28.elf文件变形与保护 1 g, b1 q, P( P& W, k3 F7 U 29.elf文件修复分析 9 K p" k/ `- s, w/ r: R( X 30.so加壳文件修复 31.常用调试检测方法与过检测方法 * G( L. J' P1 \+ }: N; r 32.Android源码定制添加反反调试机制 ' v/ q6 K1 {6 ] 33.Android dvm 脱壳2 34.Android dvm 脱壳3 H2 X- A# M4 s+ A6 K- b 35.Dalvik dex处理分析 ) x+ l1 l1 J R2 N) T" R) ^2 o 36.IDA脱壳脚本编写1) O7 `% E" Q. @1 X! o ~ 37.Odex修复方法 38.IDAOdex修复脚本编写 " X' w1 h: w3 N" u8 P5 z 39.Android 加壳原理 40.Android 加壳保护工具编写1 1 x4 k0 P/ V' C9 a( O 41.Android 加壳保护工具编写2 42.Android 加壳保护工具编写3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值