从零开始学习安卓逆向(三)

修改包名实现分身

实现apk程序分身功能只需要修改如下两个属性:
1、在androidmainfest.xml中的第一行找到package属性,修改包名。
2、在androidmainfest.xml中的标签中修改android:authorities属性即可,多个的话,都需要进行修改。

修改资源去广告的方法(apk的入口广告和弹窗广告):
1、在androidmainfest.xml中删除除了INTERNET之外的所有与网络有关的权限(去除apk中的联网弹窗广告),因为INTERNET权限如果被删除后可能导致apk崩溃,有些功能无法使用比如弹窗更新等。举例:保留<uses-permission android:name="android.permission.INTERNET"/>删除:<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
2、Activity标签中找到LAUNCHER,即程序入口的页面,将其删除,使用adb shell dumpsys activity top(可以捕获当前模拟器最顶层的活动界面)的命令,定位当前activity(即找到 属性android:name="org.cocos2dx.lua.AppActivity的activity标签),将其属性按照下图修改为LAUNCHER即可。
实例如下:


<activity android:configChanges="keyboardHidden|orientation|screenSize" android:label="@string/app_name" android:name="com.mosads.adslib.Splash.MosSplashActivity" android:screenOrientation="landscape" android:theme="@style/AppTheme.NoActionBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
 </activity>

知识点:

  • Activity是一个应用组件,用户可与其提供的屏幕进行交互,我们在应用程序中能看到的内容,绝大多数都是Activity组件提供的
  • adb即安卓调试桥(android debug briage)其可以使用adb来使用电脑端与模拟器或真机进行交互,其常用的使用命令有:
    1、adb devices:显示连接的真机或者模拟器设备有哪些
    2、adb shell:能够获取设备或者模拟器的交互环境
  • 使用adb命令获取的当前activity界面如下图:在这里插入图片描述
java基础
  • 开发java程序的步骤:编写程序,编译程序, 运行程序

第一个java程序HelloWorld.java:

// 定义一个类HelloWorld,注意这个类名一定要和文件名完全相同,不然编译的时候就会出错
public class HelloWorld{
// 这个是程序的启动原点, 函数名main是固定的,void代表函数没有返回值
	public static void main(String[]  args){
		// 向屏幕上打印hello world!!!
		System.out.println("hello world!!!");
	}
}

注意:javac HelloWorld.java进行编译程序,java HelloWorld进行运行程序,实际上运行的是HelloWorld.class文件

java中的标识符及命名规范:
在这里插入图片描述

  • 关键字:
    特点:
    1、关键字都是小写
    2、常用的代码编辑器对关键字都有高亮显示比如:public、static、class等

常量:在程序运行期间,其值固定不变的量
java中常量的分类:
- 字符串常量:凡是用双引号引起来的部分,叫做字符串常量,如:“abc”、“123”
- 整数常量:直接写上的数字,没有小数点, 例如:100、200
- 浮点数常量:直接写上的数字,有小数点,例如:2.5、-3.14
- 字符常量:凡是用单引号引起来的单个字符,就叫做字符常量, 例如:‘A’、‘b’、‘中’,注意,这个单引号中必须只有一个字符,不能是空白
- 布尔常量:只有两种取值:true、false
- 空常量:null,代表没有任何数据。注意,不能直接打印空常量System.out.println(null)这种写法错误

数据类型的分类:
1、基本数据类型:
1、整数型:byte、short、int(java中默认的整数类型)、long
2、浮点型:float、double(java中默认的浮点数类型)
3、字符型:char
4、布尔型:boolean
它们的区别如图所示:
在这里插入图片描述
2、引用数据类型:字符串、数组、类、接口、Lambda
注意事项:
1、字符串不是基本类型,而是引用类型
2、浮点型可能只是一个近似值,并非精确的值
3、数据范围与占用字节数不一定相关,例如float数据范围比long更加广泛,但是float的占用的内存为4字节
4、浮点数当中默认类型为double。如果一定要使用float,需要加上一个后缀F。如果是整数,默认类型为int,如果一定要使用long类型,需要加上一个后缀L,推荐使用大写字母后缀。

变量:程序运行期间,内容可以发生改变的量

创建一个变量并且使用的格式:

  • 数据类型 变量名称 = 值; // 创建一个变量,数据类型代表着这个变量存储的是什么类型的数据。这种创建变量的方法可以拆开。

注意:
1、创建多个变量,那么变量之间的名称不可以重复,如果重复,编译会报错
2、对于float和long类型来说,字母后缀F和L不要丢掉
3、如果使用byte或者short类型的变量,那么右侧的数据值不能超过左侧类型的范围
4、没有进行赋值的变量,不能直接使用,一定要复制之后,才能使用,否则编译报错
5、变量使用不能超过作用域的范围:从定义变量的一行开始,一直到直接所属的大括号结束为止,而且需要先定义,后使用
6、可以通过一个语句,创建多个变量,但是一般不推荐这样写。比如:

	// 第一种写法
	int a, b, c;
	a = 10;
	b = 20;
	c = 30;

	// 第二种写法
	int x = 100, y=200, z=300;

java中的类型转换:
1、自动类型转换:把一个表示数据范围小的数值或者变量赋值给另一个表示数据范围大的变量,这种转换是自动的,直接诶书写即可。

public class Student{
	
	public static void main(String[] args){
		double a = 10;
		System.out.println(a);  // 输出结果是10.0
	};
	
}

2、强制类型转换:把一个表示数据范围大的数值或变量赋值个另一个表示范围小的数值或变量。
强制类型转换格式:目标数据类型 变量名 = (目标数据类型) 数值或变量
public class Student{
	
	public static void main(String[] args){
		double a = 5.5;
		int b = (int) a;
		System.out.println(b);};   // 输出结果为5
	
}

java中基本数据类型表示范围从小到大的顺序如下图:
在这里插入图片描述
注意:
在这里插入图片描述
注意:boolean类型不能与其他类型进行相互转换

运算符:进行特定操作的符号
表达式:用运算符连接起来的式子就是表达式
在这里插入图片描述

public class Student{
	
	public static void main(String[] args){
		int a=1, b=2;
		
		System.out.println(a/b);  // 输入结果是0并非是0.5, 要想得到浮点数,那么就一定要有浮点数参与运算
	};
	
}


public class Student{
	
	public static void main(String[] args){
		int a = 10;
		double b = 3.0;
		System.out.println(a/b)};   // 输出结果为3.3333333333333335
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意:System.out.println(1+99+“年黑马”) 输出结果是”100年黑马“, 上述错误。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

网传资源,如有侵权请联系/留言,资源过大,上传乃是下载链接,失效请留言,下面上大纲: 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、付费专栏及课程。

余额充值