HyperDbg / gui

HyperDbg's Graphical User Interface (GUI)
Apache License 2.0
66 stars 9 forks source link

是否需要实现运行时 #59

Closed ddkwork closed 4 months ago

ddkwork commented 4 months ago

就目前sdk提供的场景,附加进程应该是最少代码量即可实现,如果是装载exe dll,sys我不知道hyperdbg是否具有类似沙箱模型那种执行加载驱动的功能。

附加的方式对我来说可用场景太少,更多的是需要装载exe,dll,sys等模拟运行时然后执行的场景,这种方式能勾住更多的api和最佳hook时机。

然而目前sdk和驱动提供了中断控制,比如对调试寄存器控制实现断点,堆栈访问等等,这些都是在运行时加载之后。

根据binee的框架,如果不使用window标准的调试api框架,需要模拟pe运行时所需的这些方面:

1.模拟所有环境变量,tmp目录,path目录之类的

2.模拟注册表的五大节点供exe代码读写注册表

3.模拟cpu执行,这个不需要,因为我们是使用物理cpu而不是基于qemu的模拟cpu

4.模拟内存

5.解析pe结构,导入导出表,模块,等等

6.记不清,mock的东西太多

最后创建一个线程,放入解析好的pe结构,装载运行时,该读读该写写,cpu指令也配合pe代码同步操作,整个pe就运行起来了

那么问题来了,hyperdbg用装载pe实现调试的情况下,是否需要模拟运行时?

SinaKarvandi commented 4 months ago

I'm not sure I understand what you mean. 🤔 Are you trying to understand how you can run a process from SDK?

我不确定我是否理解你的意思。🤔 你想了解如何从 SDK 运行进程吗?

ddkwork commented 4 months ago

是的,目前sdk的实现似乎只能以附加进程的方式进行调试,而我想实现的是类似ollydbg那种从运行时加载执行的场景

---原始邮件--- 发件人: "Sina @.> 发送时间: 2024年6月14日(周五) 中午12:32 收件人: @.>; 抄送: @.**@.>; 主题: Re: [HyperDbg/gui] 是否需要实现运行时 (Issue #59)

I'm not sure I understand what you mean. 🤔 Are you trying to understand how you can run a process from SDK?

我不确定我是否理解你的意思。🤔 你想了解如何从 SDK 运行进程吗?

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you authored the thread.Message ID: @.***>

SinaKarvandi commented 4 months ago

This is exactly what I'm trying to make for the next version (v1.0) which will be ready in the coming months. I will make separate SDK functions for all of the commands and will export them in the SDK, so you can use them directly in GUI and also we can write automated testing functionalities for the code.

Right now, we have to deal with command parsing. HyperDbg has a '.start' command for starting the process (similar to other debuggers), so we need to send a command for starting the process like

.start path PathToProcess

To the command interpreter function.

这正是我为下一个版本 (v1.0) 所做的工作,该版本将在未来几个月内准备就绪。我将为所有命令制作单独的 SDK 函数,并将它们导出到 SDK 中,这样您就可以在 GUI 中直接使用它们,我们也可以为代码编写自动测试功能。

现在,我们必须处理命令解析。HyperDbg 有一个用于启动进程的“.start”命令(类似于其他调试器),因此我们需要向命令解释器函数发送一个用于启动进程的命令,如

.start path PathToProcess

ddkwork commented 4 months ago

装载pe运行时如果用go语言也很容易实现,我们只需要复制这块代码,请看这:

https://github.com/carbonblack/binee/blob/master/windows%2Fwinemulator.go#L173-L347

当我们把pe运行时处理好,我们就可以调用sdk传入运行时环境得到的: 我们调试的目标exe名称,pid,设置断点,提前为改进程设置各种hook等等,是吧。所以拖放exe到反汇编窗口的这个拖放事件回调函数中,我想我们必须处理运行时这个事情,解析pe用go语言操作就可以了,几个月前我用go代码解析exe dll sys等各种文件,很稳定,也很容易理解,对于运行时,我看了很久hyperdbg源代码,似乎没有操作这个,所以我的问题是要不要使用go语言完成运行时的装载过程,然后我们调用sdk操作hook,断点的增删改查,cpu指令的监控,等等事情。

