BUUCTF reverse 刮开有奖

一、刮开有奖

所需工具:

  1. IDA(反编译工具)
  2. exeinfope(查壳工具)
  3. CaptfEncoder(编码转换)

题解:

  1. 拖入exeinfope 检查是否套壳[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传在这里插入图片描述

    发现并没有。

  2. 查看文件是32位还是64位。方法如下:使用记事本直接打开你的exe文件。只要看第二行即可,第二行开头不远处有PE两个字母,再后面两个空格后第三个字符就是标记了,如果是字母L的话,就是32位应用程序,如果是d?就表示是64位应用程序。

  3. 将.exe文件拖入IDA 32中。F5进行反编译。

  4. 在WinMain函数中找到关键函数DialogFunc

    INT_PTR __stdcall DialogFunc(HWND hDlg, UINT a2, WPARAM a3, LPARAM a4)
    {
         
         
      const char *v4; // esi
      const char *v5; // edi
      int v7[2]; // [esp+8h] [ebp-20030h] BYREF
      int v8; // [esp+10h] [ebp-20028h]
      int v9; // [esp+14h] [ebp-20024h]
      int v10; // [esp+18h] [ebp-20020h]
      int v11; // [esp+1Ch] [ebp-2001Ch]
      int v12; // [esp+20h] [ebp-20018h]
      int v13; // [esp+24h] [ebp-20014h]
      int v14; // [esp+28h] [ebp-20010h]
      int v15; // [esp+2Ch] [ebp-2000Ch]
      int v16; // [esp+30h] [ebp-20008h]
      CHAR String[65536]; // [esp+34h] [ebp-20004h] BYREF
      char v18[65536]; // [esp+10034h] [ebp-10004h] BYREF
    
      if ( a2 == 272 )
        return 1;
      if ( a2 != 273 )
        return 0;
      if ( (_WORD)a3 == 1001 )
      {
         
         
        memset(String, 0, 0xFFFFu);
        GetDlgItemTextA(hDlg, 1000, String, 0xFFFF);
        if ( strlen(String) == 8 )
        {
         
         
          v7[0] = 90;
          v7[1] = 74;
          v8 = 83;
          v9 = 69;
          v10 = 67;
          v11 = 97;
          v12 = 78;
          v13 = 72;
          v14 = 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值