Сейчас на форуме: asfa, _MBK_, Adler (+8 невидимых)

 eXeL@B —› Вопросы новичков —› малый дамп памяти созданный windows
Посл.ответ Сообщение

Ранг: 10.4 (новичок)
Активность: 0.020
Статус: Участник

Создано: 27 декабря 2012 13:12
· Личное сообщение · #1

Как узнать адрес возврата функции из следующей информации:

1. изначально был краш приложения, оно с помощью windows создало малый дамп (?)
2. после анализа windows debugging tools этого дампа был получен результат

Code:
  1. Opened log file 'C:\Games\crushes\test\5.0.5\raw\ra_5052599_runes of magic_000000000000_121212183641.txt'
  2.  
  3. Microsoft (R) Windows Debugger Version 6.10.0003.233 X86
  4. Copyright (c) Microsoft Corporation. All rights reserved.
  5.  
  6.  
  7. Loading Dump File [C:\Games\crushes\test\5.0.5\raw\ra_5052599_runes of magic_000000000000_121212183641\RA.dmp]
  8. User Mini Dump File: Only registers, stack and portions of memory are available
  9.  
  10. Symbol search path is: srv*c:\symbols *http://msdl.microsoft.com/download/symbols
  11. Executable search path is: srv*c:\symbols  *http://msdl.microsoft.com/download/symbols
  12. Windows 7 Version 7600 MP (3 procs) Free x86 compatible
  13. Product: WinNt, suite: SingleUserTS Personal
  14. Machine Name:
  15. Debug session time: Wed Dec 12 18:36:40.000 2012 (GMT+4)
  16. System Uptime: not available
  17. Process Uptime: 0 days 0:19:21.000
  18. ................................................................
  19. .......................................................
  20. This dump file has an exception of interest stored in it.
  21. The stored exception information can be accessed via .ecxr.
  22. (79c.7c0): Access violation - code c0000005 (first/second chance not available)
  23. eax=fffffffd ebx=0012cd24 ecx=0012c5c8 edx=77206194 esi=0012cd68 edi=000005ec
  24. eip=77206194 esp=0012c324 ebp=0012c334 iopl=0         nv up ei pl zr na pe nc
  25. cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00200246
  26. ntdll!KiFastSystemCallRet:
  27. 77206194 c3              ret
  28. 0:000> !analyze -v; q
  29. *******************************************************************************
  30. *                                                                             *
  31. *                        Exception Analysis                                   *
  32. *                                                                             *
  33. *******************************************************************************
  34.  
  35. Unable to load image C:\Program Files\Overwolf\OWExplorer-10614.dll, Win32 error 0n2
  36. *** WARNING: Unable to verify timestamp for OWExplorer-10614.dll
  37. *** ERROR: Module load completed but symbols could not be loaded for OWExplorer-10614.dll
  38. *** WARNING: Unable to verify timestamp for Client.exe
  39. *** ERROR: Module load completed but symbols could not be loaded for Client.exe
  40. Unable to load image C:\Windows\System32\atiumdag.dll, Win32 error 0n2
  41. *** WARNING: Unable to verify timestamp for atiumdag.dll
  42. *** ERROR: Module load completed but symbols could not be loaded for atiumdag.dll
  43. Unable to load image C:\Program Files\test runes\Runes of Magic\5.0.5_test_full\mss32.dll, Win32 error 0n2
  44. *** WARNING: Unable to verify timestamp for mss32.dll
  45. *** ERROR: Module load completed but symbols could not be loaded for mss32.dll
  46. Unable to load image C:\Program Files\Overwolf\OWClient.dll, Win32 error 0n2
  47. *** WARNING: Unable to verify timestamp for OWClient.dll
  48. *** ERROR: Module load completed but symbols could not be loaded for OWClient.dll
  49. Unable to load image C:\Program Files\test runes\Runes of Magic\5.0.5_test_full\vivoxplatform.dll, Win32 error 0n2
  50. *** WARNING: Unable to verify timestamp for vivoxplatform.dll
  51. *** ERROR: Module load completed but symbols could not be loaded for vivoxplatform.dll
  52. Unable to load image C:\Program Files\test runes\Runes of Magic\5.0.5_test_full\vivoxsdk.dll, Win32 error 0n2
  53. *** WARNING: Unable to verify timestamp for vivoxsdk.dll
  54. *** ERROR: Module load completed but symbols could not be loaded for vivoxsdk.dll
  55. *************************************************************************
  56. ***                                                                   ***
  57. ***                                                                   ***
  58. ***    Your debugger is not using the correct symbols                 ***
  59. ***                                                                   ***
  60. ***    In order for this command to work properly, your symbol path   ***
  61. ***    must point to .pdb files that have full type information.      ***
  62. ***                                                                   ***
  63. ***    Certain .pdb files (such as the public OS symbols) do not      ***
  64. ***    contain the required information.  Contact the group that      ***
  65. ***    provided you with these symbols if you need this command to    ***
  66. ***    work.                                                          ***
  67. ***                                                                   ***
  68. ***    Type referenced: kernel32!pNlsUserInfo                         ***
  69. ***                                                                   ***
  70. *************************************************************************
  71. *************************************************************************
  72. ***                                                                   ***
  73. ***                                                                   ***
  74. ***    Your debugger is not using the correct symbols                 ***
  75. ***                                                                   ***
  76. ***    In order for this command to work properly, your symbol path   ***
  77. ***    must point to .pdb files that have full type information.      ***
  78. ***                                                                   ***
  79. ***    Certain .pdb files (such as the public OS symbols) do not      ***
  80. ***    contain the required information.  Contact the group that      ***
  81. ***    provided you with these symbols if you need this command to    ***
  82. ***    work.                                                          ***
  83. ***                                                                   ***
  84. ***    Type referenced: kernel32!pNlsUserInfo                         ***
  85. ***                                                                   ***
  86. *************************************************************************
  87.  
  88. FAULTING_IP: 
  89. msvcr80!fastzero_I+20
  90. 72b672d7 660f7f07        movdqa  xmmword ptr [edi],xmm0
  91.  
  92. EXCEPTION_RECORD:  ffffffff -- (.exr 0xffffffffffffffff)
  93. .exr 0xffffffffffffffff
  94. ExceptionAddress: 72b672d7 (msvcr80!fastzero_I+0x00000020)
  95.    ExceptionCode: c0000005 (Access violation)
  96.   ExceptionFlags: 00000000
  97. NumberParameters: 2
  98.    Parameter[0]: 00000001
  99.    Parameter[1]: 00000000
  100. Attempt to write to address 00000000
  101.  
  102. PROCESS_NAME:  Client.exe
  103.  
  104. ERROR_CODE: (NTSTATUS) 0xc0000005 - <Unable to get error code text>
  105.  
  106. EXCEPTION_CODE: (NTSTATUS) 0xc0000005 - <Unable to get error code text>
  107.  
  108. EXCEPTION_PARAMETER1:  00000001
  109.  
  110. EXCEPTION_PARAMETER2:  00000000
  111.  
  112. WRITE_ADDRESS:  00000000 
  113.  
  114. FOLLOWUP_IP: 
  115. msvcr80!fastzero_I+20
  116. 72b672d7 660f7f07        movdqa  xmmword ptr [edi],xmm0
  117.  
  118. FAULTING_THREAD:  000007c0
  119.  
  120. DEFAULT_BUCKET_ID:  STATUS_ACCESS_VIOLATION
  121.  
  122. PRIMARY_PROBLEM_CLASS:  STATUS_ACCESS_VIOLATION
  123.  
  124. BUGCHECK_STR:  APPLICATION_FAULT_STATUS_ACCESS_VIOLATION
  125.  
  126. LAST_CONTROL_TRANSFER:  from 72b67344 to 72b672d7
  127.  
  128. STACK_TEXT:  
  129. 0012e350 72b67344 00000000 01500000 0012e378 msvcr80!fastzero_I+0x20
  130. 0012e35c 0012e378 00000000 00a47910 00000000 msvcr80!_VEC_memzero+0x36
  131. WARNING: Frame IP not in any known module. Following frames may be wrong.
  132. 0012e36c 00000000 005008da 00000000 00000000 0x12e378
  133.  
  134.  
  135. STACK_COMMAND:  ~0s; .ecxr ; kb
  136.  
  137. SYMBOL_STACK_INDEX:  0
  138.  
  139. SYMBOL_NAME:  msvcr80!fastzero_I+20
  140.  
  141. FOLLOWUP_NAME:  MachineOwner
  142.  
  143. MODULE_NAME: msvcr80
  144.  
  145. IMAGE_NAME:  msvcr80.dll
  146.  
  147. DEBUG_FLR_IMAGE_TIMESTAMP:  4dcddbf3
  148.  
  149. FAILURE_BUCKET_ID:  STATUS_ACCESS_VIOLATION_c0000005_msvcr80.dll!fastzero_I
  150.  
  151. BUCKET_ID:  APPLICATION_FAULT_STATUS_ACCESS_VIOLATION_msvcr80!fastzero_I+20
  152.  
  153. WATSON_IBUCKET:  -982533885
  154.  
  155. WATSON_IBUCKETTABLE:  1
  156.  
  157. Followup: MachineOwner
  158. ---------
  159.  
  160. quit:


