-
-
[原创]看雪CTF2017第8题
-
发表于:
2017-6-16 01:41
4409
-
1. TlsCallback
创建了6个线程, 前3个线程是负责smc解码的, 后3个线程没用
线程1: 解码004025DC处的跳转及check1函数
线程2: 解码0040263C处的跳转及check2函数
线程3: 解码0040269C处的跳转及check3函数
2. 主流程
一个自定义的虚拟机
校验函数
检测代码改动
sn=base64_decode(sn)
sn的格式(共90位): (20位)--(39位)--(27位)
校验前20位
(sn1 xor abcdefg...) * 98765432109876543210123 == 1549780652036258484424751705102781884386113
校验中间39位
(sn2 xor abcdefg...) ^ 2 == 13095069099216326605010245808779535277211541324456558063162414338128147458401
检验后27位, sn3视为16进制
sn3 ^ 15691529100101820131 mod 114433688655117320765854989491151409201 == 71639176673360967005214790689576394595
sn3作为16进制转换的时候是有符号转换的, 所以导致>=80的值无法正常转换
这里只需要关心能产生0x00的值即可(有挺多个, 如0x89)
3. 后27位计算
已知:
e = 15691529100101820131
n = 114433688655117320765854989491151409201
m = 71639176673360967005214790689576394595
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!