Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/147.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
C++ 如何使用IDA Pro在DLL中找到静态链接函数?_C++_Chromium_Dll Injection - Fatal编程技术网

C++ 如何使用IDA Pro在DLL中找到静态链接函数?

C++ 如何使用IDA Pro在DLL中找到静态链接函数?,c++,chromium,dll-injection,C++,Chromium,Dll Injection,我目前正在尝试钩住Chromium的SSL写函数,但我很难找到应该钩住的地方 目前,我使用RtlCreateUserThread注入DLL,分配DLL路径并让目标进程加载它。然后,DLL将通过GetProcAddress加载目标函数,然后通过jmp指令加载通常为-you-know-overwriting-5-bytes-by-jmp-instruction。 我用Firefox成功地做到了这一点。但是我在Chrome上遇到了麻烦,因为根据Chrome的源代码,他似乎使用了NSS/OpenSSL(

我目前正在尝试钩住Chromium的SSL写函数,但我很难找到应该钩住的地方

目前,我使用RtlCreateUserThread注入DLL,分配DLL路径并让目标进程加载它。然后,DLL将通过GetProcAddress加载目标函数,然后通过jmp指令加载通常为-you-know-overwriting-5-bytes-by-jmp-instruction。 我用Firefox成功地做到了这一点。但是我在Chrome上遇到了麻烦,因为根据Chrome的源代码,他似乎使用了NSS/OpenSSL(我在repo中看到了两个SSLSocket的impl,但看不出哪个与二进制文件一起使用)


提前感谢。

很抱歉带来了坏消息,但要做到这一点真的没有简单的方法。
我发现最简单的方法是使用Chromium Symbol服务器,它位于:

http://chromium-browser-symsrv.commondatastorage.googleapis.com
需要注意的是,64位windows上的Chrome发行版似乎缺少这些符号。至少我没什么运气得到它们

在一般情况下,您可以按照下面的一些说明获取预加载到本地缓存中的符号的良好集合

为了使用IDA pro的符号服务器功能,您必须做一些事情

首先,您必须安装Windows调试工具。(Windows 8.1 DDK是一个很好的选择,可以从MicroSoft免费获得。)它包括允许与符号服务器进行简单通信的DLL

其次,您需要添加一个全局系统环境变量,如下所示: _NT_SYMBOL_PATH=srv*c:\pdb_cache*msdl.microsoft.com/download/symbols;srv*c:\pdb\U缓存*

这样做的目的是为符号的存储设置符号路径和相关的本地缓存

第三,可以使用以下命令行使用WDK 8.1附带的工具并提取符号:

"c:\Program Files (x86)\Windows Kits\8.1\Debuggers\x86\symchk" /r "C:\Program Files (x86)\Google" /s symsrv*C:\pdb_cache\*http://chromium-browser-symsrv.commondatastorage.googleapis.com/
上述操作应强制将符号加载到本地符号缓存中,您可以选择它们(IDA可能会自动执行此操作,也可能不会)。如果没有,您可以在WinDbg/symchk下载符号文件后手动选择该文件

至少这是理论根据:

我没能在Chromium的发行版上正确下载这些符号。但是,如果转到链接并检查返回的XML的内容,您会注意到设置了“Truncated”标志。您可以使用过滤器表达式(它是AmazonS3存储桶)。翻开看,这里甚至还有另一台
符号服务器:不过从外观上看,它已经很旧了

我将留给您一个脚本,用于从已知符号服务器列表中提取所有符号。预加载系统上可能需要调试的任何内容非常有用。:-。我还注意到在Windows7x64上没有为SysWOW64子系统下载符号。如果其他人有关于其他公共符号服务器的任何信息,欢迎:-)

StackOverflow不允许我使用http链接,所以只要用http替换文本编辑器中的hxtp,您就可以开始工作了

如果愿意,还可以使用此字符串在环境中设置路径。希望这有帮助,伙计

设置 _NT\u SYMBOL\u PATH=symsrv*c:\symbols*hxtp://msdl.microsoft.com/download/symbols;symsrv*c:\symbols*hxtp://symbols.mozilla.org/firefox;symsrv*c:\symbols*hxtp://chromium-browser-symsrv.commondatastorage.googleapis.com;symsrv*c:\symbols*hxtp://ctxsym.citrix.com/symbols;symsrv*c:\symbols*hxtp://developer.apple.com/internet/safari/windows_symbols


我已经想好了,但是你的回答很有趣,非常感谢。
"c:\Program Files (x86)\Windows Kits\8.1\Debuggers\x86\symchk" /r "C:\Program Files (x86)" /s symsrv*c:\symbols*hxtp://msdl.microsoft.com/download/symbols
"c:\Program Files (x86)\Windows Kits\8.1\Debuggers\x86\symchk" /r "C:\Program Files (x86)" /s symsrv*c:\symbols*hxtp://symbols.mozilla.org/firefox
"c:\Program Files (x86)\Windows Kits\8.1\Debuggers\x86\symchk" /r "C:\Program Files (x86)" /s symsrv*c:\symbols*hxtp://chromium-browser-symsrv.commondatastorage.googleapis.com
"c:\Program Files (x86)\Windows Kits\8.1\Debuggers\x86\symchk" /r "C:\Program Files (x86)" /s symsrv*c:\symbols*hxtp://ctxsym.citrix.com/symbols
"c:\Program Files (x86)\Windows Kits\8.1\Debuggers\x86\symchk" /r "C:\Program Files (x86)" /s symsrv*c:\symbols*hxtp://developer.apple.com/internet/safari/windows_symbols


"c:\Program Files (x86)\Windows Kits\8.1\Debuggers\x64\symchk" /r "C:\Program Files" /s symsrv*c:\symbols*hxtp://msdl.microsoft.com/download/symbols
"c:\Program Files (x86)\Windows Kits\8.1\Debuggers\x64\symchk" /r "C:\Program Files" /s symsrv*c:\symbols*hxtp://symbols.mozilla.org/firefox
"c:\Program Files (x86)\Windows Kits\8.1\Debuggers\x64\symchk" /r "C:\Program Files" /s symsrv*c:\symbols*hxtp://chromium-browser-symsrv.commondatastorage.googleapis.com
"c:\Program Files (x86)\Windows Kits\8.1\Debuggers\x64\symchk" /r "C:\Program Files" /s symsrv*c:\symbols*hxtp://ctxsym.citrix.com/symbols
"c:\Program Files (x86)\Windows Kits\8.1\Debuggers\x64\symchk" /r "C:\Program Files" /s symsrv*c:\symbols*hxtp://developer.apple.com/internet/safari/windows_symbols


"c:\Program Files (x86)\Windows Kits\8.1\Debuggers\x86\symchk" /r "C:\Windows" /s symsrv*c:\symbols*hxtp://msdl.microsoft.com/download/symbols
"c:\Program Files (x86)\Windows Kits\8.1\Debuggers\x86\symchk" /r "C:\Windows" /s symsrv*c:\symbols*hxtp://symbols.mozilla.org/firefox
"c:\Program Files (x86)\Windows Kits\8.1\Debuggers\x86\symchk" /r "C:\Windows" /s symsrv*c:\symbols*hxtp://chromium-browser-symsrv.commondatastorage.googleapis.com
"c:\Program Files (x86)\Windows Kits\8.1\Debuggers\x86\symchk" /r "C:\Windows" /s symsrv*c:\symbols*hxtp://ctxsym.citrix.com/symbols
"c:\Program Files (x86)\Windows Kits\8.1\Debuggers\x86\symchk" /r "C:\Windows" /s symsrv*c:\symbols*hxtp://developer.apple.com/internet/safari/windows_symbols


"c:\Program Files (x86)\Windows Kits\8.1\Debuggers\x64\symchk" /r "C:\Windows" /s symsrv*c:\symbols*hxtp://msdl.microsoft.com/download/symbols
"c:\Program Files (x86)\Windows Kits\8.1\Debuggers\x64\symchk" /r "C:\Windows" /s symsrv*c:\symbols*hxtp://symbols.mozilla.org/firefox
"c:\Program Files (x86)\Windows Kits\8.1\Debuggers\x64\symchk" /r "C:\Windows" /s symsrv*c:\symbols*hxtp://chromium-browser-symsrv.commondatastorage.googleapis.com
"c:\Program Files (x86)\Windows Kits\8.1\Debuggers\x64\symchk" /r "C:\Windows" /s symsrv*c:\symbols*hxtp://ctxsym.citrix.com/symbols
"c:\Program Files (x86)\Windows Kits\8.1\Debuggers\x64\symchk" /r "C:\Windows" /s symsrv*c:\symbols*hxtp://developer.apple.com/internet/safari/windows_symbols