Сейчас на форуме: (+5 невидимых) |
![]() |
eXeL@B —› Вопросы новичков —› Подскажите по программе |
Посл.ответ | Сообщение |
|
Создано: 30 ноября 2010 12:55 · Личное сообщение · #1 Здравствуйте, я здесь новенький. Вообщем по существу, есть программа FGSB, для галактики она, написана в delphi 6-7, суть проблемы такова, есть авторитет в галактике, автор сделал так что программа нормально работает если авторитет маленький у пользователя, если же авторитет большой программа просто напросто вылетает с ошибкой, я нашел место вылета в olly dbg. Я приложу скрины программы и код из olly dbg Address Hex dump Command 005E4EC1 E8 BAFFE1FF CALL 00404E80 005E4EC6 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] 005E4EC9 50 PUSH EAX 005E4ECA A1 E0226500 MOV EAX,DWORD PTR DS:[6522E0] 005E4ECF 8B80 F8020000 MOV EAX,DWORD PTR DS:[EAX+2F8] 005E4ED5 8B80 08020000 MOV EAX,DWORD PTR DS:[EAX+208] 005E4EDB BA 03000000 MOV EDX,3 и по другому адресу вот CPU Disasm Address Hex dump Command Comments 005E4510 E8 4700E2FF CALL 0040455C 005E4515 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 005E4518 8B80 080A0000 MOV EAX,DWORD PTR DS:[EAX+0A08] 005E451E 8B80 84020000 MOV EAX,DWORD PTR DS:[EAX+284] 005E4524 8B10 MOV EDX,DWORD PTR DS:[EAX] скрины прикрепил с ошибкой. dump.ru/file/4924800 - сама программа ![]() ![]() |
|
Создано: 30 ноября 2010 13:22 · Личное сообщение · #2 |
|
Создано: 30 ноября 2010 13:23 · Поправил: blacklabel · Личное сообщение · #3 |
|
Создано: 30 ноября 2010 14:43 · Поправил: Crawler · Личное сообщение · #4 смотри, что у тебя в EAX после 005E4ECA A1 E0226500 MOV EAX,DWORD PTR DS:[6522E0]. Там НОЛЬ, а должен быть какой-то адрес. Очевидно, что значение испорчено - где-то либо не положено в стек , либо не записано в память. Этот вывод я сделал, т.к. после MOV EAX,DWORD PTR DS:[EAX+2F8] в регистре ноль. 005E4ECF 8B80 F8020000 MOV EAX,DWORD PTR DS:[EAX+2F8] << в ячейке EAX+2F8 НОЛЬ! 005E4ED5 8B80 08020000 MOV EAX,DWORD PTR DS:[EAX+208] << прибавляем смещение к НУЛЮ! сейчас не могу посмотреть, т.к. олли под рукой нет. Но копай в этом направлении. Протрассируй вызов перед этим участком кода (зайди внутрь 005E4EC1 E8 BAFFE1FF CALL 00404E80, например). Выясни, где теряется значение. Если в терминах C++, то здесь указатель на указатель на значение ![]() ----- Харе курить веники и нюхать клей, к вам едет из Америки бог Шива, и он еврей. ![]() |
|
Создано: 30 ноября 2010 14:51 · Поправил: blacklabel · Личное сообщение · #5 |
![]() |
eXeL@B —› Вопросы новичков —› Подскажите по программе |