简单MFC程序开发-C++反编译肉鸡养成

Posted 向往生

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简单MFC程序开发-C++反编译肉鸡养成相关的知识,希望对你有一定的参考价值。

目录

一、需求

二、程序效果

效果1:鼠标左键点击,显示坐标

效果2:按下按键,显示键值

三、实现过程

1.创建MFC程序

2.修改添加功能

2.1 修改标题

2.2 增加鼠标消息

 2.3 增加键盘消息

 2.4 显示文字函数

2.5 编译生成exe


一、需求

     为了更好的理解MFC(C++)程序的结构,拆解方法,需要首先创建一个MFC窗口程序,对于只了解一点C++的工程师来说,走一遍MFC程序开发的流程,是很有必有的,无奈C++开发工具的版本太多,很难找到visual studio 2022版本的,因此有必要写一写。

二、程序效果

效果1:鼠标左键点击,显示坐标

效果2:按下按键,显示键值

三、实现过程

1.创建MFC程序

打开visual studio 2022选择创建MFC程序。

选择单个文档,MFC标准界面

会看到产生了5个类其中MainFrame是主窗体,view是类似窗体上的画布。

2.修改添加功能

2.1 修改标题

不像基于对话框的窗体,可以在属性页面直接更改标题,需要在窗体创建前的PreCreateWindow里初始化窗体名称,但要先取消默认窗体的设置。

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)//更改窗体的一些参数

	

	if( !CFrameWnd::PreCreateWindow(cs) )
		return FALSE;
	// TODO: 在此处通过修改
	//  CREATESTRUCT cs 来修改窗口类或样式

	cs.style &= ~FWS_ADDTOTITLE;/*在单文档的界面中,程序默认的窗口样式是WS_OVERLAPPEDWINDOW和FWS_ADDTOTITLE,
								FWS_ADDTOTITLE是MFC特定的一种样式,指示框架将文档标题添加到窗口标题之上,如果
								想让窗口显示自己的标题,只需要将窗口的FWS_ADDTOTITLE样式去掉即可。*/
	cs.lpszName = TEXT("Hali-- C++反编译demo程序");

	return TRUE;

2.2 增加鼠标消息

        这一个实例主要是运用MFC的消息机制,因此选择类,开启监听的消息类别(如WM_LBUTTONUP),创建该类消息的处理函数(如OnLButtonUp),添加方法为:

修改代码:

void CMFCApplication5View::OnLButtonUp(UINT nFlags, CPoint point)

	// TODO: 在此添加消息处理程序代码和/或调用默认值

	CString key;
	key.Format(TEXT("X is %d ,Y is %d"), point.x,point.y);
	MessageBox(key);
	CView::OnLButtonUp(nFlags, point);

 2.3 增加键盘消息

键盘事件是WM_CHAR(),处理函数默认为onChar(),添加方法为:

修改代码:

void CMFCApplication5View::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)

	// TODO: 在此添加消息处理程序代码和/或调用默认值

	CString key;
	key.Format(TEXT("KEY Is %c"),nChar);
	MessageBox(key);

	CView::OnChar(nChar, nRepCnt, nFlags);

 2.4 显示文字函数

        显示文件的事件为PAINT或者DRAW,添加方法为:

 添加代码:

void CMFCApplication5View::OnPaint()

	CPaintDC dc(this); // device context for painting
					   // TODO: 在此处添加消息处理程序代码
					   // 不为绘图消息调用 CView::OnPaint()
	dc.TextOutW(10, 20, TEXT("Hali onpaint C++"));

2.5 编译生成exe

选择Debug、X86模式编译,生成鲜美的MFC肉鸡,准备投入IDA进行分析。

四、启动反编译观察exe

以上是关于简单MFC程序开发-C++反编译肉鸡养成的主要内容,如果未能解决你的问题,请参考以下文章

C++程序正向编译逆向反编译

C++程序正向编译Ghidra逆向反编译

c++代码反编译

c语言的反编译问题

用C语言编写了一个程序,源代码和工程文件都弄丢了,只剩下.exe的二进制程序文件。怎么反编译出.c

反编译 c dll 以使用 pinvoke