首页 > 其他分享 >x64dbg破解EnableMenu.exe

x64dbg破解EnableMenu.exe

时间:2024-03-27 21:29:17浏览次数:26  
标签:exe 调用者 EnableMenu 程序 API 参数 push x64dbg EnableMenuItem

最近在学re,正好记录一下解题思路和x64dbg的使用。

目录

运行程序

首先运行exe文件,发现菜单中的Menue功能被禁用了,无法点击。所以,现在的目标就是修改程序,使菜单有效。

搜索API

由于该文件是32位的exe文件,所以应该是使用了windows系统的API函数。上网搜索,推测该程序应该是使用了EnableMenuItem函数。
所以,现在可以直接在用户模块中按ctrl+N查找该符号。
寻找API
找到user32.EnableMenuItem。说明该程序确实调用了动态库USER32.dll中的EnableMenuItem

寻找调用者位置

点击上述符号,在该API入口下断点,开始调试。
执行到断点处,观察栈中存储的返回值,这便是源程序调用该API的位置,点击便跳转到调用者的位置call dword ptr ds:[<EnableMenuItem>]
调用位置

打上补丁

EnableMenuItem 函数 (winuser.h) - Win32 apps | Microsoft Learn

BOOL EnableMenuItem(
  [in] HMENU hMenu,
  [in] UINT  uIDEnableItem,
  [in] UINT  uEnable
);

观察windows的API文档,该函数有3个参数。而我们需要的是第3个参数uEnable,因此只需将该参数改为MF_ENABLED 0x00000000L,也就是0
API参数
观察反汇编,看到这里的三个push指令,这便是在压栈传递参数,而这里使用的函数调用标准应该是stdcall,所以参数是从右向左传递。因此第一个push指令对应的便是参数uEnable

方法一

push 1改为push 0

方法二

直接将三条push指令和call指令patch为nop,让程序不调用该API

成功修补

标签:exe,调用者,EnableMenu,程序,API,参数,push,x64dbg,EnableMenuItem
From: https://blog.csdn.net/locator_r/article/details/137086048

相关文章

  • execsnoop
    execsnooplinuxexecsnooptoolexecsnoop的主要功能包括:跟踪系统中的execve调用。打印新执行的进程的详细信息,包括进程ID、父进程ID、用户ID、命令行参数等。过滤特定的进程或用户。显示进程执行的时间戳。如其名字,snoopexec,execsnoop可以用来监控进程的运行,......
  • AOP中的execution表达式
    文章目录前言一、知识讲解?1AOP是什么?2execution表达式二、使用execution表达式1.execution表达式2使用示例总结前言提示:这里可以添加本文要记录的大概内容:在学习Spring中,必然要学习AOP,那么execution表达式有是必不可少的。提示:以下是本篇文章正文内容,下面案......
  • uniapp开发iOS——Xcode无法运行到运行真机提示 Executable Path is a Directory
    软件版本:Xcode14模拟器型号:Apple14Pro真机型号:Apple6sPlus异常描述:模拟器都能正常运行,Apple6sPlus运行就报错如下:解决方法:TARGET->BuildSettings->Architectures->ExcludeArchitectures里面把arm64都删掉,重新building就好了。注:删除这两个配置的时候双击会出现......
  • Python程序打包成exe、隐藏运行窗口
    Python隐藏运行窗口的实现方法1.流程图st=>start:开始op1=>operation:创建Python脚本op2=>operation:添加代码op3=>operation:保存脚本op4=>operation:编译脚本op5=>operation:生成可执行文件op6=>operation:隐藏运行窗口e=>end:完成st->op1->op2->op3->op4......
  • 监控工具-jvisualvm.exe-入门,监控tomcat7的jmx、jstatd
    1、添加JMX1.1、catalina-jmx-remote.jar 放在Tomcat的 lib 目录下catalina-jmx-remote.jar 的确切位置可能因Tomcat版本和发行版而异,但通常它应该被放置在Tomcat的 lib 目录下 1.2、catalina.sh设置JVM参数对于Linux/Unix,编辑 catalina.sh 文件......
  • 发布exe
    dotnetpublish-rwin-x64-cRelease/p:PublishSingleFile=true /p:PublishTrimmed=true或者<ProjectSdk="Microsoft.NET.Sdk.WindowsDesktop"><PropertyGroup><OutputType>Exe</OutputType><TargetFramework>netc......
  • dism.exe 系统自带命令 参数
    一级////dism/?DeploymentImageServicingandManagementtoolVersion:10.0.20348.681DISM.exe[dism_options]{Imaging_command}[<Imaging_arguments>]DISM.exe{/Image:<path_to_offline_image>|/Online}[dism_options]     {servicing_command}......
  • web前端之node读取文件夹名称及html文件的标题、文件系统、路径处理、模块、正则、isD
    MENU代码解析代码constfs=require('fs');constpath=require('path');//文件夹路径//C:\mssj\web\web-case\case\nodeJs\index.js//C:\mssj\web\web-case\case\nodeJs\index.html//C:\mssj\web\web-case\case\ajaxProgressMoni......
  • mysql使用mysqldump.exe导出为sql脚本,进行导入时出现ERROR 1227 (42000) at line 18:
    mysql使用mysqldump.exe导出为sql脚本,进行导入时出现ERROR1227(42000)atline18:Accessdenied;youneed(atleastoneof)theSUPERorSYSTEM_VARIABLES_ADMINprivilege(s)forthisoperation。Warning:ApartialdumpfromaserverthathasGTIDswillbydefaul......
  • Spark中driver、executor、job、stage、task、partition你懂吗?
        对于一个要提交到大数据集群的spark任务而言,准确说这个任务应该叫一个application,因为application是分布式任务,因此需要分配到多台机器中运行,而为了方便每个application的自我管理,这个多台机器中会有一台机器被选为小组长来管理整个application,而这个小组长的名字......