|
本帖最后由 slore 于 2016-5-14 10:23 编辑
1.临时目录改变后无法全局生效,重开TC又回到X盘了,不过一般也不会有问题
除非极端情况,x盘 32位有1G,64位8G
3.原生的文件对话框中做完操作(比如新建一个文件夹)不会及时刷新,结束壁纸进程就可以
原PE默认壁纸进程wallpaperhost,现在用PExlorer都存在这个问题
1. setx命令可以修改环境变量并通知所有程序,全局生效。可以试试。
主要说下3问题:
因为PExlorer利用打开对话框做文件管理器了,所以这里看了下。
comdlg32.dll!CFileOpenSave::Show(struct HWND__ *)
shell32.dll!SHChangeNotifyRegisterThread()
shell32.dll!_SCNGetWindow()
shell32.dll!_SCNGetWindow()
shell32.dll!_GetDesktop(void) <- 获取桌面窗口,存在就将变化通知事件发送到桌面窗口处理
..
shell32.dll!SCNInitialize() <- 桌面窗口如果不存在,程序自己进行变化通知ChangeNotify事件处理
所以处理方法,让_GetDesktop()获取桌面窗口后,让程序认为不存在桌面窗口。
把je跳转语句(74)改为jmp常跳转指令(EB)。
_SCNGetWindow
00007FFF7E053608
...
00007FFF7E053643 e8 xx xx xx xx call _GetDesktop (07FFF7DFBD95Ch)
00007FFF7E053648 48 85 c0 test rax,rax
00007FFF7E05364B 74 je _SCNGetWindow+6Ch (07FFF7E053674h)
74->EB ---> je->jmp
修改方法:
1.用UE或者Hex打开shell32.dll,搜索定位码
2(x64).找到定位码之后,看后面大概是 3f e8 xx xx xx xx xx 48 85 c0 74 <- 这个74就是关键跳转
2(x86).找到定位码之后,看后面大概是 38 e8 xx xx 00 00 85 c0 74 <- 这个74就是关键跳转
★应该只匹配1处,有多处的话,请告诉我版本号。
3.修改74为EB后,替换内核shell32.dll,则打开对话框将自动更新。
PExlorer.exe(RC2.3)是内存修改,只对PExlorer.exe的进程有效,好处是不改内核,
通过配置文件修改指定关键跳转地址即可。启动的notpead.exe等程序的打开无效。
如果直接更新内核shell32.dll,所有打开对话框都会自动更新。
-
- "::文件管理器":
- {
- "注释":"默认为false,自己手动刷新影响也不大,需要的人自己确定关键地址后设置为true",
- "shell32_hacker":false,
- "shell32x64_hacker_addr":"0xC8017",
- "shell32x86_hacker_addr":"0x19BA5F"
- }
复制代码
0xC8017 为Win10版本(x64 shell32.dll 10.0.10586.0)的关键跳转地址
0x19BA5F 为Win10版本(x86 shell32.dll 10.0.10586.0)的关键跳转地址
shell32.dll的版本不一样的话,偏移值可能不同,请修改配置文件。
关键跳转地址搜索例:
_SCNGetWindow
shell32.dll(x64)
文件偏移地址
48 8b 00 48 83 c4 20 5b c3 83 fb 01 74 <- x64 定位码
0xF2A40 01 74 3f e8 14 a3 f6 ff 48 85 c0 74 27 48 8d 15
0xF2A4B
__SCNGetWindow@4:
shell32.dll(x86)
文件偏移地址
8b 00 5e 8b e5 5d c3 83 fe 01 74 <- x86 定位码
0x19AB00 e5 5d c3 83 fe 01 74 38 e8 0a 02 00 00 85 c0 74
0x19AB0F
|
|