梦旅意中人 发表于 2023-2-6 11:01

【2023】春节解题领红包之三

本帖最后由 梦旅意中人 于 2023-2-7 18:34 编辑

## 前言

#### 在开始阅读本解析前,强烈建议去看看 **正己** 大佬的(https://www.52pojie.cn/thread-1695141-1-1.html),写的肥肠滴好,B站也有对应教程,相信认真看完之后一定会很快解出Android的初级题。
#### ~~如果依旧没有思路,再来看看这篇解析也不迟。~~

## 工具

#### NP管理器/MT管理,JEB

#### (考虑到各位有的坛友没有开通MT会员,所以用NP管理器平替也是可以的)

## 分析

#### 安装App后打开,看到如下界面,点击一下按钮还会发出声音(开庭记得带上你的App哈哈哈),点击按钮页面次数增加,也就是需要点击999次才可能出现我们想要的东西。如果有一些Android基础的话,可以知道这里就是我们一个应用的MainActivity,使用MT管理器的Activity记录也会得到同样的结果,这就意味着我们要分析的代码就在这个类中。


### 方法一

#### 手动或者使用模拟点击工具,点它999次必然可以出结果。虽然这样很容以可以拿到flag,但是这有悖于我们参与活动的初衷,当然还是要学习的嘛。

### 方法二

####使用NP/MT管理器进行分析,这里以NP管理器为例,MT管理器操作同理,首先打开NP管理器,选择安装包提取。

#### 点击对应的应用,选择提取安装包。

#### 定位到提取后的安装包目录,点击应用可以看到包名、签名信息等一系列的信息。这里需要注意一点的是,现在很多App都有签名校验,如果修改了代码就会造成签名不一致导致应用无法打开, 因此我们需要先确定一下以保证后续的进行,当然这一步在修改完代码之后再进行也是可以的。

#### 我们直接点击功能,然后选择APK签名,安装后发现可以正常打开,我们继续向下分析。

#### 因为没有签名校验,这里使用原来的包或者刚签名的包都可以,根据主页面的请点击999次,从这个999入手吧,在安装包上点击查看,可以看到这个应用的整个内部信息,这里我们需要关注的是classes.dex这个文件。

#### 点击classes.dex,选择Dex编辑Plus,选择搜索栏


#### 这里选择发起新搜索,输入0x3e7 (也即是10进制的999),在搜索类型中选择整数,如果直接选择999在NP管理器来搜索的话,是没有结果的。

#### 但在MT管理器中可以直接选择搜索999,因为MT管理器对搜索做了优化,所以可以直接搜索,但是考虑到后边要用反编译功能功能,不一定都有开通会员,所以大家可以自行选择两个结合来分析,或者是使用其中一个也可以。此处为MT搜索时的截图。

#### 搜索结果如下图,这里直接点进去进入第三个就行,如果有印象的话,这是App的包名,并且之前提到的MainActivity类也在这里。

#### 点击进入可以看到对应的Smali代码,看起来就像我们使用OD分析的汇编代码一样,点击右上角的菜单栏,选择转成Java

#### 在这里可以很清晰的看到App的主要逻辑,以及点击按钮会发出声音的相关方法,感兴趣可以向上翻阅。这里重点来看一下我们看到的999,MainActiviy会调用一个check()方法,check()中会返回当前全局变量num的值,而按钮被添加了监听事件,每次点击都会修改num使文本框的值发生改变,最会被调用时会返回num的值,判断我们是否真的点击了999次,之后弹出去论坛领取CB的提示,以及在文本框显示flag,这里的“hnci}|jwfclkczkppkcpmwckng”并不是最终答案,因为它被作为参数传入了decrypt()方法中,我们可以继续分析decrypt()方法,或者改变程序逻辑,只要点击1次让最终的flag显示出来即可。这里直接修改check方法让其返回999即可。

#### 返回到Smali代码中,找到check()方法,在其返回值上方插入一行代码,const/16, v0,0x3E7, 表示将999赋值给寄存器v0

#### 关于smali用法可以在右上角三点的菜单栏选择Smali语法查询,或者查阅相关资料。

#### 修改完成后退出,依次选择保存并退出。由于NP管理器已经进行自动签名,因此直接选择安装即可。此时打开App,点击一次按钮即可获取flag。

### 方法三

#### 使用JEB来进行分析,原本是采用Android Killer来分析的,但出现了很多问题,论坛搜索后得知建议使用JEB工具,起初对新的工具是有些抗拒的,会觉得难,但是使用之后,只能说境泽定律诚不欺我,真香。

#### 在JEB中打开应用,出现弹窗选择ok即可,之后等待分析完成。

#### 由于已经确定了关注的代码在MainActivity中,因此在左下角的窗口中双击即可。为了更清晰的了解代码逻辑,在当前窗口右键选择Decompile,点击ok后即可查看源码。

#### 在右侧窗口中除了源码以外,很容易就可以看到flag,这是源于JEB强大的字符串解密功能,可以轻松还原某些字符串加密前的内容。


## 其它题解

#### 【2023】春节解题领红包之二https://www.52pojie.cn/thread-1742329-1-1.html

#### 【2023】春节解题领红包之四https://www.52pojie.cn/thread-1742785-1-1.html

#### 【2023】春节解题领红包之web篇——不完美题解https://www.52pojie.cn/thread-1743080-1-1.html

梦旅意中人 发表于 2023-2-15 20:26

无尽逍遥 发表于 2023-2-15 13:42
论坛的我貌似用不了 反编译app的时就卡住了 jadx不CB会但太吃内存

这个是我那个版本的jeb的下载地址https://www.52pojie.cn/thread-1681346-1-1.html,你还可以参考这个帖子看能否解决你的问题https://www.52pojie.cn/thread-722648-1-1.html,实在不行的话你试试GAD这个工具也可以的。


梦旅意中人 发表于 2023-2-6 22:54

正己 发表于 2023-2-6 12:46
写得挺详细的,不过都看了我的教程,初级题不是都应该没问题吗?
另外可以学习一下Markdown语 ...

哈哈哈哈哈,您的教程真的特别棒,在线催更,今天文章发布时出了点问题,我会重新使用Markdown发布的,谢谢大佬捧场。

lovekezi 发表于 2023-2-6 12:10

优秀,感谢分享

huzp 发表于 2023-2-6 12:42

教程很详细了,不错,值得学习

正己 发表于 2023-2-6 12:46

本帖最后由 正己 于 2023-2-6 15:00 编辑

写得挺详细的,不过都看了我的教程,初级题不是都应该没问题吗?{:301_997:}
另外可以学习一下Markdown语法,写帖子更优美

侃遍天下无二人 发表于 2023-2-6 13:56

正己 发表于 2023-2-6 12:46
写得挺详细的,不过都看了我的教程,初级题不是都应该没问题吗?
另外可以学习一下Makedown语 ...

是markdown

El28PoJie 发表于 2023-2-6 14:07

学会了,谢谢分享

walkercao 发表于 2023-2-7 09:10

感谢分享
来试试看:loveliness:

fry1997921 发表于 2023-2-8 20:58

很详细的讲解,小白学习了

无尽逍遥 发表于 2023-2-13 01:43

大佬能分享下 jeb吗
页: [1] 2
查看完整版本: 【2023】春节解题领红包之三