2010-10-03 68 views
3
> vcam.ax!CopyMediaType() + 0x49 bytes  
    vcam.ax!CMediaType::Set() + 0x41 bytes  
    vcam.ax!CMediaType::operator=() + 0x2f bytes  
    vcam.ax!CVCamStream::SetFormat(_AMMediaType * pmt=0x00000000) Line 201 C++ 
    FlashPlayer.exe!005641be() 

有人可以解釋上述行嗎?如何解釋視覺工作室的調用堆棧?

回答

3

這意味着指令指針位於函數CopyMediaType()的可執行文件vcam.ax中,並且下一個操作是將0x48(= 73)個字節的機器代碼放入函數中。

該函數從可執行文件vcam.ax中調用,方法Set爲CMediaType對象,返回地址爲0x41字節代碼。

依此類推。

FlashPlayer.exe沒有調試符號,所以它不能告訴你呼叫在哪個函數中產生,它可以說是返回地址的位置。這是來自FlashPlazer.exe的代碼中的絕對返回地址。

SetFormat被調用了一個參數,一個指向_AMMediaType對象的指針。指針是NULL。

看起來很奇怪,其他函數沒有參數。 operator =應該有一個參數,但調試器似乎沒有足夠的信息來顯示它。它可能是一種不同的函數調用方法,因爲它將SetFormat調用識別爲C++代碼,但其他方法不能。

+0

你能特別解釋一下'_AMMediaType * pmt = 0x00000000'和'FlashPlayer.exe!005641be()'是什麼意思? – ollydbg 2010-10-03 16:01:23