吾爱汇编

 找回密码
 立即注册

QQ登录

绑定QQ避免忘记帐号

查看: 4856|回复: 88

[安卓逆向图文] CTF实战分析

  [复制链接]
今儿真高兴 发表于 2020-1-7 10:58 | 显示全部楼层 |阅读模式

[color=rgba(0, 0, 0, 0.56)]我这里就拿国内一家安全公司出的一个入门级app的题目做分析

[color=rgba(0, 0, 0, 0.56)]  要求如下:

[color=rgba(0, 0, 0, 0.56)]         1.有壳就脱壳   2.拿到此题的Flag



[color=rgba(0, 0, 0, 0.56)]


                               
登录/注册后可看大图

[color=rgba(0, 0, 0, 0.56)]首先拿到一个app用工具查一下 这里提示没有壳


[color=rgba(0, 0, 0, 0.56)]那么我们安装一下看一下软件页面

[color=rgba(0, 0, 0, 0.56)]


                               
登录/注册后可看大图


[color=rgba(0, 0, 0, 0.56)]一打开就是如此   两个编辑框  然后点击登陆就跳转到另一个页面提示”Waiting fot you!”


[color=rgba(0, 0, 0, 0.56)]既然如此  打开jadx-gui工具反编译一波 从java层入手


[color=rgba(0, 0, 0, 0.56)]首先找到他的”AndroidManifest.xml” 里面有个”activity”标签里面就是他的活动页面的信息

[color=rgba(0, 0, 0, 0.56)]


                               
登录/注册后可看大图



[color=rgba(0, 0, 0, 0.56)]可以看到这里有3个活动页面信息

[color=rgba(0, 0, 0, 0.56)]<action android:name="android.intent.action.MAIN"/>

[color=rgba(0, 0, 0, 0.56)]<category android:name="android.intent.category.LAUNCHER"/>

[color=rgba(0, 0, 0, 0.56)]有这两个属性的值上面的活动页面就是我们的入口页面(一开打软件所显示的页面信息)


[color=rgba(0, 0, 0, 0.56)]既然如此我们之前看到过有个登陆的按钮在一启动的活动下   

[color=rgba(0, 0, 0, 0.56)]那么我们到此活动页面看一下按钮下的逻辑事件(“com.tencent.testvuln.MainActivity”)

[color=rgba(0, 0, 0, 0.56)]


                               
登录/注册后可看大图


[color=rgba(0, 0, 0, 0.56)]来到这个类里面找到按钮点击事件 也就是onClick事件下



[color=rgba(0, 0, 0, 0.56)]


                               
登录/注册后可看大图

[color=rgba(0, 0, 0, 0.56)]首先一个switch语句获取view.id 进入第一个分支也就是 case R.id.button1


[color=rgba(0, 0, 0, 0.56)]然后接着判断我们输入的内容是不是为空 或者说输入的长度是否为0  如果条件成立就进行一个弹窗提示我们输入的内容”不能为空”


[color=rgba(0, 0, 0, 0.56)]然后定义两个string类型的变量接收我们输入的内容

[color=rgba(0, 0, 0, 0.56)]Obj是第一个编辑框的内容  obj2是第二个编辑框的内容


[color=rgba(0, 0, 0, 0.56)]然后startActivity跳转到另一个活动页面也就是”SecondActivity”并将我们输入的内容也传递过来  然后在onCreate初始化函数进行判断


[color=rgba(0, 0, 0, 0.56)]


                               
登录/注册后可看大图

[color=rgba(0, 0, 0, 0.56)]这一块儿的逻辑就很清晰了


[color=rgba(0, 0, 0, 0.56)]if (Encryto.doRawData(this, stringExtra + stringExtra2).equals("VEIzd/V2UPYNdn/bxH3Xig=="))


[color=rgba(0, 0, 0, 0.56)]所有的比较逻辑都是在这里了