SinaKarvandi commented 4 months ago

Are you talking about using a PE emulator? Like, first we load the PE using an emulator and then put the necessary hooks on the loaded PE. Am I getting it correctly?

您是在说使用 PE 模拟器吗? 例如,我们首先使用模拟器加载 PE,然后在加载的 PE 上放置必要的钩子。我理解正确吗?

ddkwork commented 4 months ago

简而言之就是:当pe文件拖放到cpu页面的窗口,我可以得到文件名和路径,此时把完整路径传递给sdk,sdk需要返回这些内容给gui显示:

1.导入表,导出表,区段表等,这部分由go代码完成,不需要sdk实现,稍后我将这些pe解析的实现呈现到gui中,它将解析exe,dll和sys文件结构到表格中。

2.如果运行时交给sdk完成,那么进程pid,模块等这些应该由sdk完成,我只需传递pe文件的完整路径给sdk。

3.start命令开始之前调用sdk api设置断点,hook等,我将稍后测试sdk的dll。

还有很多情况,比如堆栈,寄存器等等。

有个要注意的地方,堆栈和反汇编我需要得到sdk返回的hex buffer,反汇编可以用go代码完成,我测试了可以稳定的反汇编buffer,此外,我需要对buffer进行一些特征扫描,这用go代码操作很方便。

ddkwork commented 4 months ago

我不确定如何开始调试,比如我们在物理机上用cli执行预期的命令:

Start ./demo.exe sdk可以这样工作吗?如果是这样我们先不搞模拟器。

---原始邮件--- 发件人: "Sina @.> 发送时间: 2024年6月14日(周五) 中午12:57 收件人: @.>; 抄送: @.**@.>; 主题: Re: [HyperDbg/gui] 是否需要实现运行时 (Issue #59)

Are you talking about using a PE emulator? Like, first we load the PE using an emulator and then put the necessary hooks on the loaded PE. Am I getting it correctly?

您是在说使用 PE 模拟器吗? 例如,我们首先使用模拟器加载 PE,然后在加载的 PE 上放置必要的钩子。我理解正确吗?

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you authored the thread.Message ID: @.***>

ddkwork commented 4 months ago

This is exactly what I'm trying to make for the next version (v1.0) which will be ready in the coming months. I will make separate SDK functions for all of the commands and will export them in the SDK, so you can use them directly in GUI and also we can write automated testing functionalities for the code.

Right now, we have to deal with command parsing. HyperDbg has a '.start' command for starting the process (similar to other debuggers), so we need to send a command for starting the process like

.start path PathToProcess

To the command interpreter function.

这正是我为下一个版本 (v1.0) 所做的工作,该版本将在未来几个月内准备就绪。我将为所有命令制作单独的 SDK 函数,并将它们导出到 SDK 中,这样您就可以在 GUI 中直接使用它们,我们也可以为代码编写自动测试功能。

现在,我们必须处理命令解析。HyperDbg 有一个用于启动进程的“.start”命令(类似于其他调试器),因此我们需要向命令解释器函数发送一个用于启动进程的命令,如

.start path PathToProcess

Please give some script demo for test this.

SinaKarvandi commented 4 months ago

The .start command only works in the Debugger Mode (The support for the VMI mode will be added later). You can run it using the following command: 0: kHyperDbg> .start path "C:\my files\my file.exe" or if you want to pass parameters: 0: kHyperDbg> .start path "C:\my files\my file.exe" -m 1 -o out.txt

ddkwork commented 4 months ago

Nice work

---原始邮件--- 发件人: "Sina @.> 发送时间: 2024年6月14日(周五) 中午1:19 收件人: @.>; 抄送: @.**@.>; 主题: Re: [HyperDbg/gui] 是否需要实现运行时 (Issue #59)

The .start command only works in the Debugger Mode (The support for the VMI mode will be added later). You can run it using the following command: 0: kHyperDbg> .start path "C:\my files\my file.exe" or if you want to pass parameters: 0: kHyperDbg> .start path "C:\my files\my file.exe" -m 1 -o out.txt

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you authored the thread.Message ID: @.***>

