<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[joinpark的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/joinpark</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; joinpark]]></copyright><item><title><![CDATA[逆向-下字符串查找的条件断点]]></title><link>https://blog.youkuaiyun.com/joinpark/article/details/142673484</link><guid>https://blog.youkuaiyun.com/joinpark/article/details/142673484</guid><author>joinpark</author><pubDate>Tue, 01 Oct 2024 19:19:37 +0800</pubDate><description><![CDATA[注意由于下脚本断点速度影响较大，文件访问很多，导致系统很慢，可以在console程序访问该文件前，使用 system("pause");暂停，然后再下断点。或者下了断点先禁用，等运行console程序停下来，再使能断点。为了跟踪console程序在访问某个文件时失败的问题，在内核中下了断点，但是内核中文件部分调用太频繁了，无法等到自己的文件。想要在FileName是指定文件时停下来，例如FileName是c:\temp\file.txt的时候。下断点在这里，断点到了之后，查看汇编。]]></description><category></category></item><item><title><![CDATA[微软detours代码借鉴点备注]]></title><link>https://blog.youkuaiyun.com/joinpark/article/details/136071582</link><guid>https://blog.youkuaiyun.com/joinpark/article/details/136071582</guid><author>joinpark</author><pubDate>Fri, 05 Apr 2024 21:46:32 +0800</pubDate><description><![CDATA[得到主程序的入口，方法获取module的基地址，此处是PIMAGE_DOS_HEADER，根据这个信息查找PIMAGE_NT_HEADERS，从里面获取entrypoint的地址，一个例外是如果存在PDETOUR_CLR_HEADER，则获取模块MSCOREE.DLL，返回该dll的函数_CorExeMain。根据给出的指令地址，找出一个可以放置detours tramplines的位置，该函数解析了目标函数的第一个指令，如果是相对跳转，则根据相对跳转的指令的位置，重新计算tramplines的位置。]]></description><category></category></item><item><title><![CDATA[sandoxie获取系统服务调用地址]]></title><link>https://blog.youkuaiyun.com/joinpark/article/details/136964522</link><guid>https://blog.youkuaiyun.com/joinpark/article/details/136964522</guid><author>joinpark</author><pubDate>Sat, 23 Mar 2024 12:22:40 +0800</pubDate><description><![CDATA[函数Hook_Find_ZwRoutine从ZwWaitForSingleObject API开始找到ZwUnloadKey + 0x140的二进制位置，根据指令查找服务号等于ServiceNum的地址，以下都是根据代码规律硬编码查找服务号。//从函数开头开始分析，直到找到INST_SYSCALL指令，或者找到jmp,call等则递归调用Hook_FindSyscall2。虽然不使用用nt函数地址，但是需要根据nt函数地址是否正确来决定是否获取ZwSerivce的地址。//索引处，得到相对位置。]]></description><category></category></item><item><title><![CDATA[VS2019工程设置WindowsKernelModeDriver10.0工程指向的路径错误，指向VS2015的问题]]></title><link>https://blog.youkuaiyun.com/joinpark/article/details/132623977</link><guid>https://blog.youkuaiyun.com/joinpark/article/details/132623977</guid><author>joinpark</author><pubDate>Fri, 08 Sep 2023 14:52:31 +0800</pubDate><description><![CDATA[即使vs2019卸载重新安装也解决不了该问题，可能是windows kits没有跟随卸载？猜测原因可能是vs2019开始安装的时候会安装windows kits，安装windows kits的时候会自动运行WDK.vsix，之后vs2019卸载重装不会重新安装kits，所以不会自动帮助安装这个功能。VS2019工程设置WindowsKernelModeDriver10.0，工程include指向的路径错误，不是指向VS2019，而是指向了VS2015的include路径。]]></description><category></category></item><item><title><![CDATA[程序异常的堆栈查看]]></title><link>https://blog.youkuaiyun.com/joinpark/article/details/130216178</link><guid>https://blog.youkuaiyun.com/joinpark/article/details/130216178</guid><author>joinpark</author><pubDate>Tue, 18 Apr 2023 10:40:11 +0800</pubDate><description><![CDATA[原先的上下文被保存，直接切换成了异常的上下文。可以看到最后调用了0地址，导致崩溃，查看实际代码，是加载dll，并后去地址func，结果func是空导致崩溃。这里看到的是异常发生后的堆栈，异常的处理，是一个异常处理的上下文。当程序异常时，使用vs查看可能会看不到正确的堆栈，例如。]]></description><category></category></item><item><title><![CDATA[windbg脚本编写和调试]]></title><link>https://blog.youkuaiyun.com/joinpark/article/details/130090771</link><guid>https://blog.youkuaiyun.com/joinpark/article/details/130090771</guid><author>joinpark</author><pubDate>Tue, 11 Apr 2023 19:39:38 +0800</pubDate><description><![CDATA[3.CreateFileW时如何查找a.txt并停下，同时未命中时输出全部文件名的脚本，64位。写一个脚本，例如写一个脚本1.txt，放在c:\tmp下。假设第一个指针是0x0a4db828。4.如何遍历指针->指针->指针。直接在windbg命令行里运行。2.如何下断点的时候执行脚本。]]></description><category></category></item><item><title><![CDATA[centos 模拟路由器功能实现内网和外网的联通]]></title><link>https://blog.youkuaiyun.com/joinpark/article/details/128219865</link><guid>https://blog.youkuaiyun.com/joinpark/article/details/128219865</guid><author>joinpark</author><pubDate>Wed, 07 Dec 2022 14:52:15 +0800</pubDate><description><![CDATA[centos 路由设置和windows增加路由]]></description><category></category></item><item><title><![CDATA[error MSB3073 报错原因]]></title><link>https://blog.youkuaiyun.com/joinpark/article/details/124414265</link><guid>https://blog.youkuaiyun.com/joinpark/article/details/124414265</guid><author>joinpark</author><pubDate>Mon, 25 Apr 2022 20:59:38 +0800</pubDate><description><![CDATA[1&gt;*** PARSE FAILURE ***
1&gt;C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(279,5): error MSB3073: The command "@echo off
1&gt;C:\Program Files (x86)\Microsoft Visual Studio\2019\P.]]></description><category></category></item><item><title><![CDATA[COM connect point server建立步骤]]></title><link>https://blog.youkuaiyun.com/joinpark/article/details/120567598</link><guid>https://blog.youkuaiyun.com/joinpark/article/details/120567598</guid><author>joinpark</author><pubDate>Thu, 30 Sep 2021 16:39:18 +0800</pubDate><description><![CDATA[VS2019，新建ATL project.



名字ATLFindServer



在解决方案资源管理器里右键ATLFindServer工程，添加新项目



选择ATL 简单对象ATLFindObject，创建在启动里面，勾选“连接点”



在类视图里，接口IATLFindObject右键添加方法FindObject，参数BSTR name，如下图：



在ATLFindServer.idl中IATLFIndObjectEvents中添加NotifyFindObject函数



然后再_IATL]]></description><category></category></item><item><title><![CDATA[微软ATL样例指导]]></title><link>https://blog.youkuaiyun.com/joinpark/article/details/120561581</link><guid>https://blog.youkuaiyun.com/joinpark/article/details/120561581</guid><author>joinpark</author><pubDate>Thu, 30 Sep 2021 10:15:05 +0800</pubDate><description><![CDATA[按照微软的例子，发现com的dll无法再ie中显示

Adding a Control (ATL Tutorial, Part 2) | Microsoft Docsy

可以自己做一个dlg程序，再dlg中insert activex，选择web browser

然后打开rc文件，可以看到

IDD_TESTPOLYCTL_DIALOG DIALOGEX 0, 0, 320, 200
STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_]]></description><category></category></item><item><title><![CDATA[强制加载一个不匹配的pdb]]></title><link>https://blog.youkuaiyun.com/joinpark/article/details/120104259</link><guid>https://blog.youkuaiyun.com/joinpark/article/details/120104259</guid><author>joinpark</author><pubDate>Sat, 04 Sep 2021 19:15:06 +0800</pubDate><description><![CDATA[windbg加载符号表，有时候遇到符号表不对应的情况。有时候你是因为重新编译了一下，代码并没有修改。此时由于pdb变化，而之前的调试的pdb没有保留，可能不得不重新替换文件进行重新调试。大可不必。

