这个题当时是最后两个小时有思路(多亏了咱们的王杰gg),虽然最后没做出来,最后知道了sm4加密,也知道了密钥,结果没找到密文(其实找到了,一串16进制数据,本来以为是要转换成ascii字符,结果16进制本身就是密文...还是做的题不够多...)
先是jadx反编译打开之后,开始找程序入口点,即MainActivity,然后找onclick事件,然后一直找一直到找到check检查函数,但是里面只有几行,有个cma
点开byte_C14数组之后有一大串字符串(其实这去掉0x,提取出来就是密文,但当时可能脑袋宕机了,一直觉得还要再处理一下,然后一直找处理函数)
然后点开sub_904函数,其实当时是看不懂的,但是有ai助我,大致分析了一下应该是sm4加密(可能是与bswap32这个函数有关)
然后开始找密钥
这个的意思就是将原本aA21数组的后八位改成Z0099864,但是要注意的是这里是小端存储,所以要倒着填充后八位,所以实际密钥就是A900Z,刚好16位,128bit
然后直接用密钥对那一串16进制解密就行(就败在最后一步了,桑心~)
ida64位打开
根据题目提示得知是对flag四段加密,ida反编译有四个return 1,应该就是四段加密
这一段就是对flag前八位加密,就是很简单的直接密文除2就行,直接上脚本
点击查看代码
点击查看代码
这个就是base64换表(前面短一个C,需要补一下),然后在线网站解密即可
然后base64解码
第四段:
第四段就是AES_set_encrypt_key函数使用AesMasterAesMast生成一个密钥,然后AES_encrypt函数在根据密钥去加密,最后将加密后的内容hex_to_string处理后与v4数组匹配,所以其实v8其实并没有上面用,就是单纯的充当了一个明文的存在,所以写脚本逆向即可
点击查看代码
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/jszy-zyjn/69657.html