Reverse: Level1 Cracked by Eswink

逆向工程:level1 破解指南

信息标志:SYC{ppxdtedZrekKSpAMeqzNoewKQjEFTOMaFNCQiLeMFGg}

必要工具

  • IDA 7.5 linux 破解版(由ericyudatou提供)
  • Pwntools
  • pycharmpython3
  • 调试环境:Linux Kali 5.10.0-kali9-amd64

反编译检测: 程序架构信息:

  • 目标程序为64位程序,选择使用IDA x64反编译该程序,并且跟随来到level1()函数入口,F5转换为伪代码,并对变量进行重命名,便于分析。

主要代码分析:

  • __readfsqword用于本地反调试,远程调试即可解决此问题。
  • 循环中的异或操作,可由密文再次异或得到明文,并且位置不受影响,遵循交换律,如:a ^ b = b ^ a。
  • 异或后,再与.data中的compare_data内存比较,如果相同则提示:You Win。
  • 在IDA中,提取compare_data中的内容,并且转换为Python List,便于接下来的还原。

逆向脚本: 脚本语言:Python3

data = [13, 5, 137, 179, 22, 20, 106, 116, 250, 233, 94, 98, 164, 177, 41, 11, 173, 140, 43, 37, 99, 117, 200, 254, 65, 73, 173, 147, 39, 30, 167, 166, 202, 211, 71, 105, 224, 234, 17, 1, 167, 128, 31, 53, 80, 83, 229, 253]

运行该脚本后,即可得到对应的Flag:

SYC{ppxdtedZrekKSpAMeqzNoewKQjEFTOMaFNCQiLeMFGg}

结果验证: 将得到的Flag的值输入,最后得到正确结果。

Reverse: Level1 Cracked by Eswink

Reverse: Level1 Cracked by Eswink

Reverse: Level1 Cracked by Eswink

反思与建议: 当ASCII大于127并且需要将其转换为可视字符,需要%128再进行转换。异或运算,明文秘钥和密文相互转换,知道其二可求其一。

© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享