xml文件修改逆向android,Android逆向重置版(2)—起源

0x00 前言

首先感谢老婆王嘟嘟的鼓励,其次感谢52平台的支持。以下是正文

导航篇地址:https://www.52pojie.cn/thread-1016567-1-1.html

之后所有的文章链接会放在导航篇中。

上一篇内容有一个非常简单的题目,主要目的是为了引导走进第一步。

那么这一篇主要是为了详细讲解一下上一篇的一些疑问,还有一些基础知识的学习&复习。

0x01 第一个Android App Demo详解

上次留下来两个疑问

为什么flag会出现在MainActivity.smali中。

MainActivity.smali是什么。

先来解决这两个。

1.MainActivity.smali

1.1 smali

首先来说这个后缀.smali。

smali的意识是编译器,.smali就是一个反编译之后的文件格式。

1.2 Activity

啰嗦一下,要弄Android逆向你不可能只单出的学逆向而抛弃Android本身,所以Android的知识会贯穿在你整个学习Android逆向的系统中。

Android中有四大组件。

activity

Service

Broadcast Receive

Content Provider

Activity就是一个可视化界面。再简单的说就是一个界面,每一个界面都是一个Activity(这里先不涉及Fragment)。

其他的三个组件目前还没有涉及到,你现在需要记住的知识如下:

Android 有四大组件

Activity是四大组件之一

Activity其实就是一个界面

1.3 MainActivity

如果是有编程基础的话,那么就对Main这个东西很敏感,当然没有也关系,我们现在说。

MainActivity一般情况下就是显示的第一个页面。也可以理解为是一个函数的开始位置。

在我们肉眼能看到的运行状态下的,呈现出来的第一个东西,就是它了。

我可能越解释越难懂,总结一下:

一般情况下,MainActivity就是一切开始的地方

PS:在Android Studio中,创建一个默认的app的时候,MainActivity就是一切开始的地方。

下图为创建时默认生成的MainActivity

d9ddfbe5380f302af518af5726c7ab8f.png

好了,问题来了,那么这里的名字明显是可以自定义的,那么Android系统里到底是以什么方式来进行判断谁是最先启动的Activity呢

这里谁是最先启动的,主要是和一个名为Androidmanifest.xml的文件有关。在这里文件里,有这样的几行。

bf8424f6229ff6df7f4902793a1e90fa.png

系统规定:哪个Activity下面有这样的属性,那么谁就是最先启动的Activity。

那么实际上你就会发现,有可能有的app挂着Mainactivy的样式,但是却不是最先启动的,所以上面的我都用的是一般情况下。

这里又要思考了。

那么如果我改变这里的Activity下面的属性,比如我将这个属性放在了另外一个Activity下,那么启动的方式是否也可以同样进行改变。

这里给大家思考的空间。

1.4 总结

综上所述,为什么flag会出现在了Mainactivity下,主要原因是因为Mainactivity作为唯一的Activity也是最先启动的Activity,所以flag出现在了这里。

MainActivity.smali 上面也解释了。

0x02 其它疑问点:

1.改变Androidmanifest.xml下的属性是否可以更改启动顺序?

答案是:肯定会改变启动顺序。

这里来简单的演示一下,之后会有一个简单地demo来给大家练习。

1.1 创建一个Activity

274203bbbe8412c1aef26fd2c22359a5.png

这里我们查看一下Androidmanifest.xml文件

e2e26e3d42378bfe78b07688e2adc5b2.png

可以看到是在MainActivity下的。

并且我们将MainActivity显示的字符串设置为“第一个Activity”。(这里怎么设置的需不需要啰嗦一下啊,可能不用吧,有需要可以给我说)

215324allyeiprtyg3ndgi.png

1.2 再创建一个Activity

在创建一个Activity,并且将其显示的字符串设置为“第二个Activity”。

3fee33e5b6591140bb965b0ed4e97cea.png

这个时候查看一下Androidmanifest.xml文件。

215632duutngf7fbms7q2r.png

1.3 运行一下程序

运行一下可以看到,启动的是MainActivity。

85debfb34676a5af5658772c95844353.png

1.4 更换一个属性

cc19a8a226525f1695828d27df33b544.png

1.5 再次运行

62ff81d66343b76ce0cbfbcf3c190645.png

可以看成显示的内容变成了第二个Activity了。

1.6 结论

最后可以看到,我们可以通过改变LAUNCHER属性,可以更改Activity启动的顺序,那么...我们就可以做很多事情了。

1.7 最常见的用途

比如说你需要找一个App的入口Activity,那么你就可以根据LAUNCHER属性去判断,到底哪一个是入口Activity。

2.为什么flag会出现在onCreate方法中?

之前我们有一个问题是,为什么会出现在MainActivity中,现在问题又来了,为什么会出现在MainActivity中的onCreate中呢

a115fdd7924ff710de6b8d968f62131f.png

机智的你们一定会想到,这里可能也和执行顺序有关系。

这里涉及的问题是,Activity的执行顺序的问题,准确的说,是Activity的声明周期的问题。这里不需要对生命周期研究的多透彻,之后有的是机会。

我去盗一张图。

d4f9e3b460f3899d1ce4b39fe2109bcb.png

就是这个图,看不懂?没关系。

你只需要知道,最开始执行的一个函数就是onCreate,在这里会做很多事情。就和main函数一样,就算是要对变量进行跟踪也是从这个onCreate开始的。

知识点:

Activity中onCreate是最先执行的一个函数。

这里就可以解释为什么flag会出现onCreate方法中,在准确一点就是flag最大概率出现的地方。

上面的生命周期有兴趣的可以去研究一下。

0x03 Android killer当前可能用到的功能点简述

1. 判断入口Activity

点击工程信息即可看到。

8c6ead1677ce94ed76924a128fb5f022.png

2.工程管理器

工程管理器这里可以列出文件夹下的所有文件。

88d6e6edc81a2f096641351de564ed70.png

3.工程搜索

4.回编译

当一个apk修改了之后,那么需要做的就是进行回编译。保存之后,直接点这里就ok了。

c2ce6cd120356757bde03e450fcae7fa.png

0x04 逆向修改第一个Android App Demo

之前我们做了的是逆向,那么在这一片文章里要做的就是逆向修改App。

1. 反编译

9bc7c5afa7206da385decf3acfa9989b.png

2.修改字符串

8ea4ffae2695a2f3da071e573051703d.png

3.回编译

保存之后进行回编译

efacbf1ccf599829d53f49395c0fcfd7.png

4.运行

顺利运行了,但是略显尴尬的就是没有办法正面显示。

查一下log

8b14aaf97e84683c08bb9164e1d58b83.png

这里我只是显示一下是成功修改了,你们改完之后,只要能够正常运行就可以了。如何查log之后我们再来说。

0x05 习题

1.习题1,尝试修改Androidmanifest.xml获取flag

下载地址:

2b1bef8df4f01fee4fc8b39358cdcfb3.gif

zhuzhu2.zip

(1.03 MB, 下载次数: 1)

2019-9-18 16:56 上传

点击文件名下载附件

习题1

2.逆向修改第一个Android AppDemo

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值