SinaKarvandi commented 4 months ago

简而言之就是:当pe文件拖放到cpu页面的窗口,我可以得到文件名和路径,此时把完整路径传递给sdk,sdk需要返回这些内容给gui显示:

1.导入表,导出表,区段表等,这部分由go代码完成,不需要sdk实现,稍后我将这些pe解析的实现呈现到gui中,它将解析exe,dll和sys文件结构到表格中。

2.如果运行时交给sdk完成,那么进程pid,模块等这些应该由sdk完成,我只需传递pe文件的完整路径给sdk。

3.start命令开始之前调用sdk api设置断点,hook等,我将稍后测试sdk的dll。

还有很多情况,比如堆栈,寄存器等等。

有个要注意的地方,堆栈和反汇编我需要得到sdk返回的hex buffer,反汇编可以用go代码完成,我测试了可以稳定的反汇编buffer,此外,我需要对buffer进行一些特征扫描,这用go代码操作很方便。

So, do you mean to use this GO library in HyperDbg SDK?

那么,你的意思是在 HyperDbg SDK 中使用这个 GO 库吗?

ddkwork commented 4 months ago

等我先测试,今天晚些时候我应该能把解析pe塞入到gui的树形表格中,只是现在我不方便玩电脑。

---原始邮件--- 发件人: "Sina @.> 发送时间: 2024年6月14日(周五) 中午1:21 收件人: @.>; 抄送: @.**@.>; 主题: Re: [HyperDbg/gui] 是否需要实现运行时 (Issue #59)

简而言之就是:当pe文件拖放到cpu页面的窗口,我可以得到文件名和路径,此时把完整路径传递给sdk,sdk需要返回这些内容给gui显示:

1.导入表,导出表,区段表等,这部分由go代码完成,不需要sdk实现,稍后我将这些pe解析的实现呈现到gui中,它将解析exe,dll和sys文件结构到表格中。

2.如果运行时交给sdk完成,那么进程pid,模块等这些应该由sdk完成,我只需传递pe文件的完整路径给sdk。

3.start命令开始之前调用sdk api设置断点,hook等,我将稍后测试sdk的dll。

还有很多情况,比如堆栈,寄存器等等。

有个要注意的地方,堆栈和反汇编我需要得到sdk返回的hex buffer,反汇编可以用go代码完成,我测试了可以稳定的反汇编buffer,此外,我需要对buffer进行一些特征扫描,这用go代码操作很方便。

So, do you mean to use this GO library in HyperDbg SDK?

那么,你的意思是在 HyperDbg SDK 中使用这个 GO 库吗?

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you authored the thread.Message ID: @.***>

SinaKarvandi commented 4 months ago

Okay, let me know if you need help.

好的,如果您需要帮助的话请告诉我。

ddkwork commented 4 months ago

反汇编和pe解析暂时由go模块完成,让sdk专注于调试相关的事情

---原始邮件--- 发件人: "Sina @.> 发送时间: 2024年6月14日(周五) 中午1:21 收件人: @.>; 抄送: @.**@.>; 主题: Re: [HyperDbg/gui] 是否需要实现运行时 (Issue #59)

简而言之就是:当pe文件拖放到cpu页面的窗口,我可以得到文件名和路径,此时把完整路径传递给sdk,sdk需要返回这些内容给gui显示:

1.导入表,导出表,区段表等,这部分由go代码完成,不需要sdk实现,稍后我将这些pe解析的实现呈现到gui中,它将解析exe,dll和sys文件结构到表格中。

2.如果运行时交给sdk完成,那么进程pid,模块等这些应该由sdk完成,我只需传递pe文件的完整路径给sdk。

3.start命令开始之前调用sdk api设置断点,hook等,我将稍后测试sdk的dll。

还有很多情况,比如堆栈,寄存器等等。

有个要注意的地方,堆栈和反汇编我需要得到sdk返回的hex buffer,反汇编可以用go代码完成,我测试了可以稳定的反汇编buffer,此外,我需要对buffer进行一些特征扫描,这用go代码操作很方便。

