史萊姆論壇

返回   史萊姆論壇 > 專業主討論區 > 程式語言討論區
忘記密碼?
論壇說明

歡迎您來到『史萊姆論壇』 ^___^

您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的!

請點擊這裡:『註冊成為我們的一份子!』

Google 提供的廣告


發文 回覆
 
主題工具 顯示模式
舊 2007-07-10, 04:04 PM   #1
風流瀟灑
註冊會員
榮譽勳章

勳章總數
UID - 273105
在線等級: 級別:0 | 在線時長:3小時 | 升級還需:2小時
註冊日期: 2007-07-10
文章: 10
精華: 0
現金: 14 金幣
資產: 14 金幣
預設 疑問 - Sorry,雖然算是系統的問題,但也與程式有很大的相關性…

各位程式高手大大,以下是xp系統發生錯誤的dmp檔,我知道這算是系統類的問題,但用windbg程式來檢視dmp檔,內容就與程式語言有很大的相關性了,我對組譯反組譯、編譯語言沒有很深入的瞭解,雖然讀書時有學…忘了,但很想瞭解以下dmp檔內的訊息,請高手大大能指導我瞭解,此dmp檔反映系統的錯誤,大概是發生在那個程式的衝突?如以下有一段ERRPR_CODENTSTATUS)0xc0000005…這又是反映什麼訊息呢…唉,想當高除錯高手,但遇到程式言語及機械語言就掛了,煩請指導,謝謝
FAULTING_IP:
ntdll+10de3
7c930de3 663b10 cmp dx,word ptr [eax]

EXCEPTION_RECORD: ffffffff -- (.exr 0xffffffffffffffff)
ExceptionAddress: 7c930de3 (ntdll+0x00010de3)
ExceptionCode: c0000005 (Access violation)
ExceptionFlags: 00000000
NumberParameters: 2
Parameter[0]: 00000000
Parameter[1]: 02990580
Attempt to read from address 02990580

DEFAULT_BUCKET_ID: WRONG_SYMBOLS

PROCESS_NAME: kavsvc.exe

FAULTING_MODULE: 7c920000 ntdll

DEBUG_FLR_IMAGE_TIMESTAMP: 446ca255

ERROR_CODE: (NTSTATUS) 0xc0000005 - "0x%08lx"

READ_ADDRESS: 02990580

BUGCHECK_STR: ACCESS_VIOLATION

LAST_CONTROL_TRANSFER: from 5dd09af0 to 7c930de3

STACK_TEXT:
WARNING: Stack unwind information not available. Following frames may be wrong.
03427a34 5dd09af0 00b60000 00000000 00b9d978 ntdll+0x10de3
00000000 00000000 00000000 00000000 00000000 prloader+0x9af0


FOLLOWUP_IP:
prloader+9af0
5dd09af0 ?? ???

SYMBOL_STACK_INDEX: 1

SYMBOL_NAME: prloader+9af0

FOLLOWUP_NAME: MachineOwner

MODULE_NAME: prloader

IMAGE_NAME: prloader.dll

FAULTING_THREAD: 000004dc

STACK_COMMAND: ~43s; .ecxr ; kb

BUCKET_ID: WRONG_SYMBOLS

Followup: MachineOwner
---------

0:043> lmvm ntdll
start end module name
7c920000 7c9b5000 ntdll T (no symbols)
Loaded symbol image file: ntdll.dll
Image path: C:\WINDOWS\system32\ntdll.dll
Image name: ntdll.dll
Timestamp: Wed Aug 04 15:47:32 2004 (41109494)
CheckSum: 00092448
ImageSize: 00095000
File version: 5.1.2600.2180
Product version: 5.1.2600.2180
File flags: 0 (Mask 3F)
File OS: 40004 NT Win32
File type: 2.0 Dll
File date: 00000000.00000000
Translations: 0000.04b0 0000.04e0 0409.04b0 0409.04e0
0:043> lmvm prloader
start end module name
5dd00000 5dd20000 prloader T (no symbols)
Loaded symbol image file: prloader.dll
Image path: C:\Program Files\Kaspersky Lab\Kaspersky Anti-Virus 5.0 for Windows Workstations\prloader.dll
Image name: prloader.dll
Timestamp: Fri May 19 00:35:33 2006 (446CA255)
CheckSum: 00000000
ImageSize: 00020000
File version: 5.0.676.0
Product version: 5.0.676.0
File flags: 0 (Mask 3F)
File OS: 40004 NT Win32
File type: 1.0 App
File date: 00000000.00000000
Translations: 0000.04b0 0000.04e0 0409.04b0 0409.04e0
風流瀟灑 目前離線  
送花文章: 1, 收花文章: 1 篇, 收花: 3 次
回覆時引用此帖
舊 2007-07-13, 04:27 PM   #2 (permalink)
註冊會員
榮譽勳章
UID - 64912
在線等級: 級別:60 | 在線時長:3915小時 | 升級還需:50小時級別:60 | 在線時長:3915小時 | 升級還需:50小時級別:60 | 在線時長:3915小時 | 升級還需:50小時級別:60 | 在線時長:3915小時 | 升級還需:50小時級別:60 | 在線時長:3915小時 | 升級還需:50小時
註冊日期: 2003-05-05
文章: 617
精華: 0
現金: 199 金幣
資產: 1853 金幣
預設

記得windows 98在程式錯誤時會出現的個對話框!
"請聯絡您的支援人員或套裝軟體供應商"
我想你也應該這麼作!
rainnylin 目前離線  
送花文章: 65, 收花文章: 170 篇, 收花: 619 次
回覆時引用此帖
舊 2007-07-13, 09:19 PM   #3 (permalink)
管理版主
 
mini 的頭像
榮譽勳章
UID - 4144
在線等級: 級別:96 | 在線時長:9664小時 | 升級還需:133小時級別:96 | 在線時長:9664小時 | 升級還需:133小時級別:96 | 在線時長:9664小時 | 升級還需:133小時級別:96 | 在線時長:9664小時 | 升級還需:133小時級別:96 | 在線時長:9664小時 | 升級還需:133小時級別:96 | 在線時長:9664小時 | 升級還需:133小時
註冊日期: 2002-12-07
文章: 13248
精華: 0
現金: 26239 金幣
資產: 3024049 金幣
預設

可看出 ntdll與卡巴相沖
一般來說會選擇重開機再試一次
再不行換個卡巴版本

要追蹤程式狀況的話
windbg 不能分析 dll
所以這裡建議用功能比較強的 OllyDbg
打開 ntdll.dll 後可發現其啟始地址就是 7c920000
既然 ExceptionAddress 是 7c930de3
哪請 goto那一個地址
可看到 機械碼是 CMP DX,WORD PTR DS:[EAX]
此時不知當時的 EAX暫存器 的內容
所以 ...

至於
ExceptionCode: c0000005 (Access violation)
的 c0000005 是什麼意思呢 ?
後面的刮號就告知了 Access violation
那什麼是Access violation錯誤 (違法存取)?
這裡從 google 得知 :
當你運行程式得到了一個AV(Access Violation)錯誤的時候,這意味著你的程式正在試圖訪問一塊不再有效的內存(記憶體),請注意我所提到的「不再」有效。大多數的情況下,出現這個錯誤要麼是因為你試圖訪問一塊已經被釋放的內存,要麼是想使用一個還未創建對象的指針(指標)。

所以
CMP DX,WORD PTR DS:[EAX] 為何出錯就明了一半了
因為 DS:[EAX] 這個位址已屬於 不可存取區域了
那可發現到一行
READ_ADDRESS: 02990580 (翻成十六進位是 2DA1F4)
原來就是指 EAX
也就是 資料節區 0x2DA1F4 是不可存取的(不存在的)
大概就是這樣...
(要繼續下去的話 還要分析 prloader.dll)

※DS 是資料節區暫存器,程式中較有意義的資料都放在此,比如字串、數值...
不可存取 有可能是 保護位址 或 EAX提供錯誤的位址

說真的
這種東西是給系統分析員用的
看你程式哪裡怎麼樣 什麼的...
當然也有人是拿來做破解 什麼的...

先申明一下
以上都是臨時自己揣測,是否正確 ...
mini 目前離線  
送花文章: 1999, 收花文章: 7956 篇, 收花: 26748 次
回覆時引用此帖
發文 回覆



發表規則
不可以發文
不可以回覆主題
不可以上傳附加檔案
不可以編輯您的文章

論壇啟用 BB 語法
論壇啟用 表情符號
論壇啟用 [IMG] 語法
論壇禁用 HTML 語法
Trackbacks are 禁用
Pingbacks are 禁用
Refbacks are 禁用


所有時間均為台北時間。現在的時間是 08:01 PM


Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2024, Jelsoft Enterprises Ltd.


SEO by vBSEO 3.6.1