可以使用如下的命令为模块加载一个符号不对应的模块：

/i
Ignores a mismatch in the .pdb file versions. (If you do not include this parameter, the debugger does not load mismatched sym]]></description><category></category></item><item><title><![CDATA[在dump中查找lowlevel中的数据]]></title><link>https://blog.youkuaiyun.com/joinpark/article/details/119783728</link><guid>https://blog.youkuaiyun.com/joinpark/article/details/119783728</guid><author>joinpark</author><pubDate>Wed, 18 Aug 2021 18:20:15 +0800</pubDate><description><![CDATA[在dump中，查找entry.asm的二进制字节

_RtlFindActivationContextSectionString的二进制：

0:000&gt; s 0012ff40 L2000000 8B 46 20 8A 56 2C
00000000`00500cd8 8b 46 20 8a 56 2c 88 10-8b 56 2d 89 50 01 b9 10 .F .V,...V-.P...
0:000&gt; u 00500cd8 
00000000`00500cd8 8b4620   ...]]></description><category></category></item><item><title><![CDATA[Sandboxie注入notepad.exe进程空间中的变化]]></title><link>https://blog.youkuaiyun.com/joinpark/article/details/113751611</link><guid>https://blog.youkuaiyun.com/joinpark/article/details/113751611</guid><author>joinpark</author><pubDate>Thu, 12 Aug 2021 17:01:20 +0800</pubDate><description><![CDATA[m_LdrInitializeThunk = 0x000000007775c320
正常的代码
000000007775C320 push    rbx 
000000007775C322 sub     rsp,20h 
000000007775C326 mov     rbx,rcx 
000000007775C329 call    000000007775C350 
000000007775C32E mov     dl,1 
000000...]]></description><category></category></item><item><title><![CDATA[Sandboxie注入过程]]></title><link>https://blog.youkuaiyun.com/joinpark/article/details/113752073</link><guid>https://blog.youkuaiyun.com/joinpark/article/details/113752073</guid><author>joinpark</author><pubDate>Thu, 12 Aug 2021 16:57:23 +0800</pubDate><description><![CDATA[沙箱进程启动后驱动获取了进程启动信息，通知到svc进程。

svc进程执行Inject_low。

首先在目标进程中申请一个空间，地址remote_addr，长度lowdata的长度，将LowData放进去。这个数据是一个dll，工程是LowLevel，作为资源放在svc中，在注入前已经释放出来。

申请的空间中的数据如图entry.asm。

申请数据分成两部分，一部分是.text执行代码，一部分是.zzzz。

其中.zzzz包含两个指针，一个是_Start，指向了运行代码的位置，这个很关键，这是程..]]></description><category></category></item><item><title><![CDATA[USB3.0双机调试常见问题]]></title><link>https://blog.youkuaiyun.com/joinpark/article/details/118599438</link><guid>https://blog.youkuaiyun.com/joinpark/article/details/118599438</guid><author>joinpark</author><pubDate>Thu, 12 Aug 2021 16:56:53 +0800</pubDate><description><![CDATA[具体配置方式请参考：

https://blog.youkuaiyun.com/angelxf/article/details/101520362

常见问题：

1.host 主机无法连接，提示设备无法正常使用。如下图，会出现usb debug connection device不正常的情况。

可以将该设备删除再刷新一下，通常可以好使。



卸载后再刷新：





2.驱动无法正常安装。