So, do you mean to use this GO library in HyperDbg SDK?

那么,你的意思是在 HyperDbg SDK 中使用这个 GO 库吗?

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you authored the thread.Message ID: @.***>

ddkwork commented 4 months ago

okay

---原始邮件--- 发件人: "Sina @.> 发送时间: 2024年6月14日(周五) 中午1:25 收件人: @.>; 抄送: @.**@.>; 主题: Re: [HyperDbg/gui] 是否需要实现运行时 (Issue #59)

Okay, let me know if you need help.

好的,如果您需要帮助的话请告诉我。

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you authored the thread.Message ID: @.***>

ddkwork commented 4 months ago

Screenshot_20240615_115437_com.realvnc.viewer.android.jpg

pe解析已接近完成,不过有很多细节需要调整,表头没有显示,不知道什么原因,等测试sdk dll之后需要填充物理地址,然后我们在调试的时候右键按下弹出上下文菜单读取表格中的api地址并在回调内执行下断点操作,拖放pe文件之后panel的子节点没有正确的删除。。。很多细节需要调试,真是累人。

ddkwork commented 4 months ago

现在先暂停pe panel的细节调整,先来弄反汇编panel,当cil执行start命令之后,怎么取得预期的pe 二进制buffer给反汇编引擎调用?载入全部字节也不妥,太大了,我不清楚ollydbg是怎么做的?简而言之就是:在调试器的反汇编面板内实时显示的反汇编结果需要的buffer我应该怎么取?取多少字节?

ddkwork commented 4 months ago

载入pe反汇编和pe解析完成之后,接下来就是执行sdk 的dll函数,到时候就能和hyperdbg更深入的对接了

ddkwork commented 4 months ago

对了,go的反汇编引擎是解析pe后判断是否是64位自动选择64还是32位解码,就是说我们只需要维护一份代码即可,对于sdk的调试api是这样兼容的吗?我看到ollydbg和x64dbg都是维护了两份代码,32和64,对于hyperdbg,我建议调试部分只需要一份代码操作,这样便于维护。

ddkwork commented 4 months ago

Screenshot_20240615_154950_com.realvnc.viewer.android.jpg

Start command not working

SinaKarvandi commented 4 months ago

现在先暂停pe panel的细节调整,先来弄反汇编panel,当cil执行start命令之后,怎么取得预期的pe 二进制buffer给反汇编引擎调用?载入全部字节也不妥,太大了,我不清楚ollydbg是怎么做的?简而言之就是:在调试器的反汇编面板内实时显示的反汇编结果需要的buffer我应该怎么取?取多少字节?

For this one, you need a function to get (read) the buffers as requested by GUI. In that case, I need to export a function for reading memory to SDK. Currently the following function is responsible for showing memory addresses but this shows the buffer directly, not pass it to the caller.

VOID
HyperDbgReadMemoryAndDisassemble(DEBUGGER_SHOW_MEMORY_STYLE   Style,
                                 UINT64                       Address,
                                 DEBUGGER_READ_MEMORY_TYPE    MemoryType,
                                 DEBUGGER_READ_READING_TYPE   ReadingType,
                                 UINT32                       Pid,
                                 UINT32                       Size,
                                 PDEBUGGER_DT_COMMAND_OPTIONS DtDetails);

So, should I export a function for it? Am I right?

Also about the size, I think the best way is to load a page with 4KB of data.

对于这个,您需要一个函数来根据 GUI 的请求获取(读取)缓冲区。在这种情况下,我需要将一个函数导出到 SDK 以读取内存。目前,以下函数负责显示内存地址,但它直接显示缓冲区,而不是将其传递给调用者。

VOID
HyperDbgReadMemoryAndDisassemble(DEBUGGER_SHOW_MEMORY_STYLE Style,
UINT64 Address,
DEBUGGER_READ_MEMORY_TYPE MemoryType,
DEBUGGER_READ_READING_TYPE ReadingType,
UINT32 Pid,
UINT32 Size,
PDEBUGGER_DT_COMMAND_OPTIONS DtDetails);

那么,我应该为它导出一个函数吗?我说得对吗?

另外关于大小,我认为最好的方法是加载一个包含 4 KB 数据的页面。

SinaKarvandi commented 4 months ago

对了,go的反汇编引擎是解析pe后判断是否是64位自动选择64还是32位解码,就是说我们只需要维护一份代码即可,对于sdk的调试api是这样兼容的吗?我看到ollydbg和x64dbg都是维护了两份代码,32和64,对于hyperdbg,我建议调试部分只需要一份代码操作,这样便于维护。

Are you using a separate GO disassembler?

In HyperDbg we use Zydis, I can export zydis functions too. If you need to use Zydis from HyperDbg, then let me know so I can export functions for it.


您是否在使用单独的 GO 反汇编程序?

在 HyperDbg 中我们使用 Zydis,我也可以导出 zydis 函数。如果您需要从 HyperDbg 使用 Zydis,请告诉我,以便我可以为其导出函数。

SinaKarvandi commented 4 months ago

Screenshot_20240615_154950_com.realvnc.viewer.android.jpg

Start command not working

The '.start' command is one of the stable commands in Debugger Mode. Please test it in the Debugger Mode, not VMI Mode. The VMI Mode will be available through the next versions.

'.start' 命令是调试器模式下的稳定命令之一。请在调试器模式下测试它,而不是 VMI 模式。VMI 模式将在下一版本中可用。

ddkwork commented 4 months ago

好的,让我们先来测试一下go的反汇编引擎,我之前测试反汇编ntdll是正常的。但是把它用于调试器的时候,pe头mz开始的地方我们不应该反汇编它,你觉得呢?这样,您按这个思路引导我调整代码逻辑:

cli执行start命令开始,返回应该被反汇编的buffer以及起始地址(这里可以先复制hex data给我,等测试通过后我们再导出sdk 的你说那个api),同时把堆栈的起始地址,总的buffer大小,以及堆栈buffer返回给我,然后我将呈现他们到ui上。

你把上面这段过程用脚本实现并打印出我需要的结果。这样我就方便同步sdk和gui的操作了。

另外,我想看看telegram上你们以前编译的那个cpp2go程序,我现在登录不了,硬盘上也没有。我看了dbgctrol 的全部逻辑,有想过继续dll方式和sdk沟通,有想过用go完整实现一遍,目前不确定。完整实现的话可能更方便gui操作以及我对这个调试器的理解,我看了逻辑基本上能看懂70%,有信心翻译它为go,只是代码量有点大了,那样做的话。

---原始邮件--- 发件人: "Sina @.> 发送时间: 2024年6月15日(周六) 晚上6:39 收件人: @.>; 抄送: @.**@.>; 主题: Re: [HyperDbg/gui] 是否需要实现运行时 (Issue #59)

现在先暂停pe panel的细节调整,先来弄反汇编panel,当cil执行start命令之后,怎么取得预期的pe 二进制buffer给反汇编引擎调用?载入全部字节也不妥,太大了,我不清楚ollydbg是怎么做的?简而言之就是:在调试器的反汇编面板内实时显示的反汇编结果需要的buffer我应该怎么取?取多少字节?

For this one, you need a function to get (read) the buffers as requested by GUI. In that case, I need to export a function for reading memory to SDK. Currently the following function is responsible for showing memory addresses but this shows the buffer directly, not pass it to the caller. VOID HyperDbgReadMemoryAndDisassemble(DEBUGGER_SHOW_MEMORY_STYLE Style, UINT64 Address, DEBUGGER_READ_MEMORY_TYPE MemoryType, DEBUGGER_READ_READING_TYPE ReadingType, UINT32 Pid, UINT32 Size, PDEBUGGER_DT_COMMAND_OPTIONS DtDetails);
So, should I export a function for it? Am I right?

Also about the size, I think the best way is to load a page with 4KB of data.

