<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[jx02的专栏]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/jx02</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; jx02]]></copyright><item><title><![CDATA[通过计算程序运行时间反动态调试]]></title><link>https://blog.csdn.net/jx02/article/details/164172102</link><guid>https://blog.csdn.net/jx02/article/details/164172102</guid><author>jx02</author><pubDate>Sat, 29 Aug 2026 18:16:20 +0800</pubDate><description><![CDATA[这里主要是修改扩展32位_asm{}汇编代码，替换为64位汇编函数，该函数传出比对结果。结果若干时间循环后，再次比对时间戳的差异：若高32位相同，则不会崩溃，并将低32位差异值存储到rsp+28h栈上。在函数结束前，将栈上结果再传入rax。详细ml64汇编代码如下。如果调试时有较长时间停顿，则会跳转至_DEBUGGER_FOUND标号导致程序崩溃。如果几乎没有占用调试时间，则能正常结束。]]></description><category></category></item><item><title><![CDATA[利用SEH实现动态反调试]]></title><link>https://blog.csdn.net/jx02/article/details/164121704</link><guid>https://blog.csdn.net/jx02/article/details/164121704</guid><author>jx02</author><pubDate>Thu, 27 Aug 2026 17:36:14 +0800</pubDate><description><![CDATA[在32位扩展asm中首先有一个int 3 断点异常，此处在x64中总会让人感觉怪怪的。但是x64中，扩展asm是一个完整的函数，故最后必须ret返回地址。在32位程序中，可以在cpp中直接内嵌扩展 _asm{}  汇编代码。而在64位程序中，VS2019开发环境中是不允许这样做的，所以需要添加一个cpp项目，将文件名改为*.asm，并单独指定该文件的属性为自定义生成工具，就像下面这样。具体可参考下面的源码。如果要在x64dbg中调试该段程序，必须要设置“选项 | 选项 | 异常”，具体如图所示。]]></description><category></category></item><item><title><![CDATA[逆向工程核心原理，关于反静态调试]]></title><link>https://blog.csdn.net/jx02/article/details/164084589</link><guid>https://blog.csdn.net/jx02/article/details/164084589</guid><author>jx02</author><pubDate>Wed, 26 Aug 2026 12:59:24 +0800</pubDate><description><![CDATA[逆向工程核心原理，64位下静态反调试技术]]></description><category></category></item><item><title><![CDATA[利用TLS回调反调试]]></title><link>https://blog.csdn.net/jx02/article/details/163909948</link><guid>https://blog.csdn.net/jx02/article/details/163909948</guid><author>jx02</author><pubDate>Thu, 20 Aug 2026 10:53:55 +0800</pubDate><description><![CDATA[第45章讲的是TLS回调函数，很大篇幅在讲如何手工编辑PE文件来插入TLS回调函数。具体要点只有两处，一是指定编译选项链接_tls_used，二是指定编译选项链接TLS回调函数表的符号。TLS.AddressOfCallbacks首地址0x01400102EB内容为0x01040001000, 即第一个TLS回调函数地址，也就是上图中第一行位置所示，此处与源代码是对应的。TLS表是在资源节.rdata中，实际只有一个TLS资源，起始地址内容如下。编译为x64程序后，通过CFF观察TLS回调函数表。]]></description><category></category></item><item><title><![CDATA[如何通过全局Hook 实现动态启动进程隐藏特定目标进程，]]></title><link>https://blog.csdn.net/jx02/article/details/163884574</link><guid>https://blog.csdn.net/jx02/article/details/163884574</guid><author>jx02</author><pubDate>Wed, 19 Aug 2026 12:50:04 +0800</pubDate><description><![CDATA[这里需要改进前面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。]]></description><category></category></item><item><title><![CDATA[逆向工程核心原理，64位下Hook IAT导入地址表]]></title><link>https://blog.csdn.net/jx02/article/details/163852566</link><guid>https://blog.csdn.net/jx02/article/details/163852566</guid><author>jx02</author><pubDate>Tue, 18 Aug 2026 12:59:03 +0800</pubDate><description><![CDATA[简单而言就是这几个结构体有变动：PIMAGE_NT_HEADERS64、PIMAGE_OPTIONAL_HEADER64、PIMAGE_THUNK_DATA64。还有一点就是书中目标是Hook 计算器程序cacl.exe，而在win10/win11中该程序为Calculator.exe或CalculatorApp.exe，该程序是UWP打包的应用程序，安全性上相对win7/winxp有很大提升，Hook之后一般都会出现访问deny的权限问题。// 设置此对话框的图标。// CDlgApp1Dlg 对话框。]]></description><category></category></item><item><title><![CDATA[逆向工程核心原理，64位系统下HOOK隐藏进程]]></title><link>https://blog.csdn.net/jx02/article/details/163851383</link><guid>https://blog.csdn.net/jx02/article/details/163851383</guid><author>jx02</author><pubDate>Tue, 18 Aug 2026 12:29:54 +0800</pubDate><description><![CDATA[（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 字节）]]></description><category></category></item></channel></rss>