- 博客(7)
- 资源 (4)
- 收藏
- 关注
原创 通过计算程序运行时间反动态调试
这里主要是修改扩展32位_asm{}汇编代码,替换为64位汇编函数,该函数传出比对结果。结果若干时间循环后,再次比对时间戳的差异:若高32位相同,则不会崩溃,并将低32位差异值存储到rsp+28h栈上。在函数结束前,将栈上结果再传入rax。详细ml64汇编代码如下。如果调试时有较长时间停顿,则会跳转至_DEBUGGER_FOUND标号导致程序崩溃。如果几乎没有占用调试时间,则能正常结束。
2026-08-29 18:16:20
202
原创 利用SEH实现动态反调试
在32位扩展asm中首先有一个int 3 断点异常,此处在x64中总会让人感觉怪怪的。但是x64中,扩展asm是一个完整的函数,故最后必须ret返回地址。在32位程序中,可以在cpp中直接内嵌扩展 _asm{} 汇编代码。而在64位程序中,VS2019开发环境中是不允许这样做的,所以需要添加一个cpp项目,将文件名改为*.asm,并单独指定该文件的属性为自定义生成工具,就像下面这样。具体可参考下面的源码。如果要在x64dbg中调试该段程序,必须要设置“选项 | 选项 | 异常”,具体如图所示。
2026-08-27 17:36:14
230
原创 利用TLS回调反调试
第45章讲的是TLS回调函数,很大篇幅在讲如何手工编辑PE文件来插入TLS回调函数。具体要点只有两处,一是指定编译选项链接_tls_used,二是指定编译选项链接TLS回调函数表的符号。TLS.AddressOfCallbacks首地址0x01400102EB内容为0x01040001000, 即第一个TLS回调函数地址,也就是上图中第一行位置所示,此处与源代码是对应的。TLS表是在资源节.rdata中,实际只有一个TLS资源,起始地址内容如下。编译为x64程序后,通过CFF观察TLS回调函数表。
2026-08-20 10:53:55
195
原创 如何通过全局Hook 实现动态启动进程隐藏特定目标进程,
这里需要改进前面stealth2库,因为存在通过64位explorer启动32位procexp,然后procexp子进程又启动64位孙子进程procexp64的情况,所以需要将stealth2库中InjectDll函数改为shell命令行执行。编译发布过程: 要编译64位HideProce2,同时编译32位HideProce3_x86.exe, stealth2_x86.dll, 编译64位HideProce3.exe, stealth2.dll。
2026-08-19 12:50:04
229
原创 逆向工程核心原理,64位下Hook IAT导入地址表
简单而言就是这几个结构体有变动:PIMAGE_NT_HEADERS64、PIMAGE_OPTIONAL_HEADER64、PIMAGE_THUNK_DATA64。还有一点就是书中目标是Hook 计算器程序cacl.exe,而在win10/win11中该程序为Calculator.exe或CalculatorApp.exe,该程序是UWP打包的应用程序,安全性上相对win7/winxp有很大提升,Hook之后一般都会出现访问deny的权限问题。// 设置此对话框的图标。// CDlgApp1Dlg 对话框。
2026-08-18 12:59:03
227
原创 逆向工程核心原理,64位系统下HOOK隐藏进程
(2)原书中使用Jmp imm32相对地址跳转,此时只能适应2GB字节空间,而实际64位系统下,系统API空间、用户动态库函数地址空间相差非常大,故相对地址跳转不合适。64位下应注入procexp64.exe进程,虽然它是通过32位父进程启动的,64位系统下实际使用改进程查看进程信息。// 0x000,下一个条目偏移(0 表示末尾)// 0x054(64 位为 8 字节)// 0x068(64 位为 8 字节)// 0x054(64 位为 8 字节)// 0x068(64 位为 8 字节)
2026-08-18 12:29:54
236
使用libwebsocket技术.docx
2019-11-28
vtigercrm504生成工具vtlib+生成界面
2009-07-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