Android基礎逆向沒怎麼實現
0x01 Activity 跳转
demo还是上一次的demo,这次我们更改一下Button逻辑,改成跳转。
建一个新的Activity
跳转Activity
这里跳转到我们新建的Activity。
使用Intent进行跳转,Intent相当于一个载体。
具体代码如下:
Intent i=new Intent(MainActivity.this,Main2Activity.class); startActivity(i);
设置标识
生成apk测试
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>
在这里我们可以看到有两个Activity。
如何设置最先启动?
这里有两个Activity,那么app是怎么识别那个是最先启动的Activity呢。
这里我们对比一下两个Activity的区别。
这是第一个Activity
<activity> <intent-filter> <action></action> <category></category> </intent-filter> </activity>
这个是我们的第二个Activity
<activity></activity>
是不是区别很明显,一个有一大堆的内容,一个只有一句话。
所以我们的重点就是:
<intent-filter> <action></action> <category></category> </intent-filter>
很容易就发现是因为这个所以才是最先启动的。
我们来做一个简单的测试。
我们把这个移动一下位置。
现在Androidmanifest,xml是这个样子。
<activity> <intent-filter> <action></action> <category></category> </intent-filter> </activity>
测试
现在我们生成apk。
我们发现,点开之后发现已经不是之前的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>
这里我们不一句一句翻译,想看的回去翻之前的内容,很多。
我们来看这里的主要代码:
新建一个 Intent对象
new-instance v0, Landroid/content/Intent;
获取MainActivity对想存储在v1中
iget-object v1, p0, Lcom/example/hanlei/first_demo/MainActivity$2;->this$0:Lcom/example/hanlei/first_demo/MainActivity;
把Main2Activity存入v2中
const-class v2, Lcom/example/hanlei/first_demo/Main2Activity;
然后把v1和v2放入v0中。
invoke-direct {v0, v1, v2}, Landroid/content/Intent;-><init>(Landroid/content/Context;Ljava/lang/Class;)V</init>
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
虽然我不知道smali的含义,但我很熟悉它,一下就理解了。恩,语言还是多看看,多分析分析,有好处的。我熟练掌握C语言是因为学习时坚持不懈地敲了许多代码并完成了几个项目。
0x04 实战分析
样本
样本为了方便我就传在百度云里了
原APK:链接:https://pan.baidu.com/s/1pMwcuef 密码:a673
试玩
不知道为什么我的夜深模拟器打不开了。试试别的模拟器。
一打开游戏,就弹出个这个界面,很不喜欢,我想直接弹出我的游戏界面。
好,我们用我们刚开始的技能。
1.apk反编译
2.查看Androidmanifest.xml文件
<activity></activity> <activity></activity> <activity> <intent-filter> <action></action> <category></category> </intent-filter> </activity> <intent-filter> <action></action> <category></category> </intent-filter> <category></category> <category></category> <activity></activity>
3.尝试跳转
首先来看下我们的跳转。
<intent-filter> <action></action> <category></category> </intent-filter> <category></category> <category></category>
跳转的Activity名称为:cn.cmgame.billing.api.GameOpenActivity,Gameopen。。。恩,这是什么唉,好奇怪。但是呢,肯定就是我们打开的界面。恩。我觉得这个有点重要,以后可能会涉及到。所以还是找个小本子记下来。我应该建立一个小本子。
我们来看一下我们的Activity。
<activity></activity><activity></activity>
这里有两个Activity:
第一个Activity的name:android:name="MainActivity"
第二个Activity的name:android:name="LogActivity"
作为开发人员,MainActivity,就是一个开始恩。我们直接开始更改。
<intent-filter> <action></action> <category></category> </intent-filter> <category></category> <category></category>
这个是修改后的Activity。
其实我也只是对
<action></action> <category></category>
这两句有了解。但是还有三句是什么,一起来看一下吧。关于测试的问题,我们学习完之后再进行测试吧。
首选是
<category></category>
<category></category>
这两个直接挪过去,直接失败。所以,还是分析一下吧。
刚才说的
<category></category>
这句就是必须的。
还有两句
<category></category>
以上是Android基礎逆向沒怎麼實現的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

最近幾天,Ice Universe 不斷披露有關 Galaxy S25 Ultra 的詳細信息,人們普遍認為這款手機將是三星的下一款旗艦智慧型手機。除此之外,洩密者聲稱三星只計劃升級一台相機

OnLeaks 現在與 Android Headlines 合作,首次展示了 Galaxy S25 Ultra,幾天前,他試圖從他的 X(以前的 Twitter)粉絲那裡籌集到 4,000 美元以上的資金,但失敗了。對於上下文,嵌入在 h 下面的渲染圖像

除了發布兩款新智慧型手機外,TCL 還發布了一款名為 NXTPAPER 14 的新 Android 平板電腦,其大螢幕尺寸是其賣點之一。 NXTPAPER 14 採用 TCL 標誌性品牌霧面液晶面板 3.0 版本

Vivo Y300 Pro剛剛全面亮相,它是最薄的中階Android手機之一,配備大電池。準確來說,這款智慧型手機厚度僅為 7.69 毫米,但配備 6,500 mAh 電池。這與最近推出的容量相同

三星尚未就何時更新其 Fan Edition (FE) 智慧型手機系列提供任何提示。目前來看,Galaxy S23 FE 仍然是該公司的最新版本,於 2023 年 10 月年初推出。

最近幾天,Ice Universe 不斷披露有關 Galaxy S25 Ultra 的詳細信息,人們普遍認為這款手機將是三星的下一款旗艦智慧型手機。除此之外,洩密者聲稱三星只計劃升級一台相機

Redmi Note 14 Pro Plus 現已正式成為去年 Redmi Note 13 Pro Plus 的直接後繼產品(亞馬遜售價 375 美元)。正如預期的那樣,Redmi Note 14 Pro Plus與Redmi Note 14和Redmi Note 14 Pro一起成為Redmi Note 14系列的主角。李

摩托羅拉今年發布了無數設備,儘管其中只有兩款是可折疊的。就上下文而言,雖然世界上大多數地區都收到了 Razr 50 和 Razr 50 Ultra,但摩托羅拉在北美提供了 Razr 2024 和 Razr 2
