-
-
[分享]第五题:申时·忆海倒带 writeup
-
发表于: 21小时前 117
-
附件中的 readme.txt 只说明了文件 SHA1 和判胜条件:
目标是分析 D:\cm\cm.exe,得到 88 位十六进制序列号。
程序要求输入 88 个十六进制字符,解码后得到 44 字节。
设解码后的字节为 buf[44]。
在 0x4041bc 附近,程序对 44 字节执行异或,结果必须为:
在 0x404218 附近,程序执行:
实际有效输入位于校验区域开头,后续区域为零,因此最终要求:
主循环位于 0x40450d:
查表对象大致为:
0x404870 的关键逻辑是:
注意这里的 jb 是无符号比较,但对于有效输入 0x01..0x80,index 为 0..0x7f,会进入排列查表分支。
从 perm 和 data 中反查目标字符串:
得到最终查表输入:
也就是:
前 28 字节直接来自输入,最后 16 字节会在后续变换中被覆盖。
尾部变换函数位于 0x403500。
输入序列号的最后 16 字节会先被转成 32 个 ASCII 十六进制字符,再解析为大整数,执行 RSA 模幂:
从静态数据中恢复参数:
因式分解:
计算私钥指数:
目标查表输入的最后 16 字节为:
因此反解:
尾部原始 16 字节为:
前 28 字节为:
尾部 16 字节为:
赞赏
他的文章
赞赏
雪币:
留言: