Jarvis OJ 【REVERSE】 Smali

题目:都说学好Smali是学习Android逆向的基础,现在刚好有一个smali文件,大家一起分析一下吧~~

链接:Crackme.smali.36e0f9d764bb17e86d3d0acd49786a18

之前接触过点smali,看下文件就是smali,本来想找smali转java工具,但看了下smali发现几个函数名能推出东西,如下

然后结合smali语法花点时间看了下代码逻辑,大致就是在构造函数中调用GetFlag函数,然后GetFlag中调用decrypt函数,最终输出解密结果。那就要找加密算法和密文,密钥。

首先在constructor中有两个base64,如下:

其中第一个可解码为“phrack  ctf 2016”,第二个解为乱码,这两个很可能就是密钥和密文,然后顺着代码看,果然看到了base64->decode,在decrypt中明示

再对应aes的密钥长度,第一个base64正好对应ascii16byte,然后就可以写解码了:

#-*- coding:utf8 -*-

import base64
from Crypto.Cipher import AES
cipher="sSNnx1UKbYrA1+MOrdtDTA=="
cipher=base64.b64decode(cipher)
key="cGhyYWNrICBjdGYgMjAxNg=="
key=base64.b64decode(key)
cryptor=AES.new(key, AES.MODE_ECB)
plain_text = cryptor.decrypt(cipher)
print(plain_text)

bingo!

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值