不知道为什么，host主机的驱动不是正常签名的，所以无法安装。可以使用 “强制禁止驱动签名”的方法启动host主机，然后.]]></description><category></category></item><item><title><![CDATA[Sandboxie shellcode lowlevel加载pdb进行调试]]></title><link>https://blog.youkuaiyun.com/joinpark/article/details/113771997</link><guid>https://blog.youkuaiyun.com/joinpark/article/details/113771997</guid><author>joinpark</author><pubDate>Thu, 12 Aug 2021 16:56:09 +0800</pubDate><description><![CDATA[首先查看LdrInitializeThunk的指令，查看之前的文章（），看到如下的信息:

001&gt;u 0x000000007775c320

ntdll!LdrInitializeThunk:
00000000`7775c320 e90b47a088   jmp  00000000`00160a30

这个是跳转到entry.asm
001&gt;u00000000`00160a30

00000000`00160a30 4883ec28    sub   rsp,28h...]]></description><category></category></item><item><title><![CDATA[Sandboxie按需HOOK]]></title><link>https://blog.youkuaiyun.com/joinpark/article/details/113789014</link><guid>https://blog.youkuaiyun.com/joinpark/article/details/113789014</guid><author>joinpark</author><pubDate>Thu, 11 Feb 2021 11:17:02 +0800</pubDate><description><![CDATA[很多hook，为了挂载一些函数会直接load相关的dll，然后加载。或者因为依赖关系的原因相应的dll会被加载，这有时候会导致有些进程加载一些不必要的dll。

我们看Sandboxie的处理。

Sandboxie对在初始化的时候挂载了

LdrQueryImageFileExecutionOptions

进程加载dll完成后会调用该函数，此时可根据当前加载的dll的信息，对该dll相关的函数进行hook。


_FX void Ldr_MyDllCallbackA(const CHAR *ImageN]]></description><category></category></item><item><title><![CDATA[Sandboxie注入库对进程外资源的安全访问]]></title><link>https://blog.youkuaiyun.com/joinpark/article/details/106749835</link><guid>https://blog.youkuaiyun.com/joinpark/article/details/106749835</guid><author>joinpark</author><pubDate>Mon, 08 Feb 2021 09:22:15 +0800</pubDate><description><![CDATA[有些情况下需要让注入的库和外部进程或驱动通信，

很多情况下可以直接让动态库通过rpc或打开设备进行通信，但是这也就意味着其他的任何程序只要符合该接口标准都可以通过这些接口进行通信。

为了让注入的动态库和外部进程和驱动安全通信，Sandboxie在服务进程中打开设设备，并复制句柄，将句柄赋权给注入进程。这样其他的进程就可以访问设备了。

打开设备：

 RtlInitUnicodeString(&amp;uni, API_DEVICE_NAME);
  InitializeObjectAttrib...]]></description><category></category></item><item><title><![CDATA[VS2019支持xp]]></title><link>https://blog.youkuaiyun.com/joinpark/article/details/111380604</link><guid>https://blog.youkuaiyun.com/joinpark/article/details/111380604</guid><author>joinpark</author><pubDate>Fri, 18 Dec 2020 16:31:48 +0800</pubDate><description><![CDATA[安装的时候选择如下，注意第一个框C++桌面程序的 “MSVC141 windows xp支持”不要选择，要选择下面的，单个组件的


]]></description><category></category></item><item><title><![CDATA[编译错误 Error: The operation could not be completed. 未指定的错误]]></title><link>https://blog.youkuaiyun.com/joinpark/article/details/111225324</link><guid>https://blog.youkuaiyun.com/joinpark/article/details/111225324</guid><author>joinpark</author><pubDate>Tue, 15 Dec 2020 17:01:30 +0800</pubDate><description><![CDATA[服务器上后台命令行编译VC sln解决方案，一个工程报“Error: The operation could not be completed. 未指定的错误 ”。

再服务器上打开sln，把出错的工程卸载，然后重新加载，然后再编译问题消失。

再次记录，希望对遇到这种问题的同行有用。


...]]></description><category></category></item></channel></rss>