[color=rgba(0, 0, 0, 0.56)]调用一个Encryto类下的doRawData将this 以及stringExtra + stringExtra2).equals("VEIzd/V2UPYNdn/bxH3Xig=="传递进去


[color=rgba(0, 0, 0, 0.56)]我们现在跟踪到doRawData方法

[color=rgba(0, 0, 0, 0.56)]


                               
登录/注册后可看大图

[color=rgba(0, 0, 0, 0.56)]发现System.loadLibrary("JNIEncrypt");   加载了这样一个so库  此方法也是由native关键词所修饰的


[color=rgba(0, 0, 0, 0.56)]那么打开此app的lib文件夹发现也只有一个so文件库


[color=rgba(0, 0, 0, 0.56)]


                               
登录/注册后可看大图

[color=rgba(0, 0, 0, 0.56)]拿出我们的ida工具反编译一波先

[color=rgba(0, 0, 0, 0.56)]


                               
登录/注册后可看大图

[color=rgba(0, 0, 0, 0.56)]发现并没有java_ 静态注册的方法那么我们也只能找到JNI_OnLoad动态注册的位置

[color=rgba(0, 0, 0, 0.56)]


                               
登录/注册后可看大图

[color=rgba(0, 0, 0, 0.56)]来到了

[color=rgba(0, 0, 0, 0.56)]


                               
登录/注册后可看大图

[color=rgba(0, 0, 0, 0.56)]RegisterNatives就是注册的函数 他的第三个参数就是我们要找到的方法体  第四个参数就是他注册的个数


[color=rgba(0, 0, 0, 0.56)]


                               
登录/注册后可看大图


[color=rgba(0, 0, 0, 0.56)]


                               
登录/注册后可看大图

[color=rgba(0, 0, 0, 0.56)]然后我们一步步跟踪到了这里  发现采用了一个AES/ECB/PKCS5Padding的加密方式


[color=rgba(0, 0, 0, 0.56)]Key勒就摆在面前的”thisisatestkey==”


[color=rgba(0, 0, 0, 0.56)]然后我们来解密一波

[color=rgba(0, 0, 0, 0.56)]将VEIzd/V2UPYNdn/bxH3Xig==  解密得出”aimagetencent”

[color=rgba(0, 0, 0, 0.56)]


                               
登录/注册后可看大图


[color=rgba(0, 0, 0, 0.56)]第三个页面这里会解密一个9YuQ2dk8CSaCe7DTAmaqAA==值

[color=rgba(0, 0, 0, 0.56)]


                               
登录/注册后可看大图

[color=rgba(0, 0, 0, 0.56)]将9YuQ2dk8CSaCe7DTAmaqAA==  解密得出”Cas3_0f_A_CAK3”

[color=rgba(0, 0, 0, 0.56)]


                               
登录/注册后可看大图

评分

参与人数 21HB +18 THX +9 收起 理由
lies + 1
花盗睡鼠 + 2 + 1 [吾爱汇编论坛52HB.COM]-软件反汇编逆向分析,软件安全必不可少!
magicwk + 1
虚心学习 + 1 [吾爱汇编论坛52HB.COM]-软件反汇编逆向分析,软件安全必不可少!
后学真 + 1
消逝的过去 + 2
冷亦飞 + 1
三月十六 + 1
zyyujq + 1 + 1
kkk1l + 1
xgbnapsua + 1
小菜虫 + 1 [吾爱汇编论坛52HB.COM]-感谢楼主热心分享,小小评分不成敬意!
liugu0hai + 1 [吾爱汇编论坛52HB.COM]-软件反汇编逆向分析,软件安全必不可少!
zwj00544 + 1 + 1
272089993 + 1
MoeRay + 1
成丰羽 + 1 [吾爱汇编论坛52HB.COM]-感谢楼主热心分享,小小评分不成敬意!
ldljlzw + 1
playboy + 1
拿着雪糕 + 1
hysmy17 + 1 + 1 [快捷评语]--评分=感恩!简单却充满爱!感谢您的作品!

查看全部评分

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
yuhan520 发表于 2020-4-27 16:37 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
黑冰Lisa 发表于 2020-9-9 14:26 | 显示全部楼层

这道题so没有加密,降低了难度
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
拿着雪糕 发表于 2022-2-3 10:48 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
fFEH0 发表于 2022-3-1 01:17 | 显示全部楼层

学习永不停歇
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
EJxhTi512 发表于 2022-3-4 22:00 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
fVULon 发表于 2022-3-4 22:00 | 显示全部楼层

感谢楼主
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
ghostxu 发表于 2022-3-4 22:00 | 显示全部楼层

感谢发布原创作品!
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
WXRTMEJ 发表于 2022-3-6 12:53 | 显示全部楼层

Thanks~ 向楼主致敬!
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
rauiM 发表于 2022-3-8 01:27 | 显示全部楼层

谢谢分享
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

警告:本站严惩灌水回复,尊重自己从尊重他人开始!

1层
2层
3层
4层
5层
6层
7层
8层
9层
10层

免责声明

吾爱汇编(www.52hb.com)所讨论的技术及相关工具仅限用于研究学习,皆在提高软件产品的安全性,严禁用于不良动机。任何个人、团体、组织不得将其用于非法目的,否则,一切后果自行承担。吾爱汇编不承担任何因为技术滥用所产生的连带责任。吾爱汇编内容源于网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除。如有侵权请邮件或微信与我们联系处理。

站长邮箱:SharkHeng@sina.com
站长QQ:1140549900


QQ|RSS|手机版|小黑屋|帮助|吾爱汇编 ( 京公网安备11011502005403号 , 京ICP备20003498号-6 )|网站地图

Powered by Discuz!

吾爱汇编 www.52hb.com

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