首先用IDA打开,发现有很多while(1),大量代码混淆其中
利用defalt进行控制流平坦化去混淆
找到主函数地址
好了
开始执行
输入 python .\defalt.py hardCpp 0x4007E0
等几分钟后会执行完毕
顺便说一下符号执行的原理
符号执行大概是将内存 寄存器值当成未知变量 就像设一个方程 当成x 往下执行 遇到分支保存一下 尝试各种分支 执行到你想要的地方 后续可以约束求解
好了,我们再打开
逻辑清晰很多了
进行分析
每个函数大概的意思都放在名称上了
分析加密逻辑
解密逻辑
ok
#include
int main(){
int i;
unsigned char enc[] ={0xF3, 0x2E, 0x18, 0x36, 0xE1, 0x4C, 0x22, 0xD1, 0xF9,
0x8C, 0x40, 0x76, 0xF4, 0x0E, 0x00, 0x05, 0xA3, 0x90, 0x0E, 0xA5};
char flag[22];
flag[0]='#';
flag[21]='\0';
for(i = 1;i<21;i++){
flag[i]= ((enc[i-1]^((flag[i-1] ^18)*3 +2))-flag[i-1]%7)^0;
}
puts(flag);
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)