首页
社区
课程
招聘
[原创]RC4、Base64魔改看雪CTF-变形金刚学习笔记
发表于: 2020-10-7 11:27 14967

[原创]RC4、Base64魔改看雪CTF-变形金刚学习笔记

2020-10-7 11:27
14967

最近在研究某某app的数据库,发现自己在so层的调试比较薄弱,专门找了看雪的CTF-变形金刚来学习。希望在用ida调试so方面有所突破。

利用国庆期间整理成笔记。技术不成熟或许描述的不够清晰请大伙见谅。

也拜读了几位大佬的文章。


为了熟悉该app,先介绍一下大神分析后的结果。

输入错误密码截图

比如输入密码是:12345678,会提示错误信息:Transformers:error




输入正确密码截图

输入密码(长度16个字符)是:fu0kzHp2aqtZAuY6,会提示错误信息:Transformers:flag{android4-9}





把Transformers.apk拖入jadx

障眼法1:该app设计作者采用了障眼法,很容易欺骗分析人员,让我们认为OnClick的回调处理逻辑在MainActivity中。

障眼法2:在MainActivity的OnCreate中欺骗代码注册OnClick回调。主要原理是利用Activity的onStart事件会晚与OnCreate事件,从而实现在OnStart中注册的OnClick回调覆盖了OnCreate中注册的回调。







Activity基类的onStart才是真正注册OnClick回调的地方






为了方便理解eq中涉及的魔改的Base64编码,这里先贴上一直Base64解码的草稿图

下图是Base64编码4个字符'{6*的解码草稿图,画的不是很好,主要是方便我自己理解写解码Base64的逻辑代码。






它是用64个可打印字符表示二进制所有数据方法。由于2的6次方等于64,所以可以用每6个位元为一个单元,对应某个可打印字符。我们知道三个字节有24个位元,就可以刚好对应于4个Base64单元,即3个字节需要用4个Base64的可打印字符来表示。





这里将分3个关键步骤:

这里先列一下分析结果




1:搜索JNI_OnLoad,双击进入函数体

2:导入Jni.h文件。菜单路径:ida/File/Load file/Parse C header file

3:修改参数类型为_JavaVM

4:按g快捷键直接跳转到0x4014





off_4010即可看到注册的函数


找到eq注册对应的sub_784函数




当然frida的hook_art_so_register.js脚本快速定位eq对应sub_784

该脚本通过hook art.so 的register函数,打印动态注册的地址


或直接在fini_array初始化数据中可以看到




另外根据so文件的加载流程应该是先加载init_array,然后是JNI_OnLoad

ida 中ctrl+s 进入init_array,会先执行.datadiv_decode5009363700628197108,其实就是通过一些运算得到一些初始化数据。





[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2020-10-7 12:42 被younghare编辑 ,原因:
收藏
免费 7
支持
分享
最新回复 (8)
雪    币: 27
活跃值: (1638)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
感谢楼主,光这个注释写的都费心血了,幸苦了
2020-10-7 12:11
0
雪    币: 3372
活跃值: (757)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
3
感谢分享,楼主辛苦了
2020-10-7 16:33
0
雪    币: 6573
活跃值: (3873)
能力值: (RANK:200 )
在线值:
发帖
回帖
粉丝
4
感谢分享,非常好! 
2020-10-9 15:04
0
雪    币: 20
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
5
写的很全了。。每一步操作都写了。这个就很难!
2020-10-12 22:15
0
雪    币: 1636
活跃值: (653)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
十分详细
2020-11-4 00:00
0
雪    币: 2677
活跃值: (5340)
能力值: ( LV10,RANK:177 )
在线值:
发帖
回帖
粉丝
7
大佬,能放个附件吗
2020-11-15 20:32
0
雪    币: 290
活跃值: (1249)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
真详细  赞
2021-2-28 17:32
1
雪    币: 431
活跃值: (1750)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
9
顺便记录一下md5魔改文章 :https://www.qinless.com/1181
2023-5-23 09:26
0
游客
登录 | 注册 方可回帖
返回
//