函数原形有两种,用两种方式,都没有编译错误,但有调试错误!
函数原形有两种,用两种方式,都没有编译错误,但有调试错误!https://static.52pojie.cn/static/image/hrline/1.gif
如图所示:
{BRIDGE_IMPEXP void} procedure DbgScriptLoad(const filename: PAChar); cdecl; external x32_BRIDGE;
https://static.52pojie.cn/static/image/hrline/1.gif
这个说完了,还有下一个scriptload 加上你的脚本路径
然后用DbgCmdExec来执行
函数原形是下面这样的:
{BRIDGE_IMPEXP bool} function DbgCmdExec(const cmd: PAChar): Boolean; cdecl; external x32_BRIDGE;
被加载的路径若是直接写的话,都能成x32dbg/x64dbg成功加载脚本。
procedure TMainForm.加载脚本Click(Sender: TObject);
begin
DbgScriptLoad(PAnsiChar(UTF8String('scriptload "' + 牛逼路径 + '\TestScript1.txt' + '"')));
Clipboard.AsText := 'scriptload "' + 牛逼路径 + '\TestScript1.txt"';
DbgScriptLoad(PAnsiChar(牛逼路径 + '\TestScript1.txt'));
DbgCmdExec(PAnsiChar(format('%s',)));
DbgCmdExec(PAnsiChar(Clipboard.AsText));
DbgCmdExec(PAnsiChar('scriptload ' + QuotedStr(牛逼路径 + '\TestScript1.txt')));
DbgCmdExec(PAnsiChar('scriptload "' + 牛逼路径 + '\TestScript1.txt' + '"'));
end;
一种错误是:
还有一种错误是这个:
那该如何解决呢? 目前生成剪贴板方式有点不爽啊。 问题总结:
1)直接加载全路径,没问题
2)剪贴板生成的命令和路径也没有问题
3)双引号还是最好加上的
A.尝试过PAnsiChar
B.尝试过PAChar
C.尝试过UTF8String
D.尝试过format
均失败告终。
看起来还是编码转换的问题,x32dbg API 要求的是 PAChar,Delphi 11 采用 UTF-8,如果含有中文,你要先将 UTF-8 转成 GBK 才行
你可以将字符串指针赋给 PAnsiChar s,然后用 MessageBox(0, s, Nil, MB_OK) 测试一下,如果不能正常显示就是编码问题 本帖最后由 冥界3大法王 于 2024-3-12 12:26 编辑
lies2014 发表于 2024-3-12 11:47
看起来还是编码转换的问题,x32dbg API 要求的是 PAChar,Delphi 11 采用 UTF-8,如果含有中文,你要先将 U ...@lies2014
RichViewEdit1.SaveText('TestScript1.txt', 0, 65001); //坑爹的控件,有时需要clean后再生成编码才正确!
Clipboard.AsText := 'scriptload "' + '\TestScript1.txt"'; //第二行多余,以做第二手准备!
DbgCmdExec(PAnsiChar(UTF8Encode(Clipboard.AsText)));
受输出log和msg的启发,一并解决了! 法王 有问题求助{:1_937:}
页:
[1]