GetProcAddress+0x44 (FPO: [Non-Fpo]) 0037eb94 753939a7 766c0000 756da27c 00000002 SHELL32! __delayLoadHelper2+0xe9 (FPO: [Non-Fpo]) 0037ec30 7539439a 0037f0b8 00020019 0037ed08 SHELL32! _tailMerge_ole32_dll+0xd 0037ed88 7539498a 0037f0b8 0037ee1c 87ee6cf8 SHELL32! SHGetFolderPathEx+0x30 (FPO: [Non-Fpo]) 02a8e700 754277a7 00000000 0000801a 00000000 SHELL32! 两个堆栈中都出现了 SHELL32!SHGetFolderPathW,是否这个函数执行时需要占用一个临界区呢?1e84 线程中比较靠近栈顶的 SHELL32!
GetProcAddress+0x44 (FPO: [Non-Fpo]) 0037eb94 753939a7 766c0000 756da27c 00000002 SHELL32! __delayLoadHelper2+0xe9 (FPO: [Non-Fpo]) 0037ec30 7539439a 0037f0b8 00020019 0037ed08 SHELL32! _tailMerge_ole32_dll+0xd 0037ed88 7539498a 0037f0b8 0037ee1c 87ee6cf8 SHELL32! SHGetFolderPathEx+0x30 (FPO: [Non-Fpo]) 02a8e700 754277a7 00000000 0000801a 00000000 SHELL32! 两个堆栈中都出现了 SHELL32!SHGetFolderPathW,是否这个函数执行时需要占用一个临界区呢?1e84 线程中比较靠近栈顶的 SHELL32!
Control_RunDLL mmsys.cpl,,0 # 麦克风 rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,1 打开控制面板 rundll32 shell32 ,Control_RunDLL 打开关于 查看系统版本 rundll32 shell32,ShellAboutA Info-Box 打开应用卸载页面 rundll32.exe shell32.dll,
BIF_DONTGOBELOWDOMAIN = 2 Private Const MAX_PATH = 260 Private Declare Function SHBrowseForFolder Lib "shell32 " (lpbi As BrowseInfo) As Long Private Declare Function SHGetPathFromIDList Lib "shell32" (ByVal pidList
MSI (s) (E4:58) [11:12:23:986]: SHELL32::SHGetFolderPath returned: C:\Users\Administrator\Favorites \Microsoft\Windows\Network Shortcuts MSI (s) (E4:58) [11:12:24:002]: SHELL32::SHGetFolderPath returned : C:\Users\Administrator\Documents MSI (s) (E4:58) [11:12:24:002]: SHELL32::SHGetFolderPath returned: : C:\Users\Administrator\AppData\Local MSI (s) (E4:58) [11:12:24:002]: SHELL32::SHGetFolderPath returned : C:\Users\Administrator\Pictures MSI (s) (E4:58) [11:12:24:018]: SHELL32::SHGetFolderPath returned:
vlc可执行文件的路径的,然后在网上搜索到这段代码,如下:// 引用→添加引用→左侧菜单的 COM 选项→勾上 Microsoft Shell Controls And Automationusing Shell32 因为 Shell32 命名空间对应的 COM 组件在内部使用了单线程模型(Single-Threaded Apartment, STA),必须在 UI 线程中执行,否则会抛出异常。
Found library 'user32' at user32.dll DPI detection failed, fallback to 96 dpi Looking for library 'shell32 ' Adding paths from jna.library.path: null Trying shell32.dll Found library 'shell32' at shell32.dll
图片84 ReturnWow64DisableWow64FsRedirectionAddr LoadLibrary(shell32): ? 图片85 LoadLibrary(shell32) 传递参数给sub_562B2F,获取shell32.ShellExcute()调用地址: ?
ShellExecute(NULL,”open”,”abc.exe”,NULL,NULL,SW_SHOW); return TRUE; } 但是现在就出现问题了,ShellExecute在shell32
其次,使用bp shell32!SHBrowseForFolderA 和bp shell32!SHBrowseForFolderW下函数断点。
ShellExecute(NULL,”open”,”abc.exe”,NULL,NULL,SW_SHOW); return TRUE; } 但是现在就出现问题了,ShellExecute在shell32
URLDownloadToFileA"",""JJCCJJ"",0,R[-11997]C[84],R[7822]C[89],0,0)",$P$34610)=FORMULA.FILL("=CALL(""Shell32
PostMessageW(self.HWND_BROADCAST, self.WM_SYS_COMMAND, self.SC_MONITOR_POWER, self.MonitorPowerOff) shell32
打开firefox,使用调试器WinDbg 挂载到这个进程,执行这个命令:bp shell32!ShellExecuteW,给函数ShellExecuteW下断点。
直到某次抓取到了一个有趣的 DUMP 文件,通过这个 DUMP 文件发现了在进程退出之前的调用堆栈里面包含了 Shell32 的一些调用 再根据前面的 Process Monitor 工具抓到的在进程退出之前碰的是 Realtek Bluetooth 蓝牙模块,于是重心就在 Shell32 和蓝牙一起组合上面 既然大概定位到这里,那就继续上 ShellView 工具。 通过 ShellView 工具进行大量的 Shell32 组件的禁用,我的做法大概就是看哪个不开森就禁用哪个,进行二分法的禁用,最终发现了是 Realtek Bluetooth 蓝牙模块导致的问题 二分法的禁用就是先一口气禁用一半的组件
StrFormatByteSizeA IN Shlwapi; INTEGER dw, STRING @pszBuf, INTEGER cchBuf DECLARE INTEGER SHGetFileInfo IN shell32
mov edx,dword ptr [eax+8] ... 0:007> dds ecx ; 看起来像完全垃圾,但实际上是由于错位...... 06ca9f42 75d86f6c shell32 __dyn_tls_init_callback (shell32+0x5f6f6c) 06ca9f46 00086f6e 06ca9f4a 75c80000 shell32! __dyn_tls_init_callback (shell32+0x4f0000) 06ca9f4e 75d06f6e shell32!
FindWindow函数获得,将被拖拽文件封装成一个DataObject并获得其IDataObject接口指针的方法有两种: 自己编写C++类实现IDataObject接口; 使用现有类库中的实现,如:MFC, Shell32
7c920000 7c9b6000 ntdll (export symbols) C:\WINDOWS\system32\ntdll.dll 7d590000 7dd84000 SHELL32
ABN_FULLSCREENAPP, ABN_WINDOWARRANGE } [DllImport("SHELL32