Обсуждение инженерного анализа |
Здравствуйте, гость ( Вход | Регистрация )
Обсуждение инженерного анализа |
09 Mar 2008, 20:40
Сообщение
#41
|
|
The Unicode Man Сообщений: 993 Спасибо сказали: 6 раз |
А ведь я это читал!
-------------------- |
|
|
01 Jul 2008, 16:30
Сообщение
#42
|
|
Immortal Сообщений: 668 Спасибо сказали: 58 раз |
А все же как подключить библиотеку dll к h3wog? У меня проблема: нашел в нем пустую часть кода (может там и должно быть пусто) в районе 0031А55А и изменил так кое-что. В результате все, что я хотел стало работать, но появился жесткий баг - нельзя ни зайти, ни выйти из подземелья, пишет, что проход типа завален, будто нет другого туннеля. Так на всех картах. Пробовал в другой части кода ближе к концу - та же ерунда. НИД ХЕЛП.
|
|
|
01 Jul 2008, 16:33
Сообщение
#43
|
|
Яблочный произвол! Сообщений: 11 080 Спасибо сказали: 3988 раз |
может эта область внутри какой-то функции, а ты нарушил что-то там.
|
|
|
01 Jul 2008, 20:36
Сообщение
#44
|
|
Immortal Сообщений: 668 Спасибо сказали: 58 раз |
Вот отрывок кода
Код 0031A342 8D42 FF LEA EAX,DWORD PTR DS:[EDX-1] 0031A345 5B POP EBX 0031A346 C3 RETN 0031A347 8D42 FE LEA EAX,DWORD PTR DS:[EDX-2] 0031A34A 5E POP ESI 0031A34B 5F POP EDI 0031A34C 5B POP EBX 0031A34D C3 RETN 0031A34E 8D42 FD LEA EAX,DWORD PTR DS:[EDX-3] 0031A351 5E POP ESI 0031A352 5F POP EDI 0031A353 5B POP EBX 0031A354 C3 RETN 0031A355 8D42 FC LEA EAX,DWORD PTR DS:[EDX-4] 0031A358 5E POP ESI 0031A359 5F POP EDI 0031A35A 5B POP EBX 0031A35B C3 RETN 0031A35C CC INT3 0031A35D CC INT3 0031A35E CC INT3 0031A35F CC INT3 0031A360 FF25 A4007800 JMP DWORD PTR DS:[7800A4] 0031A366 0000 ADD BYTE PTR DS:[EAX],AL 0031A368 0000 ADD BYTE PTR DS:[EAX],AL 0031A36A 0000 ADD BYTE PTR DS:[EAX],AL 0031A36C 0000 ADD BYTE PTR DS:[EAX],AL Дальше идут сплошные нули, а затем Код 0031AFF8 0000 ADD BYTE PTR DS:[EAX],AL 0031AFFA 0000 ADD BYTE PTR DS:[EAX],AL 0031AFFC 0000 ADD BYTE PTR DS:[EAX],AL 0031AFFE 0000 ADD BYTE PTR DS:[EAX],AL 0031B000 EE OUT DX,AL 0031B001 0D 0800B00B OR EAX,0BB00008 0031B006 0800 OR BYTE PTR DS:[EAX],AL 0031B008 C40B LES ECX,FWORD PTR DS:[EBX] 0031B00A 0800 OR BYTE PTR DS:[EAX],AL 0031B00C FC CLD 0031B00D 0D 0800000C OR EAX,0C000008 0031B012 0800 OR BYTE PTR DS:[EAX],AL 0031B014 0E PUSH CS 0031B015 0C 08 OR AL,8 0031B017 0022 ADD BYTE PTR DS:[EDX],AH 0031B019 0C 08 OR AL,8 0031B01B 00340C ADD BYTE PTR SS:[ESP+ECX],DH 0031B01E 0800 OR BYTE PTR DS:[EAX],AL 0031B020 44 INC ESP На функцию не особо похоже. Хотя может я и ошибаюсь. Поэтому и нид хелп. |
|
|
Гость_FakerNeo_* |
01 Jul 2008, 21:12
(Сообщение отредактировал FakerNeo - 01 Jul 2008, 21:25)
Сообщение
#45
|
|
Цитата Дальше идут сплошные нули, а затем Код 0031AFF8 0000 ADD BYTE PTR DS:[EAX],AL 0031AFFA 0000 ADD BYTE PTR DS:[EAX],AL 0031AFFC 0000 ADD BYTE PTR DS:[EAX],AL 0031AFFE 0000 ADD BYTE PTR DS:[EAX],AL 0031B000 EE OUT DX,AL 0031B001 0D 0800B00B OR EAX,0BB00008 0031B006 0800 OR BYTE PTR DS:[EAX],AL 0031B008 C40B LES ECX,FWORD PTR DS:[EBX] 0031B00A 0800 OR BYTE PTR DS:[EAX],AL 0031B00C FC CLD 0031B00D 0D 0800000C OR EAX,0C000008 0031B012 0800 OR BYTE PTR DS:[EAX],AL 0031B014 0E PUSH CS 0031B015 0C 08 OR AL,8 0031B017 0022 ADD BYTE PTR DS:[EDX],AH 0031B019 0C 08 OR AL,8 0031B01B 00340C ADD BYTE PTR SS:[ESP+ECX],DH 0031B01E 0800 OR BYTE PTR DS:[EAX],AL 0031B020 44 INC ESP На функцию не особо похоже. Хотя может я и ошибаюсь. Поэтому и нид хелп. Это больше похоже на данные чем на код. Ткие участки кода в дизассемблере не смотрятся. Посмотри его в дампе. Больше похоже на какую-то структуру данных... Вот те код где лично я вносил изменения Код 0050CA4A |> /8B43 20 /MOV EAX,DWORD PTR [EBX+20] 0050CA4D |. |8BCF |MOV ECX,EDI 0050CA4F |. |8B14B0 |MOV EDX,DWORD PTR [EAX+ESI*4] 0050CA52 |. |E8 99010000 |CALL h3wog.0050CBF0 0050CA57 |. |47 |INC EDI 0050CA58 |. |46 |INC ESI 0050CA59 |. |83FF 0E |CMP EDI,0E 0050CA5C |.^\7C EC \JL SHORT h3wog.0050CA4A 0050CA5E |. 83C6 03 ADD ESI,3 0050CA61 |. C745 FC 0E000>MOV [LOCAL.1],0E 0050CA68 |> 8B4B 20 /MOV ECX,DWORD PTR [EBX+20] 0050CA6B |. 8B14B1 |MOV EDX,DWORD PTR [ECX+ESI*4] 0050CA6E |. 8BCF |MOV ECX,EDI 0050CA70 |. E8 7B010000 |CALL h3wog.0050CBF0 0050CA75 |. 8B45 FC |MOV EAX,[LOCAL.1] 0050CA78 |. 47 |INC EDI 0050CA79 |. 46 |INC ESI 0050CA7A |. 48 |DEC EAX 0050CA7B |. 8945 FC |MOV [LOCAL.1],EAX 0050CA7E |.^ 75 E8 \JNZ SHORT h3wog.0050CA68 0050CA80 |. 83C6 03 ADD ESI,3 0050CA83 |. C745 FC 0E000>MOV [LOCAL.1],0E 0050CA8A |> 8B53 20 /MOV EDX,DWORD PTR [EBX+20] 0050CA8D |. 8BCF |MOV ECX,EDI 0050CA8F |. 8B14B2 |MOV EDX,DWORD PTR [EDX+ESI*4] 0050CA92 |. E8 59010000 |CALL h3wog.0050CBF0 0050CA97 |. 8B45 FC |MOV EAX,[LOCAL.1] 0050CA9A |. 47 |INC EDI 0050CA9B |. 46 |INC ESI 0050CA9C |. 48 |DEC EAX 0050CA9D |. 8945 FC |MOV [LOCAL.1],EAX 0050CAA0 |.^ 75 E8 \JNZ SHORT h3wog.0050CA8A 0050CAA2 |. 83C6 03 ADD ESI,3 0050CAA5 |. C745 FC 0E000>MOV [LOCAL.1],0E 0050CAAC |> 8B43 20 /MOV EAX,DWORD PTR [EBX+20] 0050CAAF |. 8BCF |MOV ECX,EDI 0050CAB1 |. 8B14B0 |MOV EDX,DWORD PTR [EAX+ESI*4] 0050CAB4 |. E8 37010000 |CALL h3wog.0050CBF0 0050CAB9 |. 8B45 FC |MOV EAX,[LOCAL.1] 0050CABC |. 47 |INC EDI 0050CABD |. 46 |INC ESI 0050CABE |. 48 |DEC EAX 0050CABF |. 8945 FC |MOV [LOCAL.1],EAX 0050CAC2 |.^ 75 E8 \JNZ SHORT h3wog.0050CAAC 0050CAC4 |. 83C6 03 ADD ESI,3 0050CAC7 |. C745 FC 0E000>MOV [LOCAL.1],0E 0050CACE |> 8B4B 20 /MOV ECX,DWORD PTR [EBX+20] 0050CAD1 |. 8B14B1 |MOV EDX,DWORD PTR [ECX+ESI*4] 0050CAD4 |. 8BCF |MOV ECX,EDI 0050CAD6 |. E8 15010000 |CALL h3wog.0050CBF0 0050CADB |. 8B45 FC |MOV EAX,[LOCAL.1] 0050CADE |. 47 |INC EDI 0050CADF |. 46 |INC ESI 0050CAE0 |. 48 |DEC EAX 0050CAE1 |. 8945 FC |MOV [LOCAL.1],EAX 0050CAE4 |.^ 75 E8 \JNZ SHORT h3wog.0050CACE 0050CAE6 |. 83C6 03 ADD ESI,3 0050CAE9 |. C745 FC 0E000>MOV [LOCAL.1],0E 0050CAF0 |> 8B53 20 /MOV EDX,DWORD PTR [EBX+20] 0050CAF3 |. 8BCF |MOV ECX,EDI 0050CAF5 |. 8B14B2 |MOV EDX,DWORD PTR [EDX+ESI*4] 0050CAF8 |. E8 F3000000 |CALL h3wog.0050CBF0 0050CAFD |. 8B45 FC |MOV EAX,[LOCAL.1] 0050CB00 |. 47 |INC EDI 0050CB01 |. 46 |INC ESI 0050CB02 |. 48 |DEC EAX 0050CB03 |. 8945 FC |MOV [LOCAL.1],EAX 0050CB06 |.^ 75 E8 \JNZ SHORT h3wog.0050CAF0 0050CB08 |. 83C6 03 ADD ESI,3 0050CB0B |. C745 FC 0E000>MOV [LOCAL.1],0E 0050CB12 |> 8B43 20 /MOV EAX,DWORD PTR [EBX+20] 0050CB15 |. 8BCF |MOV ECX,EDI 0050CB17 |. 8B14B0 |MOV EDX,DWORD PTR [EAX+ESI*4] 0050CB1A |. E8 D1000000 |CALL h3wog.0050CBF0 0050CB1F |. 8B45 FC |MOV EAX,[LOCAL.1] 0050CB22 |. 47 |INC EDI 0050CB23 |. 46 |INC ESI 0050CB24 |. 48 |DEC EAX 0050CB25 |. 8945 FC |MOV [LOCAL.1],EAX 0050CB28 |.^ 75 E8 \JNZ SHORT h3wog.0050CB12 А вот сами изменения, с подгруженными библиотеками. Как видно высвободилось туева хуча куда Код 0050CA41 > \56 PUSH ESI 0050CA42 . 57 PUSH EDI 0050CA43 . 33FF XOR EDI,EDI 0050CA45 . BE 02000000 MOV ESI,2 0050CA4A > 8B43 20 MOV EAX,DWORD PTR [EBX+20] 0050CA4D . 8BCF MOV ECX,EDI 0050CA4F . 8B14B0 MOV EDX,DWORD PTR [EAX+ESI*4] 0050CA52 . E8 99010000 CALL h3te_cra.0050CBF0 0050CA57 . 47 INC EDI 0050CA58 . 46 INC ESI 0050CA59 . 83FF 0E CMP EDI,0E 0050CA5C .^ 7C EC JL SHORT h3te_cra.0050CA4A 0050CA5E > 83C6 03 ADD ESI,3 0050CA61 . C745 FC 0E000>MOV DWORD PTR [EBP-4],0E 0050CA68 > 8B4B 20 MOV ECX,DWORD PTR [EBX+20] 0050CA6B . 8B14B1 MOV EDX,DWORD PTR [ECX+ESI*4] 0050CA6E . 8BCF MOV ECX,EDI 0050CA70 . E8 7B010000 CALL h3te_cra.0050CBF0 0050CA75 . 8B45 FC MOV EAX,DWORD PTR [EBP-4] 0050CA78 . 47 INC EDI 0050CA79 . 46 INC ESI 0050CA7A . 48 DEC EAX 0050CA7B . 8945 FC MOV DWORD PTR [EBP-4],EAX 0050CA7E .^ 75 E8 JNZ SHORT h3te_cra.0050CA68 0050CA80 . 83FE 32 CMP ESI,32 0050CA83 .^ 7C D9 JL SHORT h3te_cra.0050CA5E 0050CA85 . 83FE 43 CMP ESI,43 0050CA88 .^ 7C D4 JL SHORT h3te_cra.0050CA5E 0050CA8A . 83FE 54 CMP ESI,54 0050CA8D .^ 7C CF JL SHORT h3te_cra.0050CA5E 0050CA8F . 83FE 65 CMP ESI,65 0050CA92 .^ 7C CA JL SHORT h3te_cra.0050CA5E 0050CA94 . 83FE 76 CMP ESI,76 0050CA97 .^ 7C C5 JL SHORT h3te_cra.0050CA5E 0050CA99 . E9 AE000000 JMP h3te_cra.0050CB4C 0050CA9E . 4D 6F 6E 73 7>ASCII "Monstr.dll",0 0050CAA9 . 4D 6E 73 74 7>ASCII "MnstrStr",0 0050CAB2 > 60 PUSHAD 0050CAB3 . 9C PUSHFD 0050CAB4 . 68 9ECA5000 PUSH h3te_cra.0050CA9E ; /FileName = "Monstr.dll" 0050CAB9 . E8 B9522F7C CALL kernel32.LoadLibraryA ; \LoadLibraryA 0050CABE . 68 A9CA5000 PUSH h3te_cra.0050CAA9 ; /ProcNameOrOrdinal = "MnstrStr" 0050CAC3 . 50 PUSH EAX ; |hModule 0050CAC4 . E8 D7E22F7C CALL kernel32.GetProcAddress ; \GetProcAddress 0050CAC9 . FFD0 CALL NEAR EAX 0050CACB . 9D POPFD 0050CACC . 61 POPAD 0050CACD . E9 CE600F00 JMP h3te_cra.00602BA0 0050CAD2 . 48 61 6C 6C 5>ASCII "HallStr",0 0050CADA 90 NOP 0050CADB 90 NOP 0050CADC 90 NOP 0050CADD 90 NOP 0050CADE 90 NOP 0050CADF . 60 PUSHAD 0050CAE0 . 9C PUSHFD 0050CAE1 . 8BD8 MOV EBX,EAX 0050CAE3 . 68 9ECA5000 PUSH h3te_cra.0050CA9E ; /FileName = "Monstr.dll" 0050CAE8 . E8 8A522F7C CALL kernel32.LoadLibraryA ; \LoadLibraryA 0050CAED . 68 D2CA5000 PUSH h3te_cra.0050CAD2 ; /ProcNameOrOrdinal = "HallStr" 0050CAF2 . 50 PUSH EAX ; |hModule 0050CAF3 . E8 A8E22F7C CALL kernel32.GetProcAddress ; \GetProcAddress 0050CAF8 . 90 NOP 0050CAF9 . FFD0 CALL NEAR EAX 0050CAFB . 9D POPFD 0050CAFC . 61 POPAD 0050CAFD .- FF25 0BA95C00 JMP NEAR DWORD PTR [5CA90B] 0050CB03 90 NOP 0050CB04 90 NOP 0050CB05 90 NOP 0050CB06 90 NOP 0050CB07 90 NOP 0050CB08 90 NOP 0050CB09 90 NOP 0050CB0A 90 NOP 0050CB0B 90 NOP 0050CB0C 90 NOP 0050CB0D 90 NOP 0050CB0E 90 NOP 0050CB0F 90 NOP 0050CB10 90 NOP 0050CB11 90 NOP 0050CB12 90 NOP 0050CB13 90 NOP 0050CB14 90 NOP 0050CB15 90 NOP 0050CB16 90 NOP 0050CB17 90 NOP 0050CB18 90 NOP 0050CB19 90 NOP 0050CB1A 90 NOP 0050CB1B 90 NOP 0050CB1C 90 NOP 0050CB1D 90 NOP 0050CB1E 90 NOP 0050CB1F 90 NOP 0050CB20 90 NOP 0050CB21 90 NOP 0050CB22 90 NOP 0050CB23 90 NOP 0050CB24 90 NOP 0050CB25 90 NOP 0050CB26 90 NOP 0050CB27 90 NOP 0050CB28 90 NOP 0050CB29 90 NOP 0050CB2A 90 NOP 0050CB2B 90 NOP 0050CB2C 90 NOP 0050CB2D 90 NOP 0050CB2E 90 NOP 0050CB2F 90 NOP 0050CB30 90 NOP 0050CB31 90 NOP 0050CB32 90 NOP 0050CB33 90 NOP 0050CB34 90 NOP 0050CB35 90 NOP 0050CB36 90 NOP 0050CB37 90 NOP 0050CB38 90 NOP 0050CB39 90 NOP 0050CB3A 90 NOP 0050CB3B 90 NOP 0050CB3C 90 NOP 0050CB3D 90 NOP 0050CB3E 90 NOP 0050CB3F 90 NOP 0050CB40 90 NOP 0050CB41 90 NOP 0050CB42 90 NOP 0050CB43 90 NOP 0050CB44 90 NOP 0050CB45 90 NOP 0050CB46 90 NOP 0050CB47 90 NOP 0050CB48 90 NOP 0050CB49 90 NOP 0050CB4A 90 NOP 0050CB4B 90 NOP И таких мест в героях валом. Успехов. |
|
|
02 Jul 2008, 09:46
Сообщение
#46
|
|
Immortal Сообщений: 668 Спасибо сказали: 58 раз |
Да, не очень понятно.
Код 0050CA7E .^ 75 E8 JNZ SHORT h3te_cra.0050CA68 0050CA80 . 83FE 32 CMP ESI,32 0050CA83 .^ 7C D9 JL SHORT h3te_cra.0050CA5E 0050CA85 . 83FE 43 CMP ESI,43 0050CA88 .^ 7C D4 JL SHORT h3te_cra.0050CA5E 0050CA8A . 83FE 54 CMP ESI,54 0050CA8D .^ 7C CF JL SHORT h3te_cra.0050CA5E 0050CA8F . 83FE 65 CMP ESI,65 0050CA92 .^ 7C CA JL SHORT h3te_cra.0050CA5E 0050CA94 . 83FE 76 CMP ESI,76 0050CA97 .^ 7C C5 JL SHORT h3te_cra.0050CA5E 0050CA99 . E9 AE000000 JMP h3te_cra.0050CB4C Это чтоб сократить код как я понял? Код 0050CA9E . 4D 6F 6E 73 7>ASCII "Monstr.dll",0 0050CAA9 . 4D 6E 73 74 7>ASCII "MnstrStr",0 0050CAB2 > 60 PUSHAD 0050CAB3 . 9C PUSHFD 0050CAB4 . 68 9ECA5000 PUSH h3te_cra.0050CA9E ; /FileName = "Monstr.dll" 0050CAB9 . E8 B9522F7C CALL kernel32.LoadLibraryA ; \LoadLibraryA 0050CABE . 68 A9CA5000 PUSH h3te_cra.0050CAA9 ; /ProcNameOrOrdinal = "MnstrStr" 0050CAC3 . 50 PUSH EAX ; |hModule 0050CAC4 . E8 D7E22F7C CALL kernel32.GetProcAddress ; \GetProcAddress 0050CAC9 . FFD0 CALL NEAR EAX А это подгружаются библиотеки? Типа Monstr.dll. А что такое MnstrStr? Я в библиотеках не очень. |
|
|
Гость_FakerNeo_* |
02 Jul 2008, 11:53
Сообщение
#47
|
|
//Это чтоб сократить код как я понял?
именно //А это подгружаются библиотеки? Типа Monstr.dll. А что такое MnstrStr? Я в библиотеках не очень. Ты ж вроде подгружал библиотеку? MnstrStr - это название процедуры вызываемой из библиотеки |
|
|
02 Jul 2008, 19:55
Сообщение
#48
|
|
Immortal Сообщений: 668 Спасибо сказали: 58 раз |
2FakerNeo
Цитата(FakerNeo @ 02 Jul 2008, 15:53) Ты ж вроде подгружал библиотеку? Нет не приходилось. Вот и хотел узнать, как это делать. Хотя наверно лучше найти/очистить часть кода, к которому бы игра не обращалась, и использовать его по своей нужде. Сможешь помочь? |
|
|
07 Jul 2008, 13:53
Сообщение
#49
|
|
В миру GrayFace Сообщений: 2 528 Спасибо сказали: 816 раз |
В конце секции кода Героев, как и во всех прогах, есть место. А для чего тебе?
-------------------- ДНК банана на 50% состоит из человека.
|
|
|
07 Jul 2008, 14:29
Сообщение
#50
|
|
Immortal Сообщений: 668 Спасибо сказали: 58 раз |
Мне нужно поменять некоторые параметры монстров. Ну к примеру поставить регенерацию, количество контратак, выстрел облаком смерти и т.д. Не хочу использовать ЕРМ.
|
|
|
07 Jul 2008, 18:24
Сообщение
#51
|
|
пират с чёрной меткой Сообщений: 23 600 Спасибо сказали: 12880 раз |
А ерм здесь не поможет. Может ты можешь выделить эти свойства в формат опыта существ? И добавить в ерм-команду.
-------------------- Давший быка на убой не выпросил и печень на жаркое.
|
|
|
07 Jul 2008, 19:44
Сообщение
#52
|
|
Immortal Сообщений: 668 Спасибо сказали: 58 раз |
Зависимость от опыта не хочу ставить. Регенерацию и контратаку организовать не сложно с помощью ЕРМ (уже делал), а вот с облаком смерти точно не поможет. Плюс еще кое-какие абилки добавить.
2sergroj А где находится конец секции кода? Самый простой вариант - открыл h3wog, перешел в самый конец, изменил, загрузил, - сразу вылет в бою при выстреле (что-то типа не может записать в недопустимую область памяти). |
|
|
08 Jul 2008, 15:45
Сообщение
#53
|
|
пират с чёрной меткой Сообщений: 23 600 Спасибо сказали: 12880 раз |
Цитата(major @ 07 Jul 2008, 19:44) Зависимость от опыта не хочу ставить. Можно поставить линию опыта, которая с самого начала имеет 100% Я это говорю для того, чтобы подобные линии можно было давать и другим существам. Регенерация и ответки действительно есть, а вот облако... Неплохо бы сделать. И давать на высшем уровне каким-нибудь Злобоглазам.. -------------------- Давший быка на убой не выпросил и печень на жаркое.
|
|
|
Гость_FakerNeo_* |
08 Jul 2008, 16:40
Сообщение
#54
|
|
Цитата(major @ 07 Jul 2008, 19:44) изменил, загрузил, - сразу вылет в бою при выстреле (что-то типа не может записать в недопустимую область памяти). Видать так изменил... |
|
|
09 Jul 2008, 08:02
Сообщение
#55
|
|
Immortal Сообщений: 668 Спасибо сказали: 58 раз |
Цитата(FakerNeo @ 08 Jul 2008, 20:40) Видать так изменил... Вот оригинальный код Код 002FF990 83F8 40 CMP EAX,40 002FF993 74 12 JE SHORT 002FF9A7 002FF995 83F8 41 CMP EAX,41 002FF998 74 0D JE SHORT 002FF9A7 002FF99A 3D C4000000 CMP EAX,0C4 002FF99F 74 06 JE SHORT 002FF9A7 002FF9A1 B8 00000000 MOV EAX,0 002FF9A6 C3 RETN Вот так работает (но появляется баг с подземельем) Код 002FF990 E9 13AD0100 JMP 0031A6A8 002FF995 83F8 41 CMP EAX,41 002FF998 74 0D JE SHORT 002FF9A7 002FF99A 3D C4000000 CMP EAX,0C4 002FF99F 74 06 JE SHORT 002FF9A7 002FF9A1 B8 00000000 MOV EAX,0 002FF9A6 C3 RETN 002FF9A7 B8 41000000 MOV EAX,41 002FF9AC C3 RETN ... 0031A6A8 83F8 08 CMP EAX,8 0031A6AB ^0F84 F652FEFF JE 002FF9A7 0031A6B1 83F8 09 CMP EAX,9 0031A6B4 ^0F84 ED52FEFF JE 002FF9A7 0031A6BA 3D A9000000 CMP EAX,0A9 0031A6BF ^0F84 E252FEFF JE 002FF9A7 0031A6C5 83F8 40 CMP EAX,40 0031A6C8 ^0F84 D952FEFF JE 002FF9A7 0031A6CE ^E9 C252FEFF JMP 002FF995 А вот гарантирован вылет Код 002FF990 E9 DB850400 JMP 00347F70 002FF995 83F8 41 CMP EAX,41 002FF998 74 0D JE SHORT 002FF9A7 002FF99A 3D C4000000 CMP EAX,0C4 002FF99F 74 06 JE SHORT 002FF9A7 002FF9A1 B8 00000000 MOV EAX,0 002FF9A6 C3 RETN ... 00347F70 83F8 08 CMP EAX,8 00347F73 ^0F84 2E7AFBFF JE 002FF9A7 00347F79 83F8 09 CMP EAX,9 00347F7C ^0F84 257AFBFF JE 002FF9A7 00347F82 83F8 40 CMP EAX,40 00347F85 ^0F84 1C7AFBFF JE 002FF9A7 00347F8B ^E9 057AFBFF JMP 002FF995 с сообщением вот такого содержания Код EIP = 0x007ACF70, Access Violation. Attempt to [B]read[/B] the inaccessible data at 0x00000092
|
|
|
Гость_FakerNeo_* |
09 Jul 2008, 18:11
Сообщение
#56
|
|
Ну тут нет никаких загадок. 0x007ACF70 - это твой джамп JMP 00347F70 на вроде как прописанный код. Но игра данный адрес использует для своих целей и заносит туда данные. На моей машине там dd 32 , а это равнозначно команде
007ACF70 3200 XOR AL,BYTE PTR [EAX] где в eax у тебя хранится номер монстра стреляющего. В твоем случае - это 92, т.е. балиста. естественно обращение по этому адресу запрещено. Короче игра затирает твой код... |
|
|
Гость_FakerNeo_* |
09 Jul 2008, 18:33
Сообщение
#57
|
|
Похожий случай и с подземельем
|
|
|
10 Jul 2008, 10:55
Сообщение
#58
|
|
openhomm developer Сообщений: 214 Спасибо сказали: 39 раз |
уж лучше добавить еще одну секцию кода, и джамп делать ту да
-------------------- |
|
|
12 Jul 2008, 13:47
(Сообщение отредактировал sergroj - 12 Jul 2008, 13:50)
Сообщение
#59
|
|
В миру GrayFace Сообщений: 2 528 Спасибо сказали: 816 раз |
Секция .idata начинается по адресу 63A000, секция кода заканчивается на 639BF2. 1038 байта свободны. Так что в 639BF2 без проблем можно писать код загрузки dll.
-------------------- ДНК банана на 50% состоит из человека.
|
|
|
21 Jul 2008, 17:21
Сообщение
#60
|
|
Immortal Сообщений: 668 Спасибо сказали: 58 раз |
Цитата(sergroj @ 12 Jul 2008, 17:47) Секция .idata начинается по адресу 63A000, секция кода заканчивается на 639BF2. 1038 байта свободны. Так что в 639BF2 без проблем можно писать код загрузки dll. А можно делать jump в эту часть кода? Попробовал, все равно вылетает с той же ошибкой. Куда можно джампнуть? Мне и 500 байт хватило бы. |
|
|
Текстовая версия | Сейчас: 29 March 2024 - 15:12 |
Copyright by Алексей Крючков
Programming by Degtyarev Dmitry |