## 二进制的艺术 对于逆向而言,一般以算法对程序流的分析为主流,就比如一些加密算法的破解之类的。 举个最简单的例子: ### 异或加密 ```c++ #include #include int main() { char buf[0x100]; int i; puts("Please enter your flag:"); scanf("%255s", buf); for(i = 0; i < strlen(buf); i++) { buf[i] ^= 0x21; } if(strcmp("GM@FZSDWDSRD\\", buf)) { puts("Failed"); } else { puts("Success"); } } ``` 对于这个程序,当我们读懂程序流以后,便能逆向出要输入的正确值。 除了这个还有一些主流的加密算法,压缩算法都是可以进行逆向分析的。