对于这个,您需要一个函数来根据 GUI 的请求获取(读取)缓冲区。在这种情况下,我需要将一个函数导出到 SDK 以读取内存。目前,以下函数负责显示内存地址,但它直接显示缓冲区,而不是将其传递给调用者。 VOID HyperDbgReadMemoryAndDisassemble(DEBUGGER_SHOW_MEMORY_STYLE Style, UINT64 Address, DEBUGGER_READ_MEMORY_TYPE MemoryType, DEBUGGER_READ_READING_TYPE ReadingType, UINT32 Pid, UINT32 Size, PDEBUGGER_DT_COMMAND_OPTIONS DtDetails);
那么,我应该为它导出一个函数吗?我说得对吗?

另外关于大小,我认为最好的方法是加载一个包含 4 KB 数据的页面。

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you authored the thread.Message ID: @.***>

ddkwork commented 4 months ago

不,只需要buffer和base address即可,我这边完全用go来操作反汇编相关

ddkwork commented 4 months ago

这里实现了go操作反汇编并呈现到ui的表格中,我已经执行了单元测试,载入pe文件反汇编正常,所以我只需要得到:需要实时反汇编的基址,大小,以及buffer,堆栈也一样是这个要求。

https://github.com/HyperDbg/gui/blob/main/ux%2Fcpu.go#L214-L253

ddkwork commented 4 months ago

我感觉我俩的沟通进度过于缓慢。我将先实现部分ark页面,因为很多之前已经实现了,只要copy代码过来。此外我将调整构建逻辑,今天晚些时候让这个仓库可以在您的机器上顺利构建gui,到时候您来写GitHub action,我暂时放弃易用性的考虑,驱动签名问题让用户自己解决。您可以先安装好golang,gcc或者Goland,我将让它很快顺利构建。到时候你那边编译了之后直接操作gui界面应该有助于我们的沟通。go语言的语法和Scala很像,我想只要我把困惑的地方连接到代码上您应该很快就明白我的要求和困惑😦。

SinaKarvandi commented 4 months ago

我感觉我俩的沟通进度过于缓慢。我将先实现部分ark页面,因为很多之前已经实现了,只要copy代码过来。此外我将调整构建逻辑,今天晚些时候让这个仓库可以在您的机器上顺利构建gui,到时候您来写GitHub action,我暂时放弃易用性的考虑,驱动签名问题让用户自己解决。您可以先安装好golang,gcc或者Goland,我将让它很快顺利构建。到时候你那边编译了之后直接操作gui界面应该有助于我们的沟通。go语言的语法和Scala很像,我想只要我把困惑的地方连接到代码上您应该很快就明白我的要求和困惑😦。

Yes, I read GO and I'm now familiar with it, not a problem. By the way, for your information, I'm currently re-designing the entire SDK. In the new design, all of the functionalities (all of the commands) and functionalities are now exported to the SDK. Once I'm done with it, I think you can easily use any functionality directly without the need to run hyperdbg-cli, just import hprdbgctrl is enough. In the new design, hprdbgctrl name will be changed to LibHyperDbg. I think for now, for the buffer reading, you can assume a function like this:

BOOLEAN 
hyperdbg_read_buffer(UINT64 Address, UINT32 Size, PVOID DestinationAddress);

Using the above function, you can read the buffer. Other than that, I will also provide your function for starting the process. Like, you'll pass PATH directly to the function and it will start the process, so you do not need to create a string command for it.

I will try to implement this function and all of the new SDK versions, hopefully, this week a prototype will be ready with essential features.

Using this new SDK, you can use almost any functionalities without any dependency on anything other than LibHyperDbg. Are you okay with it?

I will also export all Zydis disassembler functions to the SDK. It's up to you whether you want to directly use Zydis or a GO disassembler.


是的,我读过 GO,现在对它很熟悉了,这不是问题。顺便说一句,供您参考,我目前正在重新设计整个 SDK。在新设计中,所有功能(所有命令)和功能现在都导出到 SDK。一旦我完成它,我认为您可以轻松直接使用任何功能,而无需运行 hyperdbg-cli,只需导入 hprdbgctrl 就足够了。在新设计中,hprdbgctrl 名称将更改为 LibHyperDbg。我认为现在,对于缓冲区读取,您可以假设一个这样的函数:

BOOLEAN
hyperdbg_read_buffer(UINT64 Address, UINT32 Size, PVOID DestinationAddress);

