项目:我喜欢Windows Vista附带的程序,而且我喜欢Windows 7.截至目前,我有Windows Movie Maker,Windows DVD Maker,Windows日历和Windows Mail都可以正常工作,而且它们都是如此比Windows Live更好。我意识到Windows Live Photo Gallery 2009与Windows Vista Photo Gallery类似,但除了我的OCD关于界面之外,它根本没有与其他程序集成。那么,第一个问题就变成了,为什么它不像其他人一样工作?我已经开始寻求发现。
首先,我做了很多试验和错误。我尝试注册dll,但什么也没发生。我的假设变成了系统中的某些内容被修补以防止它像Mail一样工作,但我已经意识到这个想法有问题,即Mail留在系统上而Photo Gallery没有,而Movie Maker不应该工作通过那种逻辑。我在交换dll后发现的是,可执行文件可以互换,但只能打开Windows Live Mail,而不是相反。当我没有正确安排dll时,程序根本没有打开,所以我认为它是dll不兼容的。好吧,我决定让OllyDBG出来并在汇编代码中找到根源(这很糟糕,因为我是Java的初学者),但我过去看过简单的逆向工程教程,并认为我会试一试。
我开始使用x86版本的Photo Gallery。我在Windows 7 x64和Widows Vista x64上执行它。在Windows 7上它只是关闭,好像我自己点击退出按钮(但我没有),没有对话。在Windows Vista上它运行,所以我关闭它,两者都在ntdll.dll中的相同位置。抱歉,我必须链接到图片而不是上传,我没有任何声誉,因为我不会来这里。
注意区别?在Windows 7中,每隔几行就有一个ADD.ESP 4。 Vista中的地址也是一致的,而每次打开时它们都会改变(至少对于主要的可执行文件)我不知道这意味着什么,但如果有人这样做可能会有启发性。
这个很奇怪,因为在Windows Vista中它可以工作,我得到ERROR_SXS_KEY_NOT_FOUND(0x36B7)。程序执行得很好。我曾经想过,如果我能找到它在Windows 7中发现它不在Vista中的内容,并以某种方式将其删除(有人可能会质疑这是不是一个好主意,但如果它导致了这个,那么它可能是垃圾无论如何,它可能(但可能不会像我尝试的其他所有东西一样)解决问题。
稍后我回头看了一下,并开始在不同的时间暂停程序,我发现附件A中的所有部分都是(我认为)执行dll,但是在Vista MOV EAX中,29直到我自己关闭了程序,所以即使M $没有故意修补它(现在也不认为它们会这样做),看来新的ntdll由于某种原因在它碰到关闭函数之前不知道停止了。我尝试了各种修补方法。我使用调用堆栈来显示ntdll.772CFCB0的调用,然后我带着胡萝卜走到第一行并开始NOP,因为我知道这是一个独特的关闭功能,但我不会记得在哪里(我可能是错的),但我保存了一个备份并修补了ntdll,我用其他几个可疑区域做了这个,甚至试图删除MOV EAX,29(我忘了它也存在并使用过在Vista当时,但我是一个菜鸟)。然而,修补都不重要。即使放在SysWOW64下,ntdll总是看起来一样,即使我改变了它。改变后的文件在我说的时候仍然完好无损,所以M $必须在我身上扯下另一个糟糕的安全举动(我知道他们希望我的系统能够安全地防范黑客,但当他们开始保护我免受我攻击时,我得到了有点不高兴,我的意思是我至少知道ntdll没有被Windows资源管理器或其他永久运行的进程使用,因为我检查过,我有一个备份,我很快就会恢复。)
很抱歉这么久了,我已经付出了相当多的努力,而且我在网上的搜索中还有其他人会像我一样修复这个问题,所以如果有人能帮助我们(因为我打算如果它得到修复,帮助其他人解决问题,我们将不胜感激。
感谢。
更新:以下是WinDBG的结果。
Microsoft (R) Windows Debugger Version 6.3.9600.17298 X86
Copyright (c) Microsoft Corporation. All rights reserved.
CommandLine: "C:\Program Files (x86)\Windows Photo Gallery\WindowsPhotoGallery.exe"
************* Symbol Path validation summary **************
Response Time (ms) Location
Deferred SRV*D:\Symbols*http://msdl.microsoft.com/download/symbols
Symbol search path is: SRV*D:\Symbols*http://msdl.microsoft.com/download/symbols
Executable search path is:
ModLoad: 00f70000 00f95000 WindowsPhotoGallery.exe
ModLoad: 772b0000 77430000 ntdll.dll
ModLoad: 767e0000 768f0000 C:\Windows\syswow64\kernel32.dll
ModLoad: 76bb0000 76bf7000 C:\Windows\syswow64\KERNELBASE.dll
ModLoad: 74d60000 74e0c000 C:\Windows\syswow64\msvcrt.dll
ModLoad: 706e0000 706ec000 C:\Program Files (x86)\Windows Photo Gallery\PhotoBase.dll
ModLoad: 75350000 754ac000 C:\Windows\syswow64\ole32.dll
ModLoad: 752b0000 75340000 C:\Windows\syswow64\GDI32.dll
ModLoad: 76620000 76720000 C:\Windows\syswow64\USER32.dll
ModLoad: 76e10000 76eb0000 C:\Windows\syswow64\ADVAPI32.dll
ModLoad: 765c0000 765d9000 C:\Windows\SysWOW64\sechost.dll
ModLoad: 76d20000 76e10000 C:\Windows\syswow64\RPCRT4.dll
ModLoad: 74cd0000 74d30000 C:\Windows\syswow64\SspiCli.dll
ModLoad: 74cc0000 74ccc000 C:\Windows\syswow64\CRYPTBASE.dll
ModLoad: 76d10000 76d1a000 C:\Windows\syswow64\LPK.dll
ModLoad: 76740000 767dd000 C:\Windows\syswow64\USP10.dll
(15a8.ac8): Break instruction exception - code 80000003 (first chance)
eax=00000000 ebx=00000000 ecx=e1530000 edx=000adbf8 esi=fffffffe edi=00000000
eip=7735103b esp=001cf874 ebp=001cf8a0 iopl=0 nv up ei pl zr na pe nc
cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00000246
ntdll!LdrpDoDebuggerBreak+0x2c:
7735103b cc int 3