image-20230203135433828.png (27.79 KB, 下载次数: 0)
下载附件
2023-2-6 10:45 上传
方法一手动或者使用模拟点击工具,点它999次必然可以出结果。虽然这样很容以可以拿到flag,但是这有悖于我们参与活动的初衷,当然还是要学习的嘛。方法二使用NP/MT管理器进行分析,这里以NP管理器为例,MT管理器操作同理,首先打开NP管理器,选择安装包提取。
image-20230203140125541.png (154.09 KB, 下载次数: 0)
下载附件
2023-2-6 10:45 上传
点击对应的应用,选择提取安装包。
image-20230203140216155.png (150.11 KB, 下载次数: 0)
下载附件
2023-2-6 10:45 上传
定位到提取后的安装包目录,点击应用可以看到包名、签名信息等一系列的信息。这里需要注意一点的是,现在很多App都有签名校验,如果修改了代码就会造成签名不一致导致应用无法打开, 因此我们需要先确定一下以保证后续的进行,当然这一步在修改完代码之后再进行也是可以的。
image-20230203140403923.png (113.07 KB, 下载次数: 0)
下载附件
2023-2-6 10:45 上传
我们直接点击功能,然后选择APK签名,安装后发现可以正常打开,我们继续向下分析。
image-20230203141321663.png (109.63 KB, 下载次数: 0)
下载附件
2023-2-6 10:45 上传
因为没有签名校验,这里使用原来的包或者刚签名的包都可以,根据主页面的请点击999次,从这个999入手吧,在安装包上点击查看,可以看到这个应用的整个内部信息,这里我们需要关注的是classes.dex这个文件。
image-20230203143228074.png (117.94 KB, 下载次数: 0)
下载附件
2023-2-6 10:45 上传
点击classes.dex,选择Dex编辑Plus,选择搜索栏
image-20230203143637166.png (52.8 KB, 下载次数: 0)
下载附件
2023-2-6 10:45 上传
这里选择发起新搜索,输入0x3e7 (也即是10进制的999),在搜索类型中选择整数,如果直接选择999在NP管理器来搜索的话,是没有结果的。
image-20230203143846408.png (48.99 KB, 下载次数: 0)
下载附件
2023-2-6 10:45 上传
但在MT管理器中可以直接选择搜索999,因为MT管理器对搜索做了优化,所以可以直接搜索,但是考虑到后边要用反编译功能功能,不一定都有开通会员,所以大家可以自行选择两个结合来分析,或者是使用其中一个也可以。此处为MT搜索时的截图。
image-20230203144614868.png (54.25 KB, 下载次数: 0)
下载附件
2023-2-6 10:45 上传
搜索结果如下图,这里直接点进去进入第三个就行,如果有印象的话,这是App的包名,并且之前提到的MainActivity类也在这里。
image-20230203144829826.png (62.94 KB, 下载次数: 0)
下载附件
2023-2-6 10:45 上传
点击进入可以看到对应的Smali代码,看起来就像我们使用OD分析的汇编代码一样,点击右上角的菜单栏,选择转成Java
image-20230203145322894.png (136.53 KB, 下载次数: 0)
下载附件
2023-2-6 10:45 上传
在这里可以很清晰的看到App的主要逻辑,以及点击按钮会发出声音的相关方法,感兴趣可以向上翻阅。这里重点来看一下我们看到的999,MainActiviy会调用一个check()方法,check()中会返回当前全局变量num的值,而按钮被添加了监听事件,每次点击都会修改num使文本框的值发生改变,最会被调用时会返回num的值,判断我们是否真的点击了999次,之后弹出去论坛领取CB的提示,以及在文本框显示flag,这里的“hnci}|jwfclkczkppkcpmwckng”并不是最终答案,因为它被作为参数传入了decrypt()方法中,我们可以继续分析decrypt()方法,或者改变程序逻辑,只要点击1次让最终的flag显示出来即可。这里直接修改check方法让其返回999即可。
image-20230203150404826.png (213.78 KB, 下载次数: 0)
下载附件
2023-2-6 10:45 上传
返回到Smali代码中,找到check()方法,在其返回值上方插入一行代码,const/16, v0,0x3E7, 表示将999赋值给寄存器v0
image-20230203152409836.png (137.61 KB, 下载次数: 0)
下载附件
2023-2-6 10:45 上传
关于smali用法可以在右上角三点的菜单栏选择Smali语法查询,或者查阅相关资料。
image-20230203152804311.png (185.35 KB, 下载次数: 0)
下载附件
2023-2-6 10:46 上传
修改完成后退出,依次选择保存并退出。由于NP管理器已经进行自动签名,因此直接选择安装即可。此时打开App,点击一次按钮即可获取flag。
image-20230203154121676.png (38.23 KB, 下载次数: 0)
下载附件
2023-2-6 10:46 上传
方法三使用JEB来进行分析,原本是采用Android Killer来分析的,但出现了很多问题,论坛搜索后得知建议使用JEB工具,起初对新的工具是有些抗拒的,会觉得难,但是使用之后,只能说境泽定律诚不欺我,真香。在JEB中打开应用,出现弹窗选择ok即可,之后等待分析完成。
image-20230203154639327.png (155.76 KB, 下载次数: 0)
下载附件
2023-2-6 10:46 上传
由于已经确定了关注的代码在MainActivity中,因此在左下角的窗口中双击即可。为了更清晰的了解代码逻辑,在当前窗口右键选择Decompile,点击ok后即可查看源码。
image-20230203155034791.png (201.6 KB, 下载次数: 0)
下载附件
2023-2-6 10:46 上传
在右侧窗口中除了源码以外,很容易就可以看到flag,这是源于JEB强大的字符串解密功能,可以轻松还原某些字符串加密前的内容。
image-20230203155758472.png (235.65 KB, 下载次数: 0)
下载附件
2023-2-6 10:46 上传