冥界3大法王 发表于 2023-5-5 18:55

按下Shift+F9编译x64dbg的插件,加了调用函数执行脚本命令的一行

按下Shift+F9编译x64dbg的插件,加了调用函数执行脚本命令的一行(详见下文:标红加粗的行!)
没报错,但也没有效果,这是为什么呢?{:301_974:}
话说故事还得从法王云游列国说起
从国际友好联邦下载了一个胡嫩的,完整的Delphi源码(看样子该是Chinese人搞的)
https://wwgc.lanzouy.com/iB6T40urt2uj
就一刻也不停息的回家做起了试验

https://static.52pojie.cn/static/image/hrline/2.gif
打开MoreTool.pas:


procedure RegisterMenuProc(cbType: cbType; callbackinfo: Pointer); cdecl;
var
info: PPLUG_CB_MENUENTRY;
begin
info := PPLUG_CB_MENUENTRY(callbackinfo);
case (info^.hEntry) of
    MENU_CALC:
      begin
      ShellExecuteA(GuiGetWindowHandle, 'OPEN', 'calc.exe', '', 'C:\Windows\system32', SW_SHOWNORMAL);
      end;
    MENU_NOTEPAD:
      begin
      ShellExecuteA(GuiGetWindowHandle, 'OPEN', 'notepad.exe', '', 'H:\ISO光盘及软盘镜像\启动管理效率提升', SW_SHOWNORMAL);
    DbgCmdExec('bp 0040100E');
      end;
    MENU_DISASM_CALC:
      begin
      ShellExecuteA(GuiGetWindowHandle, 'OPEN', 'calc.exe', '', 'C:\Windows\system32', SW_SHOWNORMAL);
      end;
    MENU_DISASM_NOTEPAD:
      begin
      ShellExecuteA(GuiGetWindowHandle, 'OPEN', 'notepad.exe', '', 'H:\ISO光盘及软盘镜像\启动管理效率提升', SW_SHOWNORMAL);
       DbgCmdExec('bp 0040100E');
      end;
end;
end;





function notepad(argc: Integer; argv: PPAnsiChar): Boolean; cdecl;
begin
ShellExecuteA(GuiGetWindowHandle, 'OPEN', 'notepad.exe', '', 'H:\ISO光盘及软盘镜像\启动管理效率提升', SW_SHOWNORMAL);
DbgCmdExec('bp 0040100E');   加上PAChar(XXX)不报错,通样没效果
end;



https://static.52pojie.cn/static/image/hrline/1.gif
bridgemain.pas
函数是下面这样的:

{BRIDGE_IMPEXP bool}    function DbgCmdExec(const cmd: PAChar): Boolean; cdecl; external x32_BRIDGE;
{BRIDGE_IMPEXP bool}    function DbgCmdExecDirect(const cmd: PAChar): Boolean; cdecl; external x32_BRIDGE;




x32dbg日志窗口中:


[插件] MoreTool v1 已经载入!
[插件,MoreTool] 命令 "Calc" 已经注册!
[插件,MoreTool] 命令 "Notepad" 已经注册!
[***] MoreTool Plugin v1 by remek002
显然已经成功加载了。
点下拉菜单也成功打开记事本,就是脚本并没有执行下断啊~~{:301_974:}




无闻无问 发表于 2023-5-5 20:58

我觉得ShellExecuteA执行,程序跑起来了,断点处指令已经跑过了……

不知对不

冥界3大法王 发表于 2023-5-5 21:02

无闻无问 发表于 2023-5-5 20:58
我觉得ShellExecuteA执行,程序跑起来了,断点处指令已经跑过了……

不知对不

不知道啊,一会开个x32dbg自己调试自己。

冥界3大法王 发表于 2023-5-5 21:31

无闻无问 发表于 2023-5-5 20:58
我觉得ShellExecuteA执行,程序跑起来了,断点处指令已经跑过了……

不知对不

大哥那是delphi的执行程序的命令,差点被你误导。

冥界3大法王 发表于 2023-5-6 07:02

本帖最后由 冥界3大法王 于 2023-5-6 11:09 编辑

@无闻无问 成功了,编译32位的。。。下断的脚本不成功。。
https://attach.52pojie.cn/forum/202305/06/110417q5n8l5g2oqn2ip8n.gif
64位的完全正常,同时也可以发送多个,还不用设置延迟。。
就是有1点不明白,为啥要设置两次?


MENU_NOTEPAD:这个是创建菜单项?
MENU_DISASM_NOTEPAD: 菜单目录记事本?
经测试2个都是有用的,不知为何要如此作为?
分别设置个执行脚本下断命令就测试出来了
有时第1个起作用,有时第2个起作用。


下面那处调用再添加就没啥用了。但函数不能少。

无闻无问 发表于 2023-5-6 10:22

法王牛啊…

你不用ShellExecuteA启动程序,而用CreateProcess启动并debug看看……

冥界3大法王 发表于 2023-5-6 10:56

本帖最后由 冥界3大法王 于 2023-5-6 10:58 编辑

无闻无问 发表于 2023-5-6 10:22
法王牛啊…

你不用ShellExecuteA启动程序,而用CreateProcess启动并debug看看……
@无闻无问
又试了下复制到其他版本的x32dbg/plugins下,则OK,原因未知,看来恐怕难保完全兼容。
如今咱的x64dbg法王编译修改版,各方面性能算是比较优越了。。。超越原版舒适度数倍。
想不想来一个感受下?{:301_997:}

x64dbg原生修改仿OD断点列表(插件)在朋友的帮助下,还差一点点就可以完工了(在原版调试器源码基础上修改UI),正在调试学习测试中。

无闻无问 发表于 2023-5-6 10:59

冥界3大法王 发表于 2023-5-6 10:56
@无闻无问
又试了下复制到其他版本的x32dbg/plugins下,则OK,原因未知,看来恐怕难保完全兼容。
如今 ...

可以来个噻
页: [1]
查看完整版本: 按下Shift+F9编译x64dbg的插件,加了调用函数执行脚本命令的一行