[SUCTF2019]hardcpp

[SUCTF2019]hardcpp,第1张

首先用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); 
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/916314.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-16
下一篇 2022-05-16

发表评论

登录后才能评论

评论列表(0条)

保存