启动控制面板中的applet时的一点笔记--发文于2013-10-22

来源:互联网 发布:免费淘宝联盟推广软件 编辑:程序博客网 时间:2024/04/30 14:24
卸载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函数.

0 0
原创粉丝点击