revvverse
先判断flag格式, 然后取中间
2字节2字节的取, 类似于atoi的转化.比如aabb 转化为0xaa 0xbb
1 | sub_47C0D0(dest, v65, (__int64)v65); |
异或加密, 调试可以发现异或的数据是(不会因为输入发生变化)
1 | 0x7c, 0x55, 0x3b, 0xf4, 0xcb, 0x74, 0x38, 0xea, 0x2b, 0xeb, 0xa8, 0x67, 0x5d, 0x13, 0x9c, 0xbb. |
接下来是对密钥和IV进行生成, 直接跑, 然后看内存就行了.
1 | 密钥0xC4, 0x92, 0xA1, 0x76, 0x2F, 0x26, 0x0E, 0x6F, 0x3B, 0xBF, 0xA4, 0xE9, 0xDB, 0x54, 0x25, 0x4E |
密文
1 | 0x16, 0xF0, 0x3F, 0x5B, 0x38, 0xB9, 0x80, 0x90 |
观察字符串, 看起来很像是des加密, 多次尝试之后, 发现不是, 密钥长度也不对3des也不对, 用findcrypto插件可以找有AES. 试试了一下, 果然是.
AES解密后
1 | 0x5F,0x79,0x3D,0x30,0xA1,0xA9,0xDD,0x85,0xC1,0x20,0x05,0xE3,0xE6,0x1A,0xF3,0x7A |
解密脚本:
1 | #include<iostream> |
如果您喜欢此博客或发现它对您有用,则欢迎对此发表评论。 也欢迎您共享此博客,以便更多人可以参与。 如果博客中使用的图像侵犯了您的版权,请与作者联系以将其删除。 谢谢 !