DDR爱好者之家 Design By 杰米

学破解第147天,《教你零基础一句代码制作自己的工具箱》学习

前言:
  从小学到大专(计算机网络技术专业),玩过去的,所以学习成绩惨不忍睹,什么证书也没考,直到找不到工作才后悔,不知道怎么办才好。

  2017年12月16日,通过19元注册码注册论坛账号,开始做伸手党,潜水一年多,上来就是找软件。(拿论坛高大上的软件出去装X)

  2018年8月10日,报名了华中科技大学网络教育本科(计算机科学与技术专业)2018级秋季。(开始提升学历)

  2019年6月17日,不愿再做小菜鸟一枚,开始零基础学习破解。(感谢小糊涂虫大哥在我刚开始学习脱壳时,录制视频解答我的问题)

  2020年7月7日,感谢H大对我的鼓励,拥有了第一篇获得优秀的文章。(接下来希望学习逆向,逆天改命)

  2021年8月11日,华科学位英语2次不过,仅取得了毕业证书,学业提升失败,开始琢磨考注册类和职称类证书,谋求涨薪

  坛友们,年轻就是资本,和我一起逆天改命吧,我的学习过程全部记录及学习资源:https://www.52pojie.cn/thread-1503734-1-1.html
立帖为证!--------记录学习的点点滴滴

0x1 创建一个默认的MFC程序

  1.第一步新建MFC项目
学破解第147天,《教你零基础一句代码制作自己的工具箱V1.0》学习

  2.点下一步,选择基于对话框,同时选择在静态库中使用MFC,这是生成代码时打包静态库,方便其他电脑上运行。
学破解第147天,《教你零基础一句代码制作自己的工具箱V1.0》学习

  3.选择主框架样式,修改程序的标题,直接点完成项目就被创建好了。
学破解第147天,《教你零基础一句代码制作自己的工具箱V1.0》学习

  4.打开资源文件,del删除里面的内容。
学破解第147天,《教你零基础一句代码制作自己的工具箱V1.0》学习

0x2 添加工具

  1.视图-工具箱,添加一个button,单击,修改caption为计算机:
学破解第147天,《教你零基础一句代码制作自己的工具箱V1.0》学习

  2.双击进去,看到:

void CMFC_MyToolDlg::OnBnClickedButton1(){    // TODO: 在此添加控件通知处理程序代码}

  3.添加inExec("calc.exe", SW_SHOWNORMAL);代码,保存,生成程序,点击计算器,成功打开了计算器。
学破解第147天,《教你零基础一句代码制作自己的工具箱V1.0》学习

  4.重复上面步骤,就可以完成工具箱的打造了。

//计算器void CMFC_MyToolDlg::OnBnClickedButton1(){    // TODO: 在此添加控件通知处理程序代码    ShellExecute(NULL, "open", "calc", "","", SW_SHOWNORMAL);}//画图void CMFC_MyToolDlg::OnBnClickedButton5(){    // TODO: 在此添加控件通知处理程序代码    ShellExecute(NULL, "open", "mspaint", "", "", SW_SHOWNORMAL);}//截图工具void CMFC_MyToolDlg::OnBnClickedButton9(){    // TODO: 在此添加控件通知处理程序代码    ShellExecute(NULL, "open", TEXT("snippingTool"), "", "", SW_SHOWNORMAL);}//记事本void CMFC_MyToolDlg::OnBnClickedButton13(){    // TODO: 在此添加控件通知处理程序代码    ShellExecute(NULL, "open", "notepad", "", "", SW_SHOWNORMAL);}//系统配置void CMFC_MyToolDlg::OnBnClickedButton2(){    // TODO: 在此添加控件通知处理程序代码    ShellExecute(NULL, "open", "msconfig", "", NULL, SW_SHOWNORMAL);}//屏幕键盘void CMFC_MyToolDlg::OnBnClickedButton6(){    // TODO: 在此添加控件通知处理程序代码    ShellExecute(NULL, "open", "osk", "", "", SW_SHOWNORMAL);}//注册表编辑void CMFC_MyToolDlg::OnBnClickedButton10(){    // TODO: 在此添加控件通知处理程序代码    ShellExecute(NULL, "open", "regedit", "", "", SW_SHOWNORMAL);}//DirectX 诊断void CMFC_MyToolDlg::OnBnClickedButton14(){    // TODO: 在此添加控件通知处理程序代码    ShellExecute(NULL, "open", "dxdiag", "", "", SW_SHOWNORMAL);}//组策略void CMFC_MyToolDlg::OnBnClickedButton3(){    // TODO: 在此添加控件通知处理程序代码    ShellExecute(NULL, "open", "gpedit.msc", "", "", SW_SHOWNORMAL);}//资源监视器void CMFC_MyToolDlg::OnBnClickedButton7(){    // TODO: 在此添加控件通知处理程序代码    ShellExecute(NULL, "open", "perfmon.msc", "", "", SW_SHOWNORMAL);}//任务管理器void CMFC_MyToolDlg::OnBnClickedButton11(){    // TODO: 在此添加控件通知处理程序代码    ShellExecute(NULL, "open", "taskmgr", "", "", SW_SHOWNORMAL);}//事件查看器void CMFC_MyToolDlg::OnBnClickedButton15(){    // TODO: 在此添加控件通知处理程序代码    ShellExecute(NULL, "open", "eventvwr.msc", "", "", SW_SHOWNORMAL);}//吾爱论坛void CMFC_MyToolDlg::OnBnClickedButton4(){    // TODO: 在此添加控件通知处理程序代码    ShellExecute(NULL, "open", "iexplore", "www.52pojie.cn", "", SW_SHOWNORMAL);}//看雪论坛void CMFC_MyToolDlg::OnBnClickedButton8(){    // TODO: 在此添加控件通知处理程序代码    ShellExecute(NULL, "open", "iexplore", "www.pediy.com", "", SW_SHOWNORMAL);}//吾爱ODvoid CMFC_MyToolDlg::OnBnClickedButton12(){    // TODO: 在此添加控件通知处理程序代码    ShellExecute(NULL, "open", "D:/Crack Tool/吾爱破解专用版Ollydbg/吾爱破解[LCG].exe", "", "", SW_SHOWNORMAL);}//X64 dbgvoid CMFC_MyToolDlg::OnBnClickedButton16(){    // TODO: 在此添加控件通知处理程序代码    ShellExecute(NULL, "open", "D:/Crack Tool/x64dbg_2021_07_01/release/x64/x64dbg", "", "", SW_SHOWNORMAL);}

学破解第147天,《教你零基础一句代码制作自己的工具箱V1.0》学习

0x3 程序调试

  1.小菜鸟看着自己的工具箱,感觉自己好厉害,来,试试,点击截图工具,没反应???
逐个点击一遍:
截图工具
系统配置
翻车了,点击无效,没有反应。

  2.看一看百度上对这个函数的说明:
返回的HINSTANCE可以将它转换为一个整数(%d),并比较它的值大于还是小于32或比较它的错误代码
返回值大于32表示执行成功
返回值小于32表示执行错误

以截图工具为例,修改代码:    int i = (int)ShellExecute(NULL, "open", TEXT("snippingTool"), "", "", SW_SHOWNORMAL);    switch (i)    {    case 0:        MessageBox("内存不足","错误");        break;    case 2:        MessageBox("文件名错误", "错误");        break;    case 3:        MessageBox("路径名错误", "错误");        break;    case 11:        MessageBox("EXE 文件无效", "错误");        break;    case 26:        MessageBox("发生共享错误", "错误");        break;    case 27:        MessageBox("文件名不完全或无效", "错误");        break;    case 28:        MessageBox("超时", "错误");        break;    case 29:        MessageBox("DDE 事务失败", "错误");        break;    case 30:        MessageBox("正在处理其他 DDE 事务而不能完成该 DDE 事务", "错误");        break;    case 31:        MessageBox("没有相关联的应用程序", "错误");        break;    default:        MessageBox("程序正常", "正确");        break;    }

  3.区区错误,也想欺负小菜鸟,看我case大法一出:
学破解第147天,《教你零基础一句代码制作自己的工具箱V1.0》学习
纳尼???文件名错误,在开始菜单试了又试,明明可以打开的啊???
学破解第147天,《教你零基础一句代码制作自己的工具箱V1.0》学习

  4.目前小菜鸟的编译模式是release x86,那么去SysWOW64目录下看看,居然没有截图工具,那我开始菜单的截图工具哪来的呢?C:\Windows\system32,好吧,我的系统是win7 64位的,64位的...,64位的,32位默认寻找SysWOW64这个目录去了。

  5.代码生成模式改成release x64试试,傻眼了,一片红,c++字符串和window字符串不兼容,每一个包裹一下TEXT宏算了。

ShellExecute(NULL, TEXT("open"), TEXT("SnippingTool"), NULL, NULL, SW_SHOWNORMAL);

  6.成功了,果然是操作系统的问题。
学破解第147天,《教你零基础一句代码制作自己的工具箱V1.0》学习

  7.按钮事件最终源码:

//计算器void CMFC_MyToolDlg::OnBnClickedButton1(){    // TODO: 在此添加控件通知处理程序代码    ShellExecute(NULL, TEXT("open"), TEXT("calc"), NULL,NULL, SW_SHOWNORMAL);}//画图void CMFC_MyToolDlg::OnBnClickedButton5(){    // TODO: 在此添加控件通知处理程序代码    ShellExecute(NULL, TEXT("open"), TEXT("mspaint"), NULL, NULL, SW_SHOWNORMAL);}//截图工具void CMFC_MyToolDlg::OnBnClickedButton9(){    // TODO: 在此添加控件通知处理程序代码    ShellExecute(NULL, TEXT("open"), TEXT("SnippingTool"), NULL, NULL, SW_SHOWNORMAL);}//记事本void CMFC_MyToolDlg::OnBnClickedButton13(){    // TODO: 在此添加控件通知处理程序代码    ShellExecute(NULL, TEXT("open"), TEXT("notepad"), NULL, NULL, SW_SHOWNORMAL);}//系统配置void CMFC_MyToolDlg::OnBnClickedButton2(){    // TODO: 在此添加控件通知处理程序代码    ShellExecute(NULL, TEXT("open"), TEXT("msconfig"), NULL, NULL, SW_SHOWNORMAL);}//屏幕键盘void CMFC_MyToolDlg::OnBnClickedButton6(){    // TODO: 在此添加控件通知处理程序代码    ShellExecute(NULL, TEXT("open"), TEXT("osk"), NULL, NULL, SW_SHOWNORMAL);}//注册表编辑void CMFC_MyToolDlg::OnBnClickedButton10(){    // TODO: 在此添加控件通知处理程序代码    ShellExecute(NULL, TEXT("open"), TEXT("regedit"), NULL, NULL, SW_SHOWNORMAL);}//DirectX 诊断void CMFC_MyToolDlg::OnBnClickedButton14(){    // TODO: 在此添加控件通知处理程序代码    ShellExecute(NULL, TEXT("open"), TEXT("dxdiag"), NULL, NULL, SW_SHOWNORMAL);}//组策略void CMFC_MyToolDlg::OnBnClickedButton3(){    // TODO: 在此添加控件通知处理程序代码    ShellExecute(NULL, TEXT("open"), TEXT("gpedit.msc"), NULL, NULL, SW_SHOWNORMAL);}//资源监视器void CMFC_MyToolDlg::OnBnClickedButton7(){    // TODO: 在此添加控件通知处理程序代码    ShellExecute(NULL, TEXT("open"), TEXT("perfmon.msc"), NULL, NULL, SW_SHOWNORMAL);}//任务管理器void CMFC_MyToolDlg::OnBnClickedButton11(){    // TODO: 在此添加控件通知处理程序代码    ShellExecute(NULL, TEXT("open"), TEXT("taskmgr"), NULL, NULL, SW_SHOWNORMAL);}//事件查看器void CMFC_MyToolDlg::OnBnClickedButton15(){    // TODO: 在此添加控件通知处理程序代码    ShellExecute(NULL, TEXT("open"), TEXT("eventvwr.msc"), NULL, NULL, SW_SHOWNORMAL);}//吾爱论坛void CMFC_MyToolDlg::OnBnClickedButton4(){    // TODO: 在此添加控件通知处理程序代码    ShellExecute(NULL, TEXT("open"), TEXT("iexplore"), TEXT("www.52pojie.cn"), NULL, SW_SHOWNORMAL);}//看雪论坛void CMFC_MyToolDlg::OnBnClickedButton8(){    // TODO: 在此添加控件通知处理程序代码    ShellExecute(NULL, TEXT("open"), TEXT("iexplore"), TEXT("www.pediy.com"), NULL, SW_SHOWNORMAL);}//吾爱ODvoid CMFC_MyToolDlg::OnBnClickedButton12(){    // TODO: 在此添加控件通知处理程序代码    ShellExecute(NULL, TEXT("open"), TEXT("D:/Crack Tool/吾爱破解专用版Ollydbg/吾爱破解[LCG].exe"), NULL, NULL, SW_SHOWNORMAL);}//X64 dbgvoid CMFC_MyToolDlg::OnBnClickedButton16(){    // TODO: 在此添加控件通知处理程序代码    ShellExecute(NULL, TEXT("open"), TEXT("D:/Crack Tool/x64dbg_2021_07_01/release/x64/x64dbg"),  NULL, NULL, SW_SHOWNORMAL);}

0x4 总结

  1.新建MFC程序,选择基于对话框,选择在静态库中使用MFC,主框架选择粗框架带最大化和最小化框,还有菜单栏,修改对话框标题为小菜鸟的工具箱,高级功能全部不勾选,然后点完成。

  2.点击MFC_MyTool.rc资源文件,切换到资源视图,del删掉里面的内容。

  3.选择视图-工具箱,添加button按钮,在外观-caption中修改按钮上的文字。

  4.双击按钮进入编辑界面,添加ShellExecute(NULL, TEXT("open"), TEXT("calc"), NULL, NULL, SW_SHOWNORMAL);,运行程序,点击按钮即可打开计算器。

  5.重复上面步骤,就可以开发自己的工具箱,是不是很简单呢。

  6.调试的时候走了一些弯路,我以为指定路径为system32就可以,后来才想到这个目录下的是64位程序,调用不了,最后才想到修改程序的生成模式。

0x5 参考资料

  1.ShellExecute-百度百科

  2.程序下载地址(编译环境,Visual Studio 2015 release x64,MFC静态链接):https://wwx.lanzoui.com/i4MkKut3pfc

  3.源码下载地址:
链接:https://pan.baidu.com/s/1KgyaSuqQuXqoKtIW3IfWlQ
提取码:52pj

  PS:善于总结,善于发现,找到分析问题的思路和解决问题的办法。虽然我现在还是零基础的小菜鸟一枚,也许学习逆向逆天改命我会失败,但也有着成功的可能,只要还有希望,就决不放弃!

DDR爱好者之家 Design By 杰米