卸载360
1. msiInstallProduct MsiConfigureProduct //参数中需要360的product code, 找不到
2. 把explore复制到桌面通过 参数运行 uninst.exe //报风险程序
3. 把explore复制重命名到桌面 运行 uninst //提示文件下载框,可以运行。
4. 添加计划任务运行 uninst.exe //报文件修改计划任务
5. 注入explore代码 运行 uninst.exe // 可以正常卸载360,出现卸载框。
6. 通过wmi开启进程运行 uninst.exe //报毒
7. ShellExecute,WinExec,CreateProcess //报毒
控制面板:
比如运行添加删除程序
会启动一个rundll32.exe进程,命令行为
'"C:\WINDOWS\system32\rundll32.exe" C:\WINDOWS\system32\shell32.dll,Control_RunDLL "C:\WINDOWS\system32\appwiz.cpl",添加或删除程序'
kernel32!BaseProcessStart->rundll32!_ModuleEntry->rundll32!WinMainT->SHELL32!Control_RunDLLW->SHELL32!CPL_RunMeBaby->SHELL32!CPL_CallEntry->appwiz!CPlApplet->appwiz!ARP->开始每个applet窗口得而消息循环。
xp中的appwiz添加删除程序选择删除哪一个是通过Uninstall_UninstallCurrentItem函数中,给listbox发送一个LB_GETCURSEL消息.
在CPL_CallEntry函数中,通过LPCPLMODULE结构,这是个函数指针,指向了每个applet的入口函数,比如添加删除程序的appwiz!CPlApplet。
这个指针在_InitializeCPLModule函数中通过给listbox发送一个LB_GETCURSEL消息.
pcplm->lpfnCPL32 = (APPLET_PROC)GetProcAddress(pcplm->minst.hinst, c_szCPLApplet);得到。
在control1.c中static char const c_szCPLApplet[] = "CPlApplet";即每个applet dll 的 CPlApplet函数.
--写于2013-10-22