おっはラッキー☆!
这道题除去neta部分,我的思路只是想做一个去年re签到的升级版,将去年vvv没加上的smc加上作为今年的re签到。(其实纯难度来说我这题还不算签到..只是不知道为啥没人看那道题目orrzz,后来vvv跟我说了下TLS的具体实现,我逆了一下,发现有一个地方好像可以搞事情,就拿来出题了。
TLS里的反调很好过,这也是想让选手放松警惕(心理学博弈。唯一的坑在于上面说的那个地方藏了一段代码,会判断是否在调试器中,假如判断不过就会将种子换成一个特殊值,使得第二段smc出来的函数的第一个指令为ret让程序不崩。预期解法是选手会发现第二段SMC出来的代码不对,就会去怀疑是不是种子被换了。然后对srand下一个API断点,或是用IDA从start开始看,找到那个相对引用。通过动调就能知道调用的两个函数分别为srand 和 rand,这样就可以将后续的rand值得到,最后的加密就一个换表base64和xor rand(事实证明我不该只用rand的),从而拿到flag。
好玩的地方在于白石的歌(雾),最后知道这个neta的好像只有日本小哥哥呜呜呜
说回题目,最简单的做法就是在歌播放完之后直接attach上去..我想过这种方式,但我想不到有啥简单又隐蔽的方法可以防止orz.最后也有队伍是通过这样做的
还有队伍用ce将代码与xor的结果值dump了下来解出(