Kejuruteraan songsang asas Android tidak dilaksanakan dengan baik

PHPz
Lepaskan: 2023-05-17 20:22:36
ke hadapan
1092 orang telah melayarinya

0x01 Activity 跳转

demo还是上一次的demo,这次我们更改一下Button逻辑,改成跳转。

建一个新的Activity

Kejuruteraan songsang asas Android tidak dilaksanakan dengan baik

跳转Activity

这里跳转到我们新建的Activity。
使用Intent进行跳转,Intent相当于一个载体。
具体代码如下:

        Intent i=new Intent(MainActivity.this,Main2Activity.class);        startActivity(i);
Salin selepas log masuk


Kejuruteraan songsang asas Android tidak dilaksanakan dengan baik

设置标识


Kejuruteraan songsang asas Android tidak dilaksanakan dengan baik

生成apk测试


Kejuruteraan songsang asas Android tidak dilaksanakan dengan baik

0x02 Androidmanifest.xml说明

首先来看下Androidmanifest.xml的内容

<?xml  version="1.0" encoding="utf-8"?><manifest>    <application>        <activity>            <intent-filter>                <action></action>                <category></category>            </intent-filter>        </activity>        <activity></activity>    </application></manifest>
Salin selepas log masuk

在这里我们可以看到有两个Activity。

如何设置最先启动?

这里有两个Activity,那么app是怎么识别那个是最先启动的Activity呢。
这里我们对比一下两个Activity的区别。
这是第一个Activity

 <activity>            <intent-filter>                <action></action>                <category></category>            </intent-filter>        </activity>
Salin selepas log masuk

这个是我们的第二个Activity

  <activity></activity>
Salin selepas log masuk

是不是区别很明显,一个有一大堆的内容,一个只有一句话。
所以我们的重点就是:

<intent-filter>                <action></action>                <category></category>            </intent-filter>
Salin selepas log masuk

很容易就发现是因为这个所以才是最先启动的。
我们来做一个简单的测试。
我们把这个移动一下位置。
现在Androidmanifest,xml是这个样子。

                            <activity>            <intent-filter>                <action></action>                <category></category>            </intent-filter>        </activity>    
Salin selepas log masuk

测试

现在我们生成apk。
Kejuruteraan songsang asas Android tidak dilaksanakan dengan baik

我们发现,点开之后发现已经不是之前的Activity,而是我们之后自己添加的Activity。
基于这个思路,我们可以想嘛,如果有第三方的Activity注入,我们是不是可以通过改变启动的Activity从而避开一些验证问题。
恩,之后通过实战来进行一个测试。

0x03 反编译

有到了学习smali的时候到了。可能很无聊吧,但是写的人却是很有兴趣呢。
废话不说,开始吧。

1. 丢Android Killer里。

2.找到关键代码

恩。在$2里。

.method public onClick(Landroid/view/View;)V    .locals 3    .param p1, "v"    # Landroid/view/View;    .prologue
    .line 33    new-instance v0, Landroid/content/Intent;

    iget-object v1, p0, Lcom/example/hanlei/first_demo/MainActivity$2;->this$0:Lcom/example/hanlei/first_demo/MainActivity;

    const-class v2, Lcom/example/hanlei/first_demo/Main2Activity;    invoke-direct {v0, v1, v2}, Landroid/content/Intent;-><init>(Landroid/content/Context;Ljava/lang/Class;)V    .line 34    .local v0, "i":Landroid/content/Intent;
    iget-object v1, p0, Lcom/example/hanlei/first_demo/MainActivity$2;->this$0:Lcom/example/hanlei/first_demo/MainActivity;

    invoke-virtual {v1, v0}, Lcom/example/hanlei/first_demo/MainActivity;->startActivity(Landroid/content/Intent;)V    .line 35    return-void
.end method</init>
Salin selepas log masuk

这里我们不一句一句翻译,想看的回去翻之前的内容,很多。
我们来看这里的主要代码:
新建一个 Intent对象

