用户
搜索
回帖奖励 47 魔法币 回复本帖可获得 1 魔法币奖励! 每人限 1 次
  • TA的每日心情
    慵懒
    2019-1-10 12:59
  • 签到天数: 141 天

    连续签到: 1 天

    [LV.7]常住居民III

    i春秋作家

    推荐小组成员

    Rank: 7Rank: 7Rank: 7

    120

    主题

    299

    帖子

    1277

    魔法币
    收听
    0
    粉丝
    21
    注册时间
    2017-7-24

    幽默灌水王突出贡献春秋文阁i春秋签约作者i春秋推荐小组积极活跃奖春秋游侠秦

    HAI_ i春秋作家 推荐小组成员 幽默灌水王 突出贡献 春秋文阁 i春秋签约作者 i春秋推荐小组 积极活跃奖 春秋游侠 秦 楼主
    发表于 2018-11-20 23:34:09 318946
    本帖最后由 HAI_ 于 2018-11-22 06:48 编辑

    0x00 前言

    首先推一波博客
    https://blog.csdn.net/qq_36869808/article/list/1
    然后就是要说的,闯关游戏,暂时只适合用来入门,以及知识面扩充。要想什么脱壳,什么棋牌破解上天啥的,估计还是有点悬的。
    闯关下载地址

    啰嗦部分

    可以滤过不看的部分哟,从解题到出题,分为两个部分来写,记录一下出题思路,以及目的,还有怎么出的题,这些。
    可能还要给老婆当复习资料,所以会有多详细,就写多详细,感觉麻烦,可以跳着看。

    0x01 题目

    我把题目做的漂亮一点(最后我放弃了),给个赞,留个言再走呗~

    0x02 思路阶段

    首先来简单的说一下解题思路

    先不说这道题到底怎么样,难度有多低或者难度有多高,先做你能做的事情。

    这里做了一个简图,之后看能不能搞一个思维导图

    首先第一步一定要先安装app,看一下这到底是个啥。不要一上来各种工具就开始搞。养成一个良好的习惯
    第二步 就开始找找能不能从界面看出点端倪 ,踩点
    第三步 这个时候随便你搞

    0x03 解题 start

    这道题的本意我是这样想的,给老婆教一教Android killer咋用就可以了。因为是一天的任务,因为课业繁重,所以就布置了这一道简单的题目。

    这个是最原始的思路。
    踩点——>使用Android killer 进行反编译——>拿到flag。

    dex2jar的思路
    踩点——>apk解压——>dex2jar——>打开jar——>拿到flag

    jeb解题
    踩点——>jeb反编译——>smali——>转java——>拿到flag

    1.踩点阶段


    app运行之后是这个样子的。
    提示信息就是这个Android Killer了。

    2. 正常思路

    把apk拖到Android Killer中,然后等

    如果有人问为什么要出这么简单的题目出来,其实这东西没有简单不简单,只有想得到和想不到的区别,就这拖一下,一起工作的小伙伴照样还是不知道。所以还是要教老婆一下的。

    这里有一个小眼睛,代表最小化的意思,在没有特殊操作,这个界面是可以最小化的。
    最小化了之后,就会发现我们的flag了,是不是超级简单呢。

    3.dex2jar的思路

    首先我们要做的是解压apk包。
    这里有一个知识点就是

    小知识:
    apk 就是 zip压缩包,正常解压就可以。(关系类似于正方形和矩形的关系)

    解压之后的内容

    这里其他的文件是什么,我们暂时没有必要知道,放着,没问题的。以后遇到我们再说,就算我这里说了,也记不住。所以这里只盯着classes.dex这个文件。

    小知识:
    所有的apk的dex文件都是classes.dex

    这里我们使用一个工具。将dex文件拖进去,就ok了。

    这里dex2jar

    最终它会在当前文件夹下面生成一个classes.jar的文件。

    注意一定要看提示,看工具的提示,提示了生成在了当前文件下的。我老婆经常不看提示,emmmmm,我也没办法。

    然后打开jar,把jar文件拖进去。然后点击打开jar

    界面是这个样子的,我们现在就是要确定key的位置,怎么分析呢,我自己倒是可以直接点开就知道是哪一个,但是我老婆很有可能不知道为什么要这么点。
    我是这样说的。

    这里有一个入口,就和main函数一样。那我们就先要找到这里。

    拿到key。
    还有一种打开jar的方式。

    点这个。

    然后等待打开。


    把jar文件拖进去。

    其他就和上面一样了。

    4. 总结对比

    为什么之前说想让用Android killer来解题呢,主要是因为,虽然Android killer 一键化操作很简单,但是至少显示的smali代码,以后要是工作还是写报告啥的,smali代码可能更炫一点。可能是我想多了。主要还是锻炼分析能力,看java代码就没意思了。

    5. jeb解题

    jeb界面

    把apk拖进去。
    然后点这个。

    双击这个,这个就是我们的dex包。

    可以看到这样的结构。

    选择这个,可以将smali转变成java代码。

    感觉没开始就已经3000字了。

    0x04 进阶部分

    找到题目的答案其实在我的初衷里并没有那么重要,找到答案只是对方法的一种运用,学到知识才是真谛。
    刚开始看到smali的代码,正常情况下,人都是要怂的。未知总会让人害怕。但是不慌,我们来把他们翻译成没有那么的恐惧的状态。

    1.结构论

    首先这里,我们把smali 简单的分成三个部分,我自己分的,只做参考,不做依据。

    这样分的,需要java的相关知识。

    从上到下,smali相对应的部分。

    先明白这个结构就ok了。

    2. smali 简单分析

    入门其实不需要你学习太深,只要知道是什么就可以了,到底是什么,这个不是你入门该去探索的东西,等你到一定程度的时候,需要重新回头来看。

    2.1 第一个结构

    class 类
    super 父类
    source,翻译一下就是根源,这里指的就是类文件名。

    小知识:
    java中,类名和类文件名是要一致的,除去文件后缀

    好了,第一个部分,暂时理解到这里就ok了。其他你可以自己发现也可以留着。

    2.2 第二个结构

    prologue 开始的部分
    const-string 创建一个string变量

    这里需要说一下就是 const 这种就是创建变量,看到int就是int咯,看见其他就是其他。

    暂时理解到这里就足够了。

    小知识
    你要是问我v0和p0是什么的话
    这里简单的说,vo就是创建的变量,p0就是方法传入的变量。

    2.3 第三个结构

    prologue  [ˈprəʊlɒg] 开始的地方
    const v0, 0x7f09001b 值得看的是这一句,之前我们说了const就是一个创建变量的东西,现在什么都没有是什么,这里只需要理解是给v0这个寄存器赋值即可。

    寄存器
    smali中,寄存器都是v0,v1,v2这种

    暂时只要知道这么多,就足够了。

    0x05 开发思路


    就这么一点,想说的就是,为什么这里选择用一个变量来放key,刚开始想用注释的,结果发现,就没有了。。。没有了。。。
    然后本来相用print的,但是不想衍生什么其他方式,还是就用变量吧。简单纯粹。
    啰嗦了。。。。。。

    有什么其他疑问的,可以评论留言哟

    论如何教女朋友&老婆学安全&学编程,我们来聊一聊经验呀784278256
    发表于 2018-11-22 12:07:30

    回帖奖励 +1 魔法币

    涨姿势了!
    使用道具 举报 回复

    回帖奖励 +1 魔法币

    感谢分享
    使用道具 举报 回复
    发表于 2018-11-26 18:30:14

    回帖奖励 +1 魔法币

    可以可以
    使用道具 举报 回复
    发新帖
    您需要登录后才可以回帖 登录 | 立即注册