使用上述函数,您可以读取缓冲区。除此之外,我还将提供您启动该过程的函数。例如,您将直接将“PATH”传递给函数,它将启动该过程,因此您无需为其创建字符串命令。

我将尝试实现此功能和所有新的 SDK 版本,希望本周能够准备好具有基本功能的原型。

使用这个新的 SDK,您可以使用几乎任何功能,而无需依赖 LibHyperDbg 以外的任何东西。你同意吗?

我还将把所有 Zydis 反汇编程序函数导出到 SDK。是否要直接使用 Zydis 或 GO 反汇编程序取决于您。

ddkwork commented 4 months ago

不错的想法,容我再考虑一下,因为我担心方案不合理会浪费您的时间。现在您应该可以顺利构建gui,先把action搞定方便我们用操作gui的方式交流,哈哈😃。我想完成这一步我们会更好的理解彼此的意图。

---原始邮件--- 发件人: "Sina @.> 发送时间: 2024年6月15日(周六) 晚上10:22 收件人: @.>; 抄送: @.**@.>; 主题: Re: [HyperDbg/gui] 是否需要实现运行时 (Issue #59)

我感觉我俩的沟通进度过于缓慢。我将先实现部分ark页面,因为很多之前已经实现了,只要copy代码过来。此外我将调整构建逻辑,今天晚些时候让这个仓库可以在您的机器上顺利构建gui,到时候您来写GitHub action,我暂时放弃易用性的考虑,驱动签名问题让用户自己解决。您可以先安装好golang,gcc或者Goland,我将让它很快顺利构建。到时候你那边编译了之后直接操作gui界面应该有助于我们的沟通。go语言的语法和Scala很像,我想只要我把困惑的地方连接到代码上您应该很快就明白我的要求和困惑😦。

Yes, I read GO and I'm now familiar with it, not a problem. By the way, for your information, I'm currently re-designing the entire SDK. In the new design, all of the functionalities (all of the commands) and functionalities are now exported to the SDK. Once I'm done with it, I think you can easily use any functionality directly without the need to run hyperdbg-cli, just import hprdbgctrl is enough. In the new design, hprdbgctrl name will be changed to LibHyperDbg. I think for now, for the buffer reading, you can assume a function like this: BOOLEAN hyperdbg_read_buffer(UINT64 Address, UINT32 Size, PVOID DestinationAddress);
Using the above function, you can read the buffer. Other than that, I will also provide your function for starting the process. Like, you'll pass PATH directly to the function and it will start the process, so you do not need to create a string command for it.

I will try to implement this function and all of the new SDK versions, hopefully, this week a prototype will be ready with essential features.

Using this new SDK, you can use almost any functionalities without any dependency on anything other than LibHyperDbg. Are you okay with it?

I will also export all Zydis disassembler functions to the SDK. It's up to you whether you want to directly use Zydis or a GO disassembler.

是的,我读过 GO,现在对它很熟悉了,这不是问题。顺便说一句,供您参考,我目前正在重新设计整个 SDK。在新设计中,所有功能(所有命令)和功能现在都导出到 SDK。一旦我完成它,我认为您可以轻松直接使用任何功能,而无需运行 hyperdbg-cli,只需导入 hprdbgctrl 就足够了。在新设计中,hprdbgctrl 名称将更改为 LibHyperDbg。我认为现在,对于缓冲区读取,您可以假设一个这样的函数: BOOLEAN hyperdbg_read_buffer(UINT64 Address, UINT32 Size, PVOID DestinationAddress);
使用上述函数,您可以读取缓冲区。除此之外,我还将提供您启动该过程的函数。例如,您将直接将“PATH”传递给函数,它将启动该过程,因此您无需为其创建字符串命令。

我将尝试实现此功能和所有新的 SDK 版本,希望本周能够准备好具有基本功能的原型。

使用这个新的 SDK,您可以使用几乎任何功能,而无需依赖 LibHyperDbg 以外的任何东西。你同意吗?

我还将把所有 Zydis 反汇编程序函数导出到 SDK。是否要直接使用 Zydis 或 GO 反汇编程序取决于您。

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you authored the thread.Message ID: @.***>