首页
社区
课程
招聘
[原创]初试so文件解密
发表于: 2020-7-7 13:57 8148

[原创]初试so文件解密

2020-7-7 13:57
8148

    这里是2W班5月的习题。题目中对一个native函数进行了加密,导致IDA无法看到运行时的代码。加密方式来自于论坛比较久的帖子ThomasKing大佬的简单粗暴的so加解密实现 。照搬了大佬的代码,然后修改了一下加密方式即可完成解密。


    通过本题学习到了so文件的格式解析,基础的加解密思路。


步骤1:尝试用Fart脱壳

顺利完成,查找相关dex

sailfish:/data/data/com.kanxue.test # grep -ril "MainActivity" ./*.txt

./2203744_classlist.txt

./2203744_classlist_execute.txt

拷贝出2203744大小的dex


步骤2:查看Java层代码

OnCreate去绑定事件,test函数进行的字符串比较


步骤3:查看so文件中test的代码

addr_RegisterNatives: test

addr_RegisterNatives: (Ljava/lang/Object;)Z

addr_RegisterNatives func: 0x8dc5

test是动态注册的,注册地址是0x8dc5

反汇编代码比较奇怪


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 3
支持
分享
最新回复 (5)
雪    币: 4883
活跃值: (18890)
能力值: ( LV13,RANK:317 )
在线值:
发帖
回帖
粉丝
2
感谢分享~
2020-7-7 14:42
0
雪    币: 280
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
3
66666,感谢分享
2020-7-7 18:06
0
雪    币: 236
活跃值: (361)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
感谢大佬分享
2020-7-7 19:57
0
雪    币: 3213
活跃值: (5439)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
加企鹅好友,聊天,340320052
2020-7-8 18:20
0
雪    币: 8285
活跃值: (4710)
能力值: ( LV8,RANK:134 )
在线值:
发帖
回帖
粉丝
6
对于APK的逆向来说,第一步往往就是先完成对app中java代码的脱壳;接下来要做的就是静态的逆向分析或者是结合动态的hook等对运行逻辑进行分析;最后,难度大一些的app往往就会进入到so中的函数当中,安全强度大的app甚至是会再次对so进行加壳。但不论是dex的脱壳,还是so的脱壳,时机都是非常关键的。时机不对,即使是正确的内存地址偏移,dump得到的smali指令流以及汇编代码都可能是不对的,依然是未解密的字节流。这道题考察的是对elf文件的结构知识的掌握。这个app对so中函数进行了保护,在被保护的函数的关键逻辑执行前进行解密,执行结束后会再次对关键逻辑进行加密。这位学员有着扎实的基本功,才能够快速抓住重点,成功拿下flag
2020-7-29 16:10
0
游客
登录 | 注册 方可回帖
返回
//