简单算法逆向
本文分析的是《C++反汇编与逆向分析技术》第四章例子Crackme.exe
工具 IDA
1.参数及局部变量定义
2.开辟14字节数组;把输入的密码加密后存在数组中;
加密过程没看懂,好吧
在转换过程中有一个对2取模运算,因为对有符号数模2只有-1,0,1三种结果,编译器进行了优化,与0x80000001进行与运算,这个有符号数只会保留最高位和最低位
,若数字为奇数,最低位为1,符号位也会保留,同理符号位保留,所以如果结过是-1,and运算后的0x80000001需要转换成-1的补码
还原的C++源代码