2024春秋蓝桥杯reverse——crackme01

尝试了下输入没有任何反应

查看——32位——IDA打开

我之前没怎么写过win32,所以我开始在string里面找flag,wrong,right什么的字符,都不行

然后我又在函数里面找main,也什么收获的没有,OK废话完了

 在win32里面 关于弹窗的函数:

MessageBox ()

DefWindowProc这个函数是默认的窗口处理函数

ShowWindow(HWND hWnd,int nCmdShow)

我们先找

messagebox(我们动调按的时候,没有弹出来新窗口,所以否定他)

我们看

处理机制,因为他让我们输入,肯定要处理我们输入的数据才行

在第一个函数里面

LRESULT __stdcall sub_A27F0(HWND a1, UINT Msg, WPARAM wParam, unsigned int lParam)
{
  UINT v4; // eax
  LPARAM v5; // edx
  __int16 v6; // bx
  void *v7; // edi
  HDC v9; // esi
  unsigned int v10; // ecx
  __int16 v11; // ax
  unsigned int i; // eax
  int v13; // edi
  int SystemMetrics; // eax
  struct tagRECT v15; // [esp+18h] [ebp-68h] BYREF
  struct tagRECT Rect; // [esp+28h] [ebp-58h] BYREF
  struct tagPAINTSTRUCT Paint; // [esp+38h] [ebp-48h] BYREF

  v4 = Msg;
  v5 = lParam;
  v6 = 0;
  v7 = wParam;
  if ( Msg > 0xF )
  {
    if ( Msg != 4097 )
      return DefWindowProcW(a1, v4, v7, v5);
    v10 = 0;
    do
    {
      v11 = *(wParam + 2 * v10++);
      v6 += v11;
    }
    while ( v10 <= lParam );
    for ( i = 0; i < 44; i += 2 )
      *(&chText + i) ^= v6;
    GetWindowRect(a1, &v15);
    v13 = (v15.left - v15.right + GetSystemMetrics(16)) / 2;
    SystemMetrics = GetSystemMetrics(17);
    SetWindowPos(a1, HWND_MESSAGE|0x2, v13, (v15.top - v15.bottom + SystemMetrics) / 2, -1, -1, 5u);
    SetWindowPos(a1, 0xFFFFFFFE, 0, 0, 0, 0, 3u);
    if ( (v6 & 0xF00) == 0x400 && (v6 & 0xF0) == 0xB0 && (v6 & 6) == 6 )
    {
      ShowWindow(a1, 5);
      UpdateWindow(a1);
    }
    v7 = wParam;
LABEL_18:
    if ( v7 )
      free(v7);
    v5 = lParam;
    v4 = Msg;
    return DefWindowProcW(a1, v4, v7, v5);
  }
  switch ( Msg )
  {
    case 0xFu:
      v9 = BeginPaint(a1, &Paint);
      GetClientRect(a1, &Rect);
      DrawTextW(v9, &chText, -1, &Rect, 0x25u);
      EndPaint(a1, &Paint);
      goto LABEL_18;
    case 1u:
      return 0;
    case 2u:
      PostQuitMessage(0);
      return 0;
  }
  return DefWindowProcW(a1, v4, v7, v5);
}

在这里,improt 里面居然有自定义的变量,这是一个异常点!

我们看CHtext

那个4很奇怪

最后知道这段是dword

师傅给的代码提取

shift+F2

import idc
v=[idc.get_wide_word(i) for i in range(0x002464A0,0x002464Cb,2)]
key = 0x4b6
for i in range(len(v)):
    v[i]=v[i]^key
print(bytes(v))

这里的key就是V6,我们从前面找不到V6的数据,我们往后面看

就可以知道V6=0x4f6

最后得到flag

ICHUNQIU_FE362DBE

下班!

相关推荐

  1. 备考01

    2024-03-14 09:56:02       26 阅读
  2. day01.

    2024-03-14 09:56:02       17 阅读
  3. 刷题day05——2023

    2024-03-14 09:56:02       32 阅读
  4. 题目 1924: -01背包

    2024-03-14 09:56:02       21 阅读
  5. 2024/3/23

    2024-03-14 09:56:02       19 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-14 09:56:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-14 09:56:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-14 09:56:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-14 09:56:02       20 阅读

热门阅读

  1. Elastic boosting的使用

    2024-03-14 09:56:02       19 阅读
  2. vue element input让浏览器不保存密码

    2024-03-14 09:56:02       18 阅读
  3. Redis实现全局唯一id

    2024-03-14 09:56:02       23 阅读
  4. Redisson

    2024-03-14 09:56:02       19 阅读
  5. Http 请求状态码

    2024-03-14 09:56:02       18 阅读
  6. 前端框架的发展史

    2024-03-14 09:56:02       19 阅读
  7. git命令行提交——github

    2024-03-14 09:56:02       23 阅读
  8. react diff 原理

    2024-03-14 09:56:02       21 阅读
  9. C语言下使用SQL语言

    2024-03-14 09:56:02       22 阅读
  10. 探索大语言模型(LLM):部分数据集介绍

    2024-03-14 09:56:02       22 阅读
  11. 同程旅行前端面试汇总

    2024-03-14 09:56:02       21 阅读
  12. 数据结构导航 -- 38篇

    2024-03-14 09:56:02       19 阅读
  13. gen_arrow_contour_xld

    2024-03-14 09:56:02       19 阅读
  14. wayland(xdg_wm_base) + egl + opengles 光照模型实例(十五)

    2024-03-14 09:56:02       23 阅读