Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 在ntdll.dll中的某一点,程序停止;默默地;_Windows_Assembly_Ollydbg_Ntdll_Windowsphotogallery - Fatal编程技术网

Windows 在ntdll.dll中的某一点,程序停止;默默地;

Windows 在ntdll.dll中的某一点,程序停止;默默地;,windows,assembly,ollydbg,ntdll,windowsphotogallery,Windows,Assembly,Ollydbg,Ntdll,Windowsphotogallery,项目:我喜欢WindowsVista附带的程序,我也喜欢Windows7。到目前为止,我的Windows影音制作、Windows DVD制作、Windows日历和Windows Mail都可以正常工作,它们都比Windows Live好得多。我意识到Windows Live照片库2009类似于Windows Vista照片库,但除了我关于界面的OCD之外,它根本不与其他程序集成。第一个问题是,为什么它不能像其他的一样工作?我已开始寻找答案 首先,我做了很多尝试和错误。我试图注册DLL,但什么也没

项目:我喜欢WindowsVista附带的程序,我也喜欢Windows7。到目前为止,我的Windows影音制作、Windows DVD制作、Windows日历和Windows Mail都可以正常工作,它们都比Windows Live好得多。我意识到Windows Live照片库2009类似于Windows Vista照片库,但除了我关于界面的OCD之外,它根本不与其他程序集成。第一个问题是,为什么它不能像其他的一样工作?我已开始寻找答案

首先,我做了很多尝试和错误。我试图注册DLL,但什么也没发生。我的假设是,系统中的某些东西被打了补丁,以防止它像邮件一样工作,但我意识到这种想法存在问题,即邮件留在系统上,而照片库没有,电影制作人不应该按照这种逻辑工作。在交换DLL之后,我发现可执行文件可以互换,但只能打开Windows Live Mail,而不能反过来。当我没有正确安排dll时,程序根本就没有打开,所以我认为这是dll不兼容。我决定将OllyDBG推出并在汇编代码中扎根(这很糟糕,因为我是Java的初学者),但我在过去看过简单的逆向工程教程,并认为我会尝试一下

我从x86版本的照片库开始。我在Windows7x64和WidowsVista x64上执行了它。在Windows7上,它只是简单地关闭,就好像我自己(但我没有)在没有对话框的情况下按下了退出按钮一样。在Windows Vista上它运行了,所以我关闭了它,两个都在ntdll.dll中的同一个位置。对不起,我不得不链接到图片而不是上传,我没有任何声誉,因为我不常来这里

注意到区别了吗?在Windows7中有一个ADD.ESP,每隔几行就有4个。Vista中的地址也是一致的,而在7中,每次我打开时地址都会更改(至少对于主可执行文件),我不知道这意味着什么,但如果有人这样做,可能会有所启发

这一个很奇怪,因为在Windows Vista中,在它工作的地方,我得到了错误“SXS\u KEY\u NOT\u FOUND”(0x36B7)。程序执行得很好。我曾想过,如果我能找到它在Windows7中发现的东西,而它不在Vista中,并以某种方式将其删除(有人可能会质疑这是否是一个好主意,但如果它导致了这一点,那么它可能是一个垃圾密钥),那么它可能(但可能不会像我尝试过的所有其他东西一样)解决这个问题

稍后我回顾了这一点,并开始在不同点暂停程序,我发现附件a中的所有部分(我认为)都在执行DLL,但在Vista MOV EAX中,29在我自己关闭程序之前没有被调用,因此即使M$没有故意对其进行修补(我认为他们现在没有)由于某种原因,新的ntdll似乎在点击关闭函数之前不知道停止。我试过各种方法来修补它。我使用调用堆栈来显示ntdll.772CFCB0的调用,我用胡萝卜进入第一行并开始对它们进行编号,因为我知道这在某个地方是一个独特的关闭函数,但我不记得在哪里(我可能错了),但我保存了一个备份并修补了ntdll,我用另外两个可疑区域进行了修补,甚至试图删除moveax,29(我忘了它当时也在Vista中出现和使用,但我是一个noob)。然而,这些修补都不重要。即使将ntdll放在SysWOW64下,即使在我修改它的地方,它看起来也总是一样的。修改过的文件在我放的地方仍然完好无损,所以M$一定又对我采取了一次糟糕的安全措施(我知道他们希望我的系统不受黑客攻击,但当他们开始保护我不受黑客攻击时,我有点不高兴,我的意思是,我至少知道windows资源管理器或其他永久运行的进程没有使用ntdll,因为我检查了,我有一个备份,我很快就会恢复)

很抱歉这么长时间,我已经为此付出了相当多的努力,从我的在线搜索中,还有其他人和我一样希望这个问题得到解决,因此如果有人能帮助我们(因为如果问题得到解决,我打算帮助其他人),我们将不胜感激

谢谢

更新:以下是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

首先,您是否尝试过Windows内置的兼容性垫片?在我的Windows 8上,我可以右键单击一个可执行文件,并且有一个菜单选项“兼容性疑难解答”,我认为它也存在于Windows 7中。请尝试选择Vista仿真选项。是的,我已经尝试过并以管理员身份运行。接下来,解决方案不是让
ntdll.dll
“在它点击关闭函数之前停止”,解决方案是不让主程序调用
ExitProcess
。通过将时间控件转移到
ntdll
来中断进程,应用程序已完成清理,无法继续。顺便说一句,地址差异几乎肯定是由“地址空间布局随机化”引起的.但这并不是问题所在,因为兼容性垫片会禁用它。我已经想到了这一点,但我不确定如何找到它调用exitprocess的位置。我尝试从关闭时收到的信息中查找它,但之后我无法退出ntdll.dll并返回windowsphotogallery.exe。