-
-
[分享]KCTF2021,第二题解题过程分享
-
2021-5-12 10:53 4462
-
先拖入OD,整体先了解一下流程,再使用IDA分析逻辑,这题的算法逻辑比较复杂(没看出来是哪个现成的算法),只能一步一步分析了,使用IDA结合OD动态跟踪几次,大概了解了流程,
大致分为2步:
第一步,根据随机规则和关系字典填表(关键逻辑)
(字典:0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ)
第二步:对填写好的表做检查
以上逻辑都是围绕一个9x10的矩阵
目标就是要把里面的0x00全部修改为1
根据程序的随机规则得出以下一条红色路线,这样就能把所有为0x00的位置修改一遍(随机规则有6种case,就是行坐标和列坐标的移动规则)
通过上图的红色路线,可以得到一个从开始到结尾的case数组序列{0x12,0x34,0x32,0x12,0x34,0x32,0x11,0x01,0x21,0x00,0x50,0x54,0x34,0x50,0x50,0x12,0x10,0x12,0x12,0x34,0x32,0x23,0x21},数组的每一个字节(或每一个数组成员)代表2个case,高半字节和低半字节,是由输入密码串的一个字符生成
v10||v7
有了以上case数组、关系字典和生成case的公式,就可以写个简单的程序遍历出case数组对应的输入密码串序列号了
附件是分析的草稿日志记录(很乱)
[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法
赞赏
谁下载
看原图