将exe文件拖入IDA 按shift+F12查看可疑字符串
这里发现了一个疑似flag的字符串
双击点进去 F5查看伪c代码
这里看到了源代码
这段伪C代码是一个典型的Windows对话框回调函数(Dialog Procedure),用于处理对话框中的消息。在Windows编程中,对话框回调函数是处理对话框内控件(如按钮、文本框等)事件的函数。这个函数通过接收四个参数来工作:对话框的句柄(HWND hWnd
)、消息类型(UINT a2
)、消息相关的附加信息(WPARAM a3
)、以及另一个附加信息(LPARAM a4
,通常用于指向数据的指针)。
重点应该是sprintf函数 那么sprintf函数有什么作用呢?
sprintf()函数最常见的应用是把整数打印到字符串当中,sprintf()为变参函数。它的功能是将各种类型的数据格式化为字符串,并存储到一个字符数组中。
这行代码的作用是将两个整数(19999
和 0
)以及一个固定的字符串("2069a45792d233ac"
)按照指定的格式插入到String
数组中。格式字符串" BJD{%d%d2069a45792d233ac}"
中的%d
是格式说明符,用于表示整数。sprintf
函数会依次替换格式字符串中的%d
为后面参数列表中的整数。
BJD{1999902069a45792d233ac}
将BJD去掉并用flag包裹得到flag