0517 libdroid MyDriver2-397 easy_go攻防世界

0x01
libdroid 攻防世界

工具

dex2jar+jd-gui

思路展开

下载下来附件,改为.zip后缀,解压出来得apk文件,apk文件再改.zip后缀,再解压,得到dex文件,dex2jar反编译,jd-gui打开。
接下来的操作对安卓开发的细节要充分了解,先搁在这,日后跟进。
32C3_this_is_build_for_flag_ship_phones

0x02
MyDriver2-397(windows驱动)

工具

IDA

思路展开

sys后缀,驱动,好吧,我是一脸懵逼。驱动已经提上日程了,还有上面的java的安卓开发(太菜了)。
先去看卸载函数
1
开关内存保护,然后把正确的地址写回去,从这出发,顺着线往上找,发现程序是用inline hook(如何看出inline hook)下图ff25,jmp e9/ff25
2
跳转的硬编码
3
进入sub_114D0
4
统计文件中字符次数,若大于8次,先执行sub_115dc,再执行sub_112b4写入byte_16390。进入sub_112B4
5
看byte_16390怎么来的,找到解密函数:
6
逆向算法解密,v1、v2通过sub_11DF0函数算出,两个参数1546720197和42。
the flag is A_simple_Inline_hook_Drv
逻辑:inline hook ntcreatefile 然后 统计 P_giveMe_flag_233.txt 打开的次数,如果是第九次 那么 就会把flag 写入到txt 里面,由于inlinehook所以不会往里写flag。
另一个思路:
此题从正向出发,先找DriverEntry,看逻辑,也可找到sub_113C8(),分析算法可得(有好几个函数,sub_113C8函数最像计算flag的函数,自己太菜,现在靠猜了,唉)

0x03
easy_go

工具

ida逆向去符号表脚本+gdb

思路展开

ida没符号表(符号表:平常打开ida都有函数名称指示,那个是main函数,那个是打印函数,本题打开发现没有这些指示,所有函数都是sub开头的通用表示,所以用脚本还原这些函数名)
IDA 7.0 如何使用 IDAGolangHelper插件
配置好后,执行脚本还原函数名称,找到main函数。
1
有个红色区域,猜测软件保护技术,所以采用动调,ida动调失败(有ida反调试,但ida改不了跳转,无奈放弃),所以采用gdb调试,在0x495318下断点调试,提示输入时,随便输入,flag就出来了。2
flag{92094daf-33c9-431e-a85a-8bfbd5df98ad}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值