IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Android 逆向初探 -> 正文阅读

[移动开发]Android 逆向初探

逆向分析课程小作业:

逆向分析对象:看雪CTF 2018年某题

image-20220406221318318

看看它是干啥的

1、安装模拟器。

由于Android的apk文件不能直接安装在电脑上,所以先下载一个模拟器,例如夜某模拟器。打开之后安装apk文件。

image-20220406224336286

2、简单测试一下

image-20220406224423737

尝试用工具分析一下

1、使用AndroidKiller工具

(评价:网上下载了一圈的AndroidKiller效果都不是很好,本喵经过魔幻的操作得到了尚可的效果,建议用老师的版本试一下)

推荐一个免费下载逆向工具的靠谱网址。(https://down.52pojie.cn/Tools/Android_Tools/)

? 1)下载AndroidKiller

image-20220406224755206

直接用这个版本的AndroidKiller打开apk文件会得到反汇编失败的结果。

? 2)下载Apktool

image-20220406224912844

? 无需解压,替换AndroidKiller/bin/apktool/apktool目录下ShakaApktool.jar文件,并修改为相同的名字;再次尝试反汇编,可以得到理想的效果。

? 3)反编译效果展示

image-20220406225220600

image-20220406225314161

? 需要重点关注的是res/values/目录下的文件是否齐全。

? AndroidKiller的功能:它能帮助我们快速找到程序的入口(简直就是废物)

image-20220406225517544

2、使用JEB工具

(评价:牛的,用它比用AndroidKiller强太多了,又快又能反汇编;也比GDA强,反汇编效果比GDA的质量好)

? 1)反汇编得到源代码

image-20220406225937189

? 2)根据提示信息获取目标

? 反汇编代码:

image-20220406230025241

? Public.xml文件

image-20220406230115845

? string.xml文件

image-20220406230137626

? 首先根据输入错误的提示信息failed!!!,在string.xml文件中找到字符串的name,在public文件中找到字符串对应的id,在源代码中理解代码含义。

? 3)源代码分析并复现

? 暴力代码(不建议参考,自己写一份):

#include<iostream>
#include<cstdio>
using namespace std;

int year;
int month;
int date ;

int Normal_year = 1; 
int Normal_month = 1;
int Normal_date = 1;

int Cyear;
int Cmonth;
int Cdate;


int aTable[12] = { 16,6,7,10,9,16,10,8,8,9,6,6 };
int bTable[30] = { 5,10,8,15,16,15,8,16,8,16,9,17,8,17,10,8,9,18,5,15,10,9,8,9,15,18,7,8,16,6};
int cTable[12] = { 6,7,18,9,5,16,9,15,18,8,9,5 };
int dTable[60] = { 7,7,9,12,8,7,13,5,14,5,9,17,5,7,12,8,8,6,19,6,8,16,10,6,12,9,6,7,12,5,9,8,7,8,15,9,16,8,8,19,12,6,8,7,5,15,6,16,15,7,9,12,10,7,15,6,5,14,14,9 };
void DataNormalize();
void DataChange();
int main() {
	int ans = 0;
	int num = 0;
	for (year = 1984; year <=2007; year++) {
		month = 1;
		for (; month <= 12; month++) {
			date = 1;
			for (; date <= 30; date++) {
				ans = 0;
				DataNormalize();
				if (Normal_year != 0 && Normal_month != 0 && Normal_date != 0) {
					Cyear = year;
					Cmonth = month;
					Cdate = date;
					
					DataChange();
					ans += dTable[(Cyear - 1900)% 60];
					ans += cTable[Cmonth - 1];
					ans += bTable[Cdate - 1];
					int rep;
					rep = ans;
					for (int i = 0; i < 12; i++) {
						rep += aTable[i];
						if (rep == 34) {
							if (month == 2 && i == 6) {
								rep = ans;
								break;
							}
							printf("success!!!");
							cout << year << " " << month << " " << date << " " << i << endl;
							num++;
							rep = ans;
						}
						rep = ans;
					}
				}
				else {
					continue;
				}
			}
		}
	}
	cout << endl;
	cout << num << endl;
}
void DataNormalize(){
	if (year > 0 && year < 189) {
		Normal_year = 0;
	}
	if (year <= 1983 || year >= 2007) {
		Normal_year = 0;
	}
	if (month < 1 || month >12) {
		Normal_month = 0;
	}
	if (date < 1 || date>31) {
		Normal_date = 0;
	}
}
void DataChange() {
	if (year == 1989 || year == 2004) {
		Cdate = 31;
	}
	if (month == 1 || month == 4 || month==5 || month ==7 ||month == 10 || month ==11  || month == 12) {
		Cyear = 1999;
	}
	if (year <= 1994 && (month == 2 || month == 6 || month == 8)) {
		Cmonth = 3;
	}
	if (year >= 1996 && (month == 2 || month == 6 || month == 8)) {
		Cmonth = 9;
	}
	if (year == 1995 && (date > month + 2 || month == date)) {
		Cmonth = 6;
	}
}

? 4)找到Flags

image-20220406230634118

? 简单测试一下,通过了!!!(相信仔细分析了源码的喵饱饱们,一定知道flag和程序输出的结果之间的对应关系)

image-20220406230717161

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-04-09 18:32:44  更:2022-04-09 18:35:25 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 20:37:54-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码