new-instance v0, Landroid/content/Intent;
Salin selepas log masuk

获取MainActivity对想存储在v1中

 iget-object v1, p0, Lcom/example/hanlei/first_demo/MainActivity$2;->this$0:Lcom/example/hanlei/first_demo/MainActivity;
Salin selepas log masuk

把Main2Activity存入v2中

 const-class v2, Lcom/example/hanlei/first_demo/Main2Activity;
Salin selepas log masuk

然后把v1和v2放入v0中。

invoke-direct {v0, v1, v2}, Landroid/content/Intent;-><init>(Landroid/content/Context;Ljava/lang/Class;)V</init>
Salin selepas log masuk

startActivity调用即可。还是很简单的,很容易理解的。

.line 34    .local v0, "i":Landroid/content/Intent;
    iget-object v1, p0, Lcom/example/hanlei/first_demo/MainActivity$2;->this$0:Lcom/example/hanlei/first_demo/MainActivity;

    invoke-virtual {v1, v0}, Lcom/example/hanlei/first_demo/MainActivity;->startActivity(Landroid/content/Intent;)V
Salin selepas log masuk

虽然我不知道smali的含义,但我很熟悉它,一下就理解了。恩,语言还是多看看,多分析分析,有好处的。我熟练掌握C语言是因为学习时坚持不懈地敲了许多代码并完成了几个项目。

0x04 实战分析

样本

样本为了方便我就传在百度云里了
原APK:链接:https://pan.baidu.com/s/1pMwcuef 密码:a673

试玩

不知道为什么我的夜深模拟器打不开了。试试别的模拟器。

Kejuruteraan songsang asas Android tidak dilaksanakan dengan baik

一打开游戏,就弹出个这个界面,很不喜欢,我想直接弹出我的游戏界面。
好,我们用我们刚开始的技能。

1.apk反编译

Kejuruteraan songsang asas Android tidak dilaksanakan dengan baik

2.查看Androidmanifest.xml文件

                                                                                                                <activity></activity>        <activity></activity>                                                    <category></category>                <category></category>                        <intent-filter>                <action></action>                <category></category>            </intent-filter>                <activity>            <intent-filter>                <action></action>                <category></category>            </intent-filter>        </activity>                <activity></activity>                                                                            
Salin selepas log masuk

3.尝试跳转

首先来看下我们的跳转。

                                            <category></category>                <category></category>                        <intent-filter>                <action></action>                <category></category>            </intent-filter>        
Salin selepas log masuk

跳转的Activity名称为:cn.cmgame.billing.api.GameOpenActivity,Gameopen。。。恩,这是什么唉,好奇怪。但是呢,肯定就是我们打开的界面。恩。我觉得这个有点重要,以后可能会涉及到。所以还是找个小本子记下来。我应该建立一个小本子。
我们来看一下我们的Activity。

<activity></activity><activity></activity>
Salin selepas log masuk

这里有两个Activity:
第一个Activity的name:android:name="MainActivity"
第二个Activity的name:android:name="LogActivity"
作为开发人员,MainActivity,就是一个开始恩。我们直接开始更改。

                                              <category></category>                <category></category>                        <intent-filter>                <action></action>                <category></category>            </intent-filter>         
Salin selepas log masuk

这个是修改后的Activity。
其实我也只是对

                 <action></action>                <category></category>
Salin selepas log masuk

这两句有了解。但是还有三句是什么,一起来看一下吧。关于测试的问题,我们学习完之后再进行测试吧。
首选是

<category></category>
Salin selepas log masuk
Salin selepas log masuk

Kejuruteraan songsang asas Android tidak dilaksanakan dengan baik

<category></category>
Salin selepas log masuk

这两个直接挪过去,直接失败。所以,还是分析一下吧。
刚才说的

<category></category>
Salin selepas log masuk
Salin selepas log masuk

这句就是必须的。
还有两句

 <category></category>
Salin selepas log masuk

Atas ialah kandungan terperinci Kejuruteraan songsang asas Android tidak dilaksanakan dengan baik. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan