![]() |
eXeL@B —› Софт, инструменты —› Как использовать IDA для поиска причины исключения(креша) в программе |
Посл.ответ | Сообщение |
|
Создано: 27 декабря 2012 13:24 · Личное сообщение · #1 Привет ![]() Я некогда не занимался ничем подобным, но сейчас мне как одному из команды по разработке программы необходимо устранить креши, из обстоятельств которых известно только что то вроде -------------- Unhandled Exception Report Start -------------- Exception code: 0xC0000005 (Access Violation) Exception address: 0x73E72EB4 Exception module: SOME.dll (+0x00002EB4) Exception registers: GS=0x0000002B FS=0x00000053 ES=0x0000002B DS=0x0000002B EDI=0x00E29C74 ESI=0x00E29900 EBX=0x0011811C EDX=0x083C5BB0 ECX=0x00000000 EAX=0x00000034 EBP=0x02D9E704 EIP=0x73E72EB4 CS=0x00000023 EFLAGS=0x00010203 ESP=0x02D9E6FC SS=0x0000002B --------------- Unhandled Exception Report End --------------- Собственно я таким не занимался ибо задачи другие в проекте, но сейчас это необходимо, пусть даже я знаю что такое access violation, мне нужно установить причину. исходный код SOME.dll есть, однако SOME.dll используется другой EXE, исходного кода которой у нас нету. Я привык работать с файлами DMP в visual studio. Помогите пожалуйста, как хотя бы в IDA найти место в котором прозоизошла ошибка, хотя, asm код мне не поможет её исправить.. ![]() |
|
Создано: 27 декабря 2012 13:37 · Личное сообщение · #2 agehack Да найти просто, у вас база SOME.dll в данном случае равна 0x73E70000, к базе прибавить смещение +0x00002EB4, т.е. в данном месте из контекста выполнения видно, что исключение произошло по адресу 0x73E72EB4. Грузить бинарь в иду, потом Edit -> Segments -> Rebase program и пишете туда новую базу. Потом давим G и пишем адрес из EIP. Всё. ----- Stuck to the plan, always think that we would stand up, never ran. ![]() |
|
Создано: 27 декабря 2012 13:42 · Личное сообщение · #3 |
|
Создано: 03 января 2013 18:52 · Личное сообщение · #4 |
![]() |
eXeL@B —› Софт, инструменты —› Как использовать IDA для поиска причины исключения(креша) в программе |