в ESP хранится адрес, по которому расположен адрес возврата? Если так, то в анализе этого дампа нет соответствующего адреса в STACK_TEXT и узнать, куда должен был вернуться вызов функции из msvcr80 невозможно?




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 27 декабря 2012 14:52
· Личное сообщение · #2

В малом дампе вообще мало информации. kp для коллстека, либо d esp и разглядывай руками. Коль нет стека, сливай воду.



Ранг: 481.4 (мудрец), 109thx
Активность: 0.180
Статус: Участник
Тот самый :)

Создано: 27 декабря 2012 17:43
· Личное сообщение · #3

ohos пишет:
в ESP хранится адрес, по которому расположен адрес возврата?

Как повезет. Может быть просто указатель на какую-то локальную переменную.
ohos пишет:
куда должен был вернуться вызов функции из msvcr80 невозможно?

Возможно. Если память стека присутствует в дампе, то можно руками ковыряться в памяти стека - смотреть начиная от адреса 12e36c проверяя все, что похоже на указатель. Если в дампе нет памяти стека, то ничего не найти. Но я так понял, что это юзермодный дамп, там по идее есть вся память приложения. Если там в коде присутствуют ebp-фреймы, то будет чуть легче искать, но для этого нужно понимать как они строятся. А это не рассказать в два предложения.

-----
Реверсивная инженерия - написание кода идентичного натуральному



 eXeL@B —› Вопросы новичков —› малый дамп памяти созданный windows
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати