wenjiang 的个人资料morning's blog照片日志列表更多 ![]() | 帮助 |
|
|
8月23日 vmware 5.5 rip为了减少vmware的资源占用,也为了还原系统后快速安装vmware,制作了此vmware5.5绿色版.
网络连接使用winpe的netcfg.exe工具进行配置,支持桥接方式联网.不安装额外的服务(DHCP,NAT等统统不需要),不需要虚拟网卡.包含windows vmware tools,linux等平台的没有包含.
使用方法见压缩包内说明,大小11M.
安装脚本借鉴了很多网上的vmware绿化脚本,在此表示感谢.分享仅用于技术交流.
[分享]regvsdll这是一个注册VS dll的小工具,方便想对 VS 软件动手动脚的朋友.这是前几天制作 MSDN 7.0(VS2002/2003的帮助)绿色版的副产品.因为看到dexplore.exe并没有以来.net,所以就提取出来,用这个版本也可以看 windows 7 的SDK的帮助(命令行:dexplore.exe /helpcol ms-help://MS.W7SDK.1033),安装windows7SDK,直接执行win32doc对应的msi,并不检查.net(甚好!)
回到最初的话题.
VS因为各版本并存,CLASSID保存在产品所在的注册表路径下,所以,比起标准的COM Dll注册,多了额外的两个导出函数,VSDllRegisterServer,VSDllUnregisterServer,与不含VS前缀的函数相比,这两个函数有一个参数,LPCWSTR pszRegRoot,用于指定注册表根路径,而不含前缀的则使用dll默认的注册表路径.
typedef HRESULT (WINAPI *pVSRegisterProc)(LPCWSTR pszRegRoot);
typedef HRESULT (WINAPI *pVSUnregisterProc)(LPCWSTR pszRegRoot); 请新建一个 console 工程,删除 main函数,用以下代码覆盖即可(如果你没有CStdString,则新建console工程,1.添加MFC支持,或,2添加atl支持,然后 #define CStdString CString,以及A/W版本).
提取版的mshelp2,以及regvsdll的源代码在此下载: http://cid-2067fca683114503.skydrive.live.com/browse.aspx/Public/mshelp2/ [暂存][部分完成]适用于windows2000的来自windowsXP的msgina本工程的目的是将windows Xp的登录界面移植到windows2000
目前遗留问题:
用于windows2000的winlogon.exe不会去调用xp版本中的无名函数,所以需要通过我们的gina stub实现调用 LogonUI 和 winlogon之间的RPC 通讯会导致线程异常,估计是5.0 和 5.1 之间定义或结构大小有差异 目前已经实现的: 1.windows xp的msgina.dll在2000系统下加载,实现 标准GINA 功能 2.windows xp的logonUI.exe在2000系统下可独立启动(但还不能被winlogon进程调用) 3.如果替换windows2000的msgina,则本gina stub 可以使得windows2000使用windows xp引入的新的蓝色关机画面 目前包含的工程:
1.xp系统文件:gdiplus.dll ,duser.dll ,User Account Pictures 这些不需要修改 2.shell32 (myshell),此工程会被来自xp系统的dll调用,用于实现windows2000系统shell32不具备的功能 3.shsvcs (mysvcs),此工程会被来自xp系统的msgina.dll,shgina.dll调用,用于支持这些dll对此dll的依赖 4.ginaproxy (ginaps),此工程会被 shgina.dll调用,用于自动动态链接当前实际使用的gina.dll 5.uxtheme (mytheme),此工程会被来自xp系统的logonui.exe调用,用于支持这dll对此dll的依赖 6.gina (mygina),用于stub/hook xp的msgina,为其与windows2000上的winlogon.exe相互调用提供桥梁,并内存patch其部分代码,以便使其能运行在windows2000的系统上,文件名可用msgina.dll或其他任意名称,推荐使用msgina.dll,因为系统中许多组件存在对此文件名的检查,如果不是msgina.dll会被禁止一些功能. 7.shgina,这是来自xp系统的文件,经过少量修改,需要调用 ginaps.dll 8.logonui 少量patch,需要调用 mytheme,myshell,shgina 9.msgina 较多patch,需要调用 myshell,mygina,必须由mygina加载 由于只是一段时间code后,进行的crack娱乐,此工程暂停.等忙过一段时间再继续来玩这个~ 分享:修正版dbgvsvc(dbgview 服务端)前几天调试winlogon.exe,用了dbgview的互联功能,但是发现始终连接不上,而且服务启动一会就自动停止了.我用的是dbgview 4.76.follow me,and fix it!
首先从dbgview.exe资源中解压出来: dbgv.sys,dbgvsvc.exe.
然后,创建一个批处理文件,例如 install.bat,内容如下:
@echo off
copy dbgv.sys %systemroot%\system32\
copy dbgvsvc.exe %systemroot%\system32\ %systemroot%\system32\dbgvsvc.exe -install
sc config "DebugViewService" start= auto net start "DebugViewService" pause
运行此批处理文件,即可安装dbgview服务端服务,并设为自动运行.
打开Tcpview.exe,反复启动服务端,发现端口是递增的,OK,看来服务端用的端口是自动分配.然后打开dbgview.exe,试着连接局域网上的任意计算机,发现尝试连接2020~2029端口,OK,难怪连接不上了.
打开 ollydbg(windbg不方便直接修改内存汇编)
找到 socket.bind的引用
00401824 66:8B50 08 mov dx, word ptr [eax+8]
00401828 53 push ebx ; /NetLong 00401829 66:899424 940>mov word ptr [esp+194], dx 00401831 E8 AA160000 call <jmp.&WS2_32.#8_htonl> 00401836 57 push edi ; /AddrLen => 10 (16.) 00401837 8D8C24 940100>lea ecx, dword ptr [esp+194] ; | 0040183E 898424 980100>mov dword ptr [esp+198], eax 00401845 51 push ecx ; |pSockAddr 00401846 33C0 xor eax, eax ; | 00401848 |. 56 push esi ; |Socket 00401849 |. 66:898424 9E0>mov word ptr [esp+19E], ax ; | 00401851 |. E8 84160000 call <jmp.&WS2_32.#2_bind> ; \bind 显然,我们需要将端口固定到能够被搜索的范围,patch 如下,我图省事,就不理会端口被占用的情况了
00401824 66:8B50 08 mov dx, word ptr [eax+8] 00401828 90 nop ; /NetLong 00401829 66:899424 90010000 mov word ptr [esp+190], dx 00401831 B8 07E40000 mov eax, 0E407 00401836 57 push edi ; /AddrLen => 10 (16.) 00401837 8D8C24 94010000 lea ecx, dword ptr [esp+194] ; | 0040183E 899C24 98010000 mov dword ptr [esp+198], ebx 00401845 51 push ecx ; |pSockAddr 00401846 90 nop ; | 00401847 90 nop 00401848 |. 56 push esi ; |Socket 00401849 |. 66:898424 9E010000 mov word ptr [esp+19E], ax ; | 00401851 |. E8 84160000 call <jmp.&WS2_32.#2_bind> ; \bind 修改后固定使用 2020端口,这样世界就连通啦~
然后解决服首先应该想到务启动后没多久就自动停止的问题.
首先应该想到的就是 select 的超时,非常运气,果然如此,dbgvsvc检测到超时后就"自行了断"了,这可不行,应该继续检测等待啊.
so patch as following.
040191F |. E8 3C100000 call dbgvsvc.00402960
00401924 |. 83C4 0C add esp, 0C 00401927 |. 85C0 test eax, eax 00401929 |. 0F84 F5010000 je dbgvsvc.00401B24 0040192F |. 8D5424 78 lea edx, dword ptr [esp+78] 00401933 |. 52 push edx ; /pTimeout 00401934 |. 53 push ebx ; |Exceptfds 00401935 |. 53 push ebx ; |Writefds 00401936 |. 8D8424 940000>lea eax, dword ptr [esp+94] ; | 0040193D |. 50 push eax ; |Readfds 0040193E |. 6A 40 push 40 ; |nfds = 40 (64.) 00401940 |. 89B424 A00000>mov dword ptr [esp+A0], esi ; | 00401947 |. C78424 9C0000>mov dword ptr [esp+9C], 1 ; | 00401952 |. C78424 8C0000>mov dword ptr [esp+8C], 0A ; | 0040195D |. 899C24 900000>mov dword ptr [esp+90], ebx ; | 00401964 |. E8 59150000 call <jmp.&WS2_32.#18_select> ; \select 00401969 |. 83F8 FF cmp eax, -1 0040196C |. 0F84 F7040000 je dbgvsvc.00401E69 00401972 |. 8D8C24 880000>lea ecx, dword ptr [esp+88] 00401979 |. 51 push ecx 0040197A |. 56 push esi 0040197B |. E8 3C150000 call <jmp.&WS2_32.#151___WSAFDIsSet> 00401980 |. 85C0 test eax, eax 00401982 |. 0F84 E1040000 je dbgvsvc.00401E69 只需修改一行代码
00401982 |.^\74 97 \je short dbgvsvc.0040191B
00401984 |. 90 nop 00401985 |. 90 nop 00401986 |. 90 nop 00401987 |. 90 nop OK,这样超时后继续进入等待.
还剩下一个问题,如果一旦连接,客户端断开,那么服务也会自行了断.怎么办呢?由于代码跨度比较大,懒得patch了.反正一般连接上之后也不用反复断开再连上,实在需要的话,设置服务自动重启~.
现在重启服务端计算机,启动后客户端计算机可以立刻连上服务端,监视调试字符输出,此服务最大的用途是,可以接收即将关机时的调试输出.,当然,调试全屏程序也很方便.
enjoy this patch!
//================================================================
额外的,remove.bat:
@echo off
net stop "DebugViewService"
rem 强制结束服务 taskkill /f /im dbgvsvc.exe rem 自带的这个删除不好用 ::dbgvsvc.exe -remove sc delete "DebugViewService" del /F %systemroot%\system32\dbgv.sys del /F %systemroot%\system32\dbgvsvc.exe pause
搬家了,今天网络通啦今天来安装ADSL了,速度还不错. 调试winlogon.exe时遇到的一个疑问[628] <OnLoad_MSGINA>:PID:274,TID:77E77CC4,APP:\??\C:\WINDOWS\system32\winlogon.exe
[1144] <OnLoad_MSGINA>:PID:478,TID:77E77CC4,APP:C:\WINDOWS\system32\logonui.exe 不同的进程ID,相同的线程ID
8月11日 5秒钟启动windows2003,并支持和XP一样的登录界面1.Nod32 2.7的内核服务往往会卡住,将其设置 手动启动,并去掉NOD32的GUI的自动启动,写一个DelayLoader,启动系统后5秒再启动内核服务,10秒后再启动GUI,这样一般可以保证它们有充足的时间慢慢启动,随后对GUI进行内存patch,去掉部分提示(这个使用libBaeWnd类写,配合以前写驱动用的Service控制代码,哦,还有libhook,几分钟搞定)
2.破解 sfc_os.dll,关掉系统对系统盘的监视,当然也不再进行文件保护了,节约系统开销.(此破解方法源于网络上对XP的破解,开调试可以很快定位修改点)
3.破解Winlogon.exe,去掉激活校验,并可以删掉 OEMBin.* 4个文件,节约系统开销,也节约了20M左右的空间,另外,破解后可以方便的进行 Server 和WorkStation的切换.(使用antiwpa-2[1].0-winxp-2k3.zip,使用前把系统代码页切换到english,否则,程序会傻傻的.我的系统是english的但是代码页设置成了中文GBK,所以在这一步卡了一段时间)
4.破解 MSGINA.dll,使得在Server情况下也能正常使用LogonUI.exe,这一点不是为了加快启动速度,只是美化,因为除了这一点都可以通过注册表等设置成和XP一样,唯独这一点必须进行文件破解.破解后可以使用各种绚丽的登录界面,例如现在非常流行的Windows7的登录界面.(这是体力活,因为不想在ghost前安装VM,所以修改后得多次重启验证,做到能少修改则少修改,最终只需要修改4处代码即可在登录,注销,锁定等状态下使用绚丽的LoginUI.exe作为登录界面).
5.卸载掉内置的.net 1.0 1.1,我很反感.net,下载 dotnetfx_cleanup_tool,对其配置进行修改后可以方便的卸载掉2003系统内置的.net模块,如果需要恢复,命令行下输入: rundll32.exe setupApi, InstallHinfSection netfx_install 132 netfxocm.inf ,几秒钟即可恢复内置的.net,不需要重启.
6.删除 Distributed Transaction Coordinator,输入命令: rundll32.exe setupApi, InstallHinfSection dtc_uninstall 132 dtcnt5.inf,这个总是自动启动,删除比较省事
7.删除 pchealth,输入命令: rundll32.exe setupApi, InstallHinfSection DefaultUninstall 132 pchealth.inf,似乎从windowsMe开始的一个东西,但不知道何用,删之
8.清除开始菜单上的 outlook express图标,shmgrate.exe OCInstallHideOE
9.去掉Ctrl+Alt+Del,设成自动登录
// -----以下无关启动速度
10.这是为了更快的浏览网页,编译代码,安装RamDisc,分配给它768M,感觉足以.对不方便开启预编译的工程,效果很明显,VC8以后微软用一个聪明的办法优化了编译中间文件管理( mspdbsrv.exe ),效果不明显;对VC8以前的版本效果很好.IE的临时文件也指向这个磁盘
11. 去掉 TortoiseSVN 的Cache,可以极大提高explorer.exe的响应速度
OK,到此除了借助 windbg,ultraedit,基本没有使用外部工具,优化2003,在我的HP540上的Windows 2003 SE 可以在5秒进入桌面,并很快光标停止忙碌,fine!
共花了一个下午加一个晚上的时间搞定!
关键字: windows 2003,优化,提速,loginui,登录界面,login screen,optimize |
|
|