reverse-crackme2

博客内容涉及一道逻辑简单的逆向分析题目,通过IDA分析主函数的伪代码,发现用户输入字符串经过sub_4010CD函数的异或加密处理,然后与预设的加密字符串比较。通过跟踪和编写解题脚本,可以得到解密后的flag,注意需要将十六进制转换为字符串。
摘要由CSDN通过智能技术生成

这道题逻辑比较简单,放入ida简单分析就能得到flag

定位主函数后查看伪代码:

int main_0()
{
  signed int i; // [esp+54h] [ebp-14h]
  signed int v2; // [esp+58h] [ebp-10h]
  char *v3; // [esp+5Ch] [ebp-Ch]
  char *v4; // [esp+60h] [ebp-8h]

  v4 = (char *)operator new(0x64u);
  v3 = (char *)operator new(0x64u);
  printf("请输入flag: ");
  sub_40103C(&dword_47AF00, v4);
  v2 = strlen(v4);
  for ( i = 0; i < v2; ++i )
    v3[i] = sub_4010CD(v4[i]);
  v3[i] = 0;
  if ( !strcmp(v3, "10<1<>;?8:%w!##&#q./,x(,((") )
  {
    sub_40117C((int)&unk_47AE70, "Your get the flag,but it ....");
    sub_401131(sub_40107D);
  }
  else
  {
    sub_40117C((int)&unk_47AE70, "Not it..");
  }
  return 0;
}

大致逻辑为:将用户输入的字符串单个字符分别由函数sub_4010CD()处理后在返回到v3,最后v3与字串"10<1<>;?8:%w!##&#q./,x(,(("(加密后的字串)比较后输出相应的结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值