吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 27454|回复: 79
收起左侧

[Android 原创] 陕西省网络空间安全技术大赛安卓破解试题分析(二)

  [复制链接]
挥汗如雨 发表于 2017-4-26 23:05
本帖最后由 挥汗如雨 于 2017-12-17 12:50 编辑

陕西省网络空间安全技术大赛安卓破解试题分析(一) 入口:http://www.52pojie.cn/thread-602744-1-1.html


陕西省网络空间安全技术大赛安卓破解试题分析(三) 入口:http://www.52pojie.cn/thread-604320-1-1.html           (作者:@Enigma_G  ,感谢ing


陕西省网络空间安全技术大赛安卓破解试题分析(四) 入口:http://www.52pojie.cn/thread-604822-1-1.html            (作者:@Enigma_G ,感谢ing)


陕西省网络空间安全技术大赛安卓破解试题分析(五) 入口:http://www.52pojie.cn/thread-605059-1-1.html          (作者:@lumou ,感谢ing
=================================================================================
大家的支持是我最大的动力!!!


第二道题下载,百度云链接爱挂,所以用的腾讯云
链接:链接: https://pan.baidu.com/s/1eSNGePW 密码: f3he

看到第一个帖子这么受欢迎,楼主抓紧时间打完第二个题目的思路:

icontest1.jpg
这段英文看不懂也没关系,装上软件一看界面就知道是让求出密码。

01.jpg





老套路,Android kill 打开,反编译进入入口函数:

1.jpg




挨个查看这几个函数:

2.jpg



base64网上解密的很多,百度一个解密一下:

3.jpg




这几个字符解密后好像是:
test  user  2
  什么的,读者可以自己试一下


代入上面的函数,大概意思是  打开test数据库的user表,读取第二行的 birthday



test 文件在     AndroidKiller_v1.3.1\projects\icontest1\Project\assets 目录下  类型为sqllite  楼主用 SQLite Database Browser 2.0 打开

4.jpg



也就是这个:9838e888496bfda98afdbb98a9b9a9d9cdfa29




再看ReadSe方法:

5.jpg


调用了底层 readbin 方法。

IDA F5后:

6.jpg



直接点开第一个函数:

7.jpg

这一串代码,看着就头疼,没办法,再挨个点进去:

8.jpg
看不懂吗?嘿嘿,我也看不懂。IDA对Android提供的底层java类型不支持,需要把a1装换成JNIEnv* 类型




鼠标移到变量a1上面,右键点 Set .....type,改一下

9.jpg
就变成了这个:
10.jpg


是JNi  函数,看不懂的推荐下这个Bog,Jni 常用函数:http://blog.csdn.net/qinjuning/article/details/7595104   和
@Enigma_G
的帖子 http://www.52pojie.cn/thread-603120-1-1.html




剩下的几个函数也用这种方法边查边看,哎,头大。




最后大概看懂了,sub_10F4方法是把a1的 jstring 类型转换成char* 类型。




返回上一个函数,你会惊讶的发现:

11.jpg

readbin 函数多出来了两个参数,里面的方法也有少数变化,去和上面找不同吧。。。。。

这个细节曾经很困扰我,因为java代码里,readbin 函数只有一个参数,但是在.so里面却多出来了两个。

@lumou
感谢他的提醒:

12.jpg
大概是这样,经过Jni 底层调用什么的(我也不太懂JNI,如果有大神懂的话请留言教一下我,谢谢)感谢
@Enigma_G  
在评论区的回复。




点开第二个函数:

13.jpg
明显的算法,再看sub_1078函数:




14.jpg
一目了然,又是一个加密过程,先不管这个,返回去看第三个函数。




15.jpg
将v5重新转为 jstring类型并返回。
PS(如果第一个函数实在看不下去的话,可以通过这个函数猜想之前的是把 jstring 类型转为 char,最后再转回来)




所以,重点关照加密的函数,
敲黑板!!!问:
已知加密函数和加密后的字符串,求加密前的函数?


正常情况都会往逆推方向想(比如第一题),但是,由于这里使用了二重加密(我先加密一次,然后有用函数再进行一次加密),所以逆推的话会非常复杂。

再看一下代码会发现
加密后的字符串,每两个是由一个字符经过 sub_1078 函数后获得的

ASCII
编码范围也就0
~
255,
所以从ASCII字符推出来 加密过后的字符比较方便。




上python 代码:




16.jpg
里面的ord()和chr()函数是将ASCII编码十进制数与字符之间转换的函数,读者可以自行百度,限于篇幅不讲了。




还有!!!语言只是一个工具,其实C语言,JAVA也可以实现,不过对我来说python比较方便,所以才选择了python。




跑出结果:

17.jpg

这个结果输入到应用中,应用会直接退出(其实输入什么都会退出的),也就是
安装了这个软件根本没法运行,猜想大赛
主办方测试的就是在软件有问题的情况下解出密码。。。。。。




===========================================================================================================


陕西省网络空间安全技术大赛安卓破解试题分析(一) 入口:http://www.52pojie.cn/thread-602744-1-1.html




陕西省网络空间安全技术大赛安卓破解试题分析(三) 入口:
http://www.52pojie.cn/thread-604320-1-1.html
        (作者:
@Enigma_G  ,
感谢ing






陕西省网络空间安全技术大赛安卓破解试题分析(四) 入口:
http://www.52pojie.cn/thread-604822-1-1.html          (作者:
@Enigma_G ,
感谢ing)




陕西省网络空间安全技术大赛安卓破解试题分析(五) 入口:
http://www.52pojie.cn/thread-605059-1-1.html         (作者:
@lumou ,
感谢ing

免费评分

参与人数 28吾爱币 +26 热心值 +26 收起 理由
black90 + 1 + 1 已答复!
webmarksman + 1 + 1 谢谢@Thanks!
smilestruggler + 1 + 1 谢谢@Thanks!
Kage + 1 + 1 谢谢@Thanks!
有侠 + 1 用心讨论,共获提升!
迷之裙摆 + 1 + 1 谢谢@Thanks!
Mr.陈先生 + 1 + 1 谢谢@Thanks!
流水 + 1 谢楼主分享,链接失效了,能再分享一次吗
hsia_y + 1 + 1 谢谢@Thanks!
aipanpann + 1 + 1 热心回复!
xuexi= + 1 用心讨论,共获提升!
所幸丶 + 1 + 1 谢谢@Thanks!
23king + 1 + 1 我很赞同!
懒癌萌妹子 + 1 + 1 热心回复!
2225046928 + 1 + 1 感谢您的宝贵建议,我们会努力争取做得更好!
oxxo119 + 1 我很赞同!
文可う润心 + 1 + 1 谢谢@Thanks!
wcj1997 + 1 + 1 已答复!
a2300355a + 1 + 1 热心回复!
1254981099 + 2 + 1 我很赞同!
小奋斗 + 1 + 1 我很赞同!
吾爱_七哥 + 1 + 1 膜拜
lumou + 1 + 1 膜拜大神!
CHEUNGQAZ + 1 热心回复!
HW606 + 1 + 1 热心回复!
请叫我大魔王 + 1 + 1 用心讨论,共获提升!
寻找小乔 + 1 我很赞同!
社会你生哥 + 2 + 1 用心讨论,共获提升!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Enigma_G 发表于 2017-4-27 15:10
挥汗如雨 发表于 2017-4-27 14:48
恩,你的那篇我看过了,写的不错,但是还是搞不懂那个变量为啥多出来两个。。。。

因为你在JNI层的时候需要调用JNINativeInterface结构体的方法,那么首先就需要获得这个结构体,那么第一个参数*env是一个指针,它就指向这个结构体,第二个参数是和java层相对应的,如果java层是一个静态方法,那么你就需要传入jclass类型,如果java层不是静态方法,那么你在java层调用非静态方法是不是要通过对象来调用,那么对应的,JNI也需要传入一个对象,对应的就是一个jobject类型的参数

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
挥汗如雨 + 1 + 1 用心讨论,共获提升!

查看全部评分

头像被屏蔽
seemanglee 发表于 2017-4-26 23:52
wsqqzmjfjq123 发表于 2017-4-27 01:24
dlyanxiaomei 发表于 2017-4-27 06:11
真是,来这个网站知道了不少新东西
SN1t2lO 发表于 2017-4-27 08:04
等楼主更新
jiexia 发表于 2017-4-27 08:17
谢谢分享!加油!!!
KKL 发表于 2017-4-27 08:45
这分享。。。。
While_Shark 发表于 2017-4-27 08:51
感谢分享,ctf比赛这两年是越来越多了。我的战队今天打完比赛,明天又有一场》。。。
寒山远 发表于 2017-4-27 09:32
瞧一瞧,看一看
Suliaoguan 发表于 2017-4-27 09:43
学习了,谢谢分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-3-29 14:08

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表