-
-
[原创]解题过程:签到题 身在何处
-
发表于: 2021-11-30 09:54 2961
-
首先,DIE检测一下程序是否加壳及其类型是32位还是64位。
然后,用提供的序列号运行,看一下效果。
接着IDA,寻找关键字符串Success!
通过“交叉引用”跳转到函数位置。
执行F5伪代码。
找到第一个关键点:v2 = calc_YongHuMing(&ch_YongHuMing, len_YongHuMing),// 这里引入了用户名的计算
用VSCODE的原因是,它的启动速度比VS快,VS的加载项太多了。
得到了各自得到哈希值:
01F845C5B7C52E56 | 744E1CC7 |
KCTF | 5EE54F4C |
用OD运行程序:通过字符串快速定位,因为字符串在很前面,可以不用等待 执行搜索一会就手动取消。
往上对照IDA的流程图,找到各个功能,注意在这里不能根据伪代码来,因为实际流程可能和伪代码的写法顺序有差异。
继续,分析得到后面执行了这样的操作:
哈希
01F845C5B7C52E56 | 744E1CC7 |
KCTF | 5EE54F4C |
整型转十六进制
653259165 | 26EFF19D |
异或操作:
int x = 0x744E1CC7 ^ 0x26EFF19D;
x = 52A1ED5A
到这里原理已经清晰了!
SHA(用户名)^HEX(序列号)= 52A1ED5A就满足要求了。
现在已知SHA(KCTF)求序列号,即序列号=十进制(52A1ED5A^ SHA(KCTF))。
过关!
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
赞赏
看原图
赞赏
雪币:
留言: