首页
社区
课程
招聘
[原创]Q2 第六题消失的岛屿解题思路
发表于: 2019-6-16 17:16 2898

[原创]Q2 第六题消失的岛屿解题思路

2019-6-16 17:16
2898


        找到定义,为定义字符串,找到引用,发现为输出字符串。则此处为核心区域。



        阅读后,得知为Base64字符转码,给出转码后的字符串,输入字符串进行转码,转码匹配则破解成功。而要匹配的字符串为:


        即!NGV%,$h1f4S3%2P(hkQ94==

        那么我们需要观察当前转码函数:IDA中汇编代码较长,这里列举出其C语言代码:



       大意如下,字符数组下表为0的字符开始,3个字符为一组,第一个字符x的Ascii码值右移两位,与0x3F进行按位与,得到的值传入CharEncrypt函数进行进一步计算,得到转换码。存入申请的内存base64[i+0]。至于CharEncryp函数,我们将在下面进行介绍。

        计算current,其值等于x左移4位 和0x30按位与的结果。取第二个输入字符y,右移4位,和current进行按位或得到的值,传入CharEncrypt函数进行进一步计算,得到转换码。存入申请的内存[i+1]。

        计算currenta, 其值等于y左移2位和0x3C按位与的结果。取第三个输入字符z, 右移6位,和currenta进行按位或得到的值,传入CharEncrypt函数进行进一步计算,得到转换码。存入申请的内存[i+2]。

        将z和0x3F进行按位与 得到的值,传入CharEncrypt函数进行进一步计算,得到转换码。存入申请的内存[i+3]。

        也就是说输入三个字符得到转换结果位4个字符。


        CharEncrypt函数翻译代码如下:

       

        上面传入的参数其实为一个字符数组下标。即这个字符串:


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2019-8-3 11:47 被Saturn35编辑 ,原因:
上传的附件:
收藏
免费 1
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//