Сейчас на форуме: jinoweb (+6 невидимых)

 [email protected] —› Программирование —› Как вырезать ненужную функцию в EXE
Посл.ответ Сообщение

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

Создано: 06 мая 2018 19:13
· Личное сообщение · #1

Привет всем!

Одна из игр не запускается на Windows Xp , потому как требует более новой версии ws2_32.dll . Данная обновленная библиотека идет начиная с Vista. Дословно ошибка выглядит так:

Точка входа в процедуру inet_ntop не найдена в библиотеке DLL WS2_32.dll

По сути данная функция используется только в мультиплеере, меня же игра интересует только как одиночная игра без использования интернета. Я нашел решение, но не знаю насколько оно корректное. В общем я в Hex редакторе отыскал запись об этой функции и банально исправил ее на другую , которая уже есть в DLL. То есть получился как бы дубль записи импортирования функции inet_addr.

Было:

htonl.–.htons.—.inet_addr.™.inet_ntop.›.ioctlsocket.њ

Стало:

htonl.–.htons.—.inet_addr.™.inet_addr.™.ioctlsocket.њ

Может есть какой нибудь более разумный вариант?




Ранг: 605.2 (!), 341thx
Активность: 0.470.25
Статус: Модератор
Research & Development

Создано: 06 мая 2018 19:42
· Личное сообщение · #2

Замени в импорте inet_ntop на inet_ntoa, она точно есть на Windows XP.
Для простоты можешь пропатчить в hex-редакторе строку в импорте, благо всего 1 байт заменить ("p" > "a").

Разница между inet_ntoa и inet_ntop в поддержке IPv6 у последней, что в твоём случае не актуально.
Опционально можешь пропатчить ещё и сам вызов в коде, чтобы не улетал стек.

Подробнее:
inet_ntoa @msdn
inet_ntop @msdn

-----
EnJoy!


| Сообщение посчитали полезным: stabud, Gideon Vi

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

Создано: 06 мая 2018 20:58
· Личное сообщение · #3

Так и сделаю пожалуй. Благодарю за совет!




Ранг: 605.2 (!), 341thx
Активность: 0.470.25
Статус: Модератор
Research & Development

Создано: 06 мая 2018 21:36
· Личное сообщение · #4

Напиши потом, получилось или нет.

-----
EnJoy!




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

Создано: 07 мая 2018 07:25
· Личное сообщение · #5

Так игра запускается и работает и с моим решением и с твоим. Конечно же , мультиплеер запускать нельзя (он мне и не нужен). Я просто не знаю , как ведет себя загрузчик PE , когда встречает дублирующую запись в импорте, поэтому и задал вопрос. Наверное туда можно записать вообще любую запись, лишь бы такая функция была в DLL-ке , ну и чтобы кол-во байт на запись совпадало. Патчить имена в вызове не вижу смысла, поскольку параметры у функций разные. Тогда придется переписывать и код вызова полностью, хотя конечно в данном случае возможно будет и мультиплеер работать. Ведь обе функции по сути преобразовывают сетевой адрес в строковое представление (скорее всего просто для вывода пользователю).




Ранг: 605.2 (!), 341thx
Активность: 0.470.25
Статус: Модератор
Research & Development

Создано: 07 мая 2018 14:20
· Личное сообщение · #6

stabud пишет:
игра запускается и работает


Отлично.
Всё же я за однобайтовый патч одной буквы имени импорта.

stabud пишет:
Патчить имена в вызове не вижу смысла


Не имена, а передаваемые параметры и стек.
Пропатчить код я рекомендую как раз потому, что ты не уверен, когда идёт вызов сетевого кода. Вполне вероятно, что вызов сетевых функций может идти во время инициализации приложения (игры), а не только после вызова режима сетевой игры.

Code:
  1. PCTSTR WSAAPI InetNtop(
  2.   _In_  INT     Family,
  3.   _In_  PVOID  pAddr,
  4.   _Out_ PTSTR  pStringBuf,
  5.   _In_  size_t StringBufSize
  6. );


Проверь, какое значение Family в коде, и если это 2 (AF_INET), то это обычный IPv4 и вызов можно смело патчить.
pAddr из inet_ntop - это указатель на ту же структуру in_addr, что и в inet_ntoa.

Code:
  1. char* FAR inet_ntoa(
  2.   _In_ struct   in_addr in
  3. );


После вызова inet_ntoa нужно будет возвращаемое значение (rax/eax) присвоить переменной pStringBuf.

В результате некоторых модификаций ты получишь полностью функциональную версию игры, которая при этом и в сетевом режиме будет работать.

Как вариант - написать хукалку функции inet_ntop в виде обёртки над inet_ntoa.

-----
EnJoy!




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

Создано: 07 мая 2018 17:26
· Личное сообщение · #7

Я с ассемблером далеко не на "ты", хотя чуть чуть пендрю.

Код процедуры, где идет вызов , выглядит так:

Code:
  1. 00546A0F  /$  55            PUSH EBP
  2. 00546A10  |.  89E5          MOV EBP,ESP
  3. 00546A12  |.  57            PUSH EDI
  4. 00546A13  |.  89D7          MOV EDI,EDX
  5. 00546A15  |.  56            PUSH ESI
  6. 00546A16  |.  53            PUSH EBX
  7. 00546A17  |.  89C3          MOV EBX,EAX
  8. 00546A19  |.  81EC 8C000000 SUB ESP,8C
  9. 00546A1F  |.  A1 A07DA301   MOV EAX,DWORD PTR DS:[1A37DA0]
  10. 00546A24  |.  8945 E4       MOV DWORD PTR SS:[EBP-1C],EAX
  11. 00546A27  |.  31C0          XOR EAX,EAX
  12. 00546A29  |.  0FB703        MOVZX EAX,WORD PTR DS:[EBX]
  13. 00546A2C  |.  83F8 02       CMP EAX,2
  14. 00546A2F  |.  74 0A         JE SHORT warzone2.00546A3B
  15. 00546A31  |.  83F8 17       CMP EAX,17
  16. 00546A34  |.  74 42         JE SHORT warzone2.00546A78
  17. 00546A36  |.  E9 C9000000   JMP warzone2.00546B04
  18. 00546A3B  |>  0FB643 07     MOVZX EAX,BYTE PTR DS:[EBX+7]
  19. 00546A3F  |.  C74424 08 0C5>MOV DWORD PTR SS:[ESP+8],warzone2.00CC550C                  ; ASCII "%hhu.%hhu.%hhu.%hhu"
  20. 00546A47  |.  C74424 04 280>MOV DWORD PTR SS:[ESP+4],28
  21. 00546A4F  |.  891424        MOV DWORD PTR SS:[ESP],EDX
  22. 00546A52  |.  894424 18     MOV DWORD PTR SS:[ESP+18],EAX
  23. 00546A56  |.  0FB643 06     MOVZX EAX,BYTE PTR DS:[EBX+6]
  24. 00546A5A  |.  894424 14     MOV DWORD PTR SS:[ESP+14],EAX
  25. 00546A5E  |.  0FB643 05     MOVZX EAX,BYTE PTR DS:[EBX+5]
  26. 00546A62  |.  894424 10     MOV DWORD PTR SS:[ESP+10],EAX
  27. 00546A66  |.  0FB643 04     MOVZX EAX,BYTE PTR DS:[EBX+4]
  28. 00546A6A  |.  894424 0C     MOV DWORD PTR SS:[ESP+C],EAX
  29. 00546A6E  |.  E8 5DBA0300   CALL warzone2.005824D0
  30. 00546A73  |.  E9 EF000000   JMP warzone2.00546B67
  31. 00546A78  |>  66:837B 08 00 CMP WORD PTR DS:[EBX+8],0
  32. 00546A7D  |.  0F85 F8000000 JNZ warzone2.00546B7B
  33. 00546A83  |.  66:837B 0A 00 CMP WORD PTR DS:[EBX+A],0
  34. 00546A88  |.  0F85 ED000000 JNZ warzone2.00546B7B
  35. 00546A8E  |.  66:837B 0C 00 CMP WORD PTR DS:[EBX+C],0
  36. 00546A93  |.  0F85 E2000000 JNZ warzone2.00546B7B
  37. 00546A99  |.  66:837B 0E 00 CMP WORD PTR DS:[EBX+E],0
  38. 00546A9E  |.  0F85 D7000000 JNZ warzone2.00546B7B
  39. 00546AA4  |.  66:837B 10 00 CMP WORD PTR DS:[EBX+10],0
  40. 00546AA9  |.  0F85 CC000000 JNZ warzone2.00546B7B
  41. 00546AAF  |.  66:837B 12 FF CMP WORD PTR DS:[EBX+12],0FFFF
  42. 00546AB4  |.  0F85 C1000000 JNZ warzone2.00546B7B
  43. 00546ABA  |.  8B43 14       MOV EAX,DWORD PTR DS:[EBX+14]
  44. 00546ABD  |.  C74424 0C 100>MOV DWORD PTR SS:[ESP+C],10
  45. 00546AC5  |.  C70424 020000>MOV DWORD PTR SS:[ESP],2
  46. 00546ACC  |.  8945 C8       MOV DWORD PTR SS:[EBP-38],EAX
  47. 00546ACF  |.  8D45 D4       LEA EAX,DWORD PTR SS:[EBP-2C]
  48. 00546AD2  |.  894424 08     MOV DWORD PTR SS:[ESP+8],EAX
  49. 00546AD6  |.  8D45 C8       LEA EAX,DWORD PTR SS:[EBP-38]
  50. 00546AD9  |.  894424 04     MOV DWORD PTR SS:[ESP+4],EAX
  51. 00546ADD  |.  FF15 E837A401 CALL DWORD PTR DS:[<&WS2_32.inet_ntoa>]                     ; WS2_32.inet_ntoa
  52. 00546AE3  |.  83EC 10       SUB ESP,10
  53. 00546AE6  |.  894424 0C     MOV DWORD PTR SS:[ESP+C],EAX
  54. 00546AEA  |.  C74424 08 9E5>MOV DWORD PTR SS:[ESP+8],warzone2.00CC559E                  ; ASCII "%s"
  55. 00546AF2  |.  C74424 04 280>MOV DWORD PTR SS:[ESP+4],28
  56. 00546AFA  |.  893C24        MOV DWORD PTR SS:[ESP],EDI
  57. 00546AFD  |.  E8 CEB90300   CALL warzone2.005824D0
  58. 00546B02  |.  EB 63         JMP SHORT warzone2.00546B67
  59. 00546B04  |>  C74424 0C 205>MOV DWORD PTR SS:[ESP+C],warzone2.00CC5520                  ; ASCII "Got non IPv4 or IPv6 address!"
  60. 00546B0C  |.  C74424 08 286>MOV DWORD PTR SS:[ESP+8],warzone2.00CC6928                  ; ASCII "addressToText"
  61. 00546B14  |.  C74424 04 190>MOV DWORD PTR SS:[ESP+4],19
  62. 00546B1C  |.  C70424 010100>MOV DWORD PTR SS:[ESP],101
  63.  


Это единственное место , где вызывается inet_ntop . Запись в импорте уже поправлена , поэтому в приведенном коде анализатор OllyDBG пишет inet_ntoa. Что интересно , я запускал мультиплеер , но переход на кусок кода с адреса 00546A34 , где есть вызов функции inet_ntoa вообще ни разу не отработал. Чуть выше по адресу 00546A29 в EAX всегда пишется двойка , поэтому сразу после сравнения и отрабатывании условного перехода программа всегда обходит этот кусок кода.

Меня уже в чате там ребята и читером и нубярой обтявкали , а я просто проверял когда код дойдет до нужного мне места

Насколько я понял , тут и патчить то надо только в одном месте , поправь меня если я не прав. Вот код в коротком варианте:

Code:
  1. 00546ABA  |.  8B43 14       MOV EAX,DWORD PTR DS:[EBX+14]
  2. 00546ABD  |.  C74424 0C 100>MOV DWORD PTR SS:[ESP+C],10
  3. 00546AC5  |.  C70424 020000>MOV DWORD PTR SS:[ESP],2
  4. 00546ACC  |.  8945 C8       MOV DWORD PTR SS:[EBP-38],EAX
  5. 00546ACF  |.  8D45 D4       LEA EAX,DWORD PTR SS:[EBP-2C]
  6. 00546AD2  |.  894424 08     MOV DWORD PTR SS:[ESP+8],EAX
  7. 00546AD6  |.  8D45 C8       LEA EAX,DWORD PTR SS:[EBP-38]
  8. 00546AD9  |.  894424 04     MOV DWORD PTR SS:[ESP+4],EAX
  9. 00546ADD  |.  FF15 E837A401 CALL DWORD PTR DS:[<&WS2_32.inet_ntoa>]                     ; WS2_32.inet_ntoa
  10. 00546AE3  |.  83EC 10       SUB ESP,10
  11. 00546AE6  |.  894424 0C     MOV DWORD PTR SS:[ESP+C],EAX
  12. 00546AEA  |.  C74424 08 9E5>MOV DWORD PTR SS:[ESP+8],warzone2.00CC559E                  ; ASCII "%s"
  13. 00546AF2  |.  C74424 04 280>MOV DWORD PTR SS:[ESP+4],28
  14. 00546AFA  |.  893C24        MOV DWORD PTR SS:[ESP],EDI
  15. 00546AFD  |.  E8 CEB90300   CALL warzone2.005824D0
  16.  


По адресу 00546AD9 пишем вместо [ESP+4] просто ESP и вроде больше ничего не надо.




Ранг: 605.2 (!), 341thx
Активность: 0.470.25
Статус: Модератор
Research & Development

Создано: 07 мая 2018 19:18
· Личное сообщение · #8

Файл выложи для начала.

-----
EnJoy!




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

Создано: 07 мая 2018 19:30
· Личное сообщение · #9

нет вывода пользователю, нет вызова. патча импорта достаточно. можно по адресу 00546A29 в eax писать двойку и то считаю это лишним.



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

Создано: 07 мая 2018 19:34
· Личное сообщение · #10

EXE файл занимает под 80 метров. Тогда уж проще даю ссылку на всю игру--> Link <-- 92 метра




Ранг: 605.2 (!), 341thx
Активность: 0.470.25
Статус: Модератор
Research & Development

Создано: 07 мая 2018 19:44
· Личное сообщение · #11

Так это опенсорс проект?
Вот это поворот

github.com/Warzone2100/warzone2100

у них в сорсах внешнего компонента MiniUPnP, кстати, есть дефайн под ветку без IPv6:

Code:
  1. /* the following code is only compatible with ip v4 addresses */
  2. strncpy(addr_str, inet_ntoa(((struct sockaddr_in *)&saddr)->sin_addr), addr_str_len);


При этом в оригинальном MiniUPnP огромное количество вызовов inet_ntop:
https://github.com/miniupnp/miniupnp/search?q=inet_ntop

Code:
  1. if(saddr.sa_family == AF_INET6) {
  2.          inet_ntop(AF_INET6,
  3.                  &(((struct sockaddr_in6 *)&saddr)->sin6_addr),
  4.                  addr_str, addr_str_len);
  5. else {
  6.          inet_ntop(AF_INET,
  7.                  &(((struct sockaddr_in *)&saddr)->sin_addr),
  8.                  addr_str, addr_str_len);
  9. }


Что примечательно, они 8 лет назад, ещё в 2010, написали, что отказались от inet_ntop и inet_ntoa в пользу getnameinfo:
Code:
  1. 2010/04/05:
  2. Use getnameinfo() instead of inet_ntop or inet_ntoa
  3. Work to make miniupnpc IPV6 compatible...


Code:
  1. * getnameinfo return ip v6 address with the scope identifier
  2. * such as : 2a01:e35:8b2b:7330::%4281128194 */
  3. = getnameinfo((const struct sockaddr *)&saddr, saddrlen,
  4.          addr_str, addr_str_len,
  5.          NULL, 0,
  6.          NI_NUMERICHOST | NI_NUMERICSERV);


Но что ещё интереснее, уже есть commit #e58323f, который заменяет inet_ntop на snprintf:
Replace inet_ntop with snprintf. This might improve XP compatibility.

Если ты посмотришь в код addressToText (/lib/netplay/netsocket.cpp), то увидишь, что и там не используется inet_ntop.
Code:
  1. static int addressToText(const struct sockaddr *addr, char *buf, size_t size)


Ты дал ссылку на старую версию 3.1.5 (warzone2100-3.1.5_portable) от 2016 года, при этом актуальная версия 3.2.3 и в ней поддержка Windows XP присутствует.

ВЫВОД:
Скачать и использовать актуальную версию, а не старьё.

Скачать:
sourceforge.net/projects/warzone2100/files/releases/3.2.3/
- warzone2100-3.2.3.exe 109.9 MB

-----
EnJoy!




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

Создано: 07 мая 2018 19:58 · Поправил: siccubus
· Личное сообщение · #12

пересобрать без IPv6 видимо слишком просто




Ранг: 605.2 (!), 341thx
Активность: 0.470.25
Статус: Модератор
Research & Development

Создано: 07 мая 2018 20:40
· Личное сообщение · #13

siccubus пишет:
пересобрать без IPv6 видимо слишком просто


Зачем пересобирать? В текущей версии и так всё работает под Windows XP.
ТС вместо того, чтобы обновиться до актуальной версии, использует старую.

-----
EnJoy!




Ранг: -0.7 (гость), 170thx
Активность: 0.540
Статус: Участник

Создано: 07 мая 2018 20:49
· Личное сообщение · #14

Зачем вырезать, меняешь в импорте имя библиотеки WS2_32.dll на WS2_XX.dll, делаешь библиотеку с заглушками функций которые есть в импорте, профит.

| Сообщение посчитали полезным: stabud

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

Создано: 07 мая 2018 20:56
· Личное сообщение · #15

Jupiter!

Я выбрал версию игры далеко не новую 3.1.5 , которую считаю наиболее удавшуюся. Новые версии я пробовал , там конечно много косяков исправлено , но так же появилось много новых проблем. Исходники на гитхабе думаю от "сегодняшнего дня". Даже если я найду те самые исходники от версии 3.1.5 , все равно я затрачу кучу времени на изучение и что более важно на компиляцию. Ведь я basic кодер и все нюансы С++ компилирования далеки для меня. Конечно иногда бывало , я компилировал какую нибудь библиотеку из сишных сорцов на другом компьютере, где у меня установлен MinGW. И как правило без канители почти никогда не обходилось... Вообще я посчитал, что быстрее:

пропатчить EXE , тем более что патчить нужно всего один байт

чем

искать исходники, изучать и править , ставить компилятор (возможно еще с дополнительными библиотеками) , изучать параметры компиляции (makefile , readme и пр.) и компилировать

Вся беда оказалась в том, что версия 1.3.2 последняя , которая поддерживает windows XP , а мне нужна именно 1.3.5

В принципе вопрос уже решен. Игра пропатчена , функция inet_ntop хоть и есть изначально в импорте , но похоже никак не влияет на MultiPlayer , и тем более на SinglePlayer.

В любом случае Jupiter спасибо , что ты потратил время на мой вопрос!




Ранг: 605.2 (!), 341thx
Активность: 0.470.25
Статус: Модератор
Research & Development

Создано: 08 мая 2018 08:01
· Личное сообщение · #16

stabud

Как выяснилось, в твоём случае достаточно пропатчить только 1 байт в импорте, поскольку если у тебя отключён IPv6 в настройках сети (а это скорее всего именно так), то на входе в addressToText значение поля addr->sa_family всегда будет AF_INET = 2 и ветка с inet_ntop никогда не будет выполняться.

Code:
  1. addressToText:                  push         ebp
  2. .00546A10: 89E5                 mov          ebp,esp
  3. .00546A12: 57                   push         edi
  4. .00546A13: 89D7                 mov          edi,edx
  5. .00546A15: 56                   push         esi
  6. .00546A16: 53                   push         ebx
  7. .00546A17: 89C3                 mov          ebx,eax
  8. .00546A19: 81EC8C000000         sub          esp,00000008C
  9. .00546A1F: A1A07DA301           mov          eax,[001A37DA0]
  10. .00546A24: 8945E4               mov          [ebp][-01C],eax
  11. .00546A27: 31C0                 xor          eax,eax
  12. .00546A29: 0FB703               movzx        eax,w,[ebx]
  13. .00546A2C: 83F802               cmp          eax,2
  14. .00546A2F: 740A                 jz           @AF_INET -- 1
  15. .00546A31: 83F817               cmp          eax,017
  16. .00546A34: 7442                 jz           @AF_INET6 -- 2
  17. .00546A36: E9C9000000           jmp          @ErrIPaddr -- 3
  18. @AF_INET:  0FB64307           1 movzx        eax,b,[ebx][7]
  19. .00546A3F: C74424080C55CC00     mov          d,[esp][8],000CC550C ;'%hhu.%hhu.%hhu.%hhu' -- 4
  20. .00546A47: C744240428000000     mov          d,[esp][4],000000028
  21. .00546A4F: 891424               mov          [esp],edx
  22. .00546A52: 89442418             mov          [esp][018],eax
  23. .00546A56: 0FB64306             movzx        eax,b,[ebx][6]
  24. .00546A5A: 89442414             mov          [esp][014],eax
  25. .00546A5E: 0FB64305             movzx        eax,b,[ebx][5]
  26. .00546A62: 89442410             mov          [esp][010],eax
  27. .00546A66: 0FB64304             movzx        eax,b,[ebx][4]
  28. .00546A6A: 8944240C             mov          [esp][00C],eax
  29. .00546A6E: E85DBA0300           call         snprintf -- 5
  30. .00546A73: E9EF000000           jmp         .000546B67 -- 6
  31. @AF_INET6: 66837B0800         2 cmp          w,[ebx][8],0
  32. .00546A7D: 0F85F8000000         jnz          makeipv6 -- 7
  33. .00546A83: 66837B0A00           cmp          w,[ebx][00A],0
  34. .00546A88: 0F85ED000000         jnz          makeipv6 -- 7
  35. .00546A8E: 66837B0C00           cmp          w,[ebx][00C],0
  36. .00546A93: 0F85E2000000         jnz          makeipv6 -- 7
  37. .00546A99: 66837B0E00           cmp          w,[ebx][00E],0
  38. .00546A9E: 0F85D7000000         jnz          makeipv6 -- 7
  39. .00546AA4: 66837B1000           cmp          w,[ebx][010],0
  40. .00546AA9: 0F85CC000000         jnz          makeipv6 -- 7
  41. .00546AAF: 66837B12FF           cmp          w,[ebx][012],-1



Скрин:
d41c_08.05.2018_EXELAB.rU.tgz - hiew_warzone2100_addressToText.png

-----
EnJoy!


| Сообщение посчитали полезным: stabud

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

Создано: 08 мая 2018 11:03
· Личное сообщение · #17

Как выяснилось, в твоём случае достаточно пропатчить только 1 байт в импорте, поскольку если у тебя отключён IPv6 в настройках сети (а это скорее всего именно так), то на входе в addressToText значение поля addr->sa_family всегда будет AF_INET = 2 и ветка с inet_ntop никогда не будет выполняться.

А ну тогда понятно почему данная ветка кода не работала при разных манипуляциях в игре . Ну что же это к лучшему. Кстати, а как в HIEW писать свои метки? В демо версии это возможно?




Ранг: 605.2 (!), 341thx
Активность: 0.470.25
Статус: Модератор
Research & Development

Создано: 08 мая 2018 14:18
· Личное сообщение · #18

stabud пишет:
Кстати, а как в HIEW писать свои метки?


Shift+F12 - Добавить метку
F12 - Посмотреть метки
; - Добавить комментарий

stabud пишет:
В демо версии это возможно?


Хз, проверь )

Судя по описанию на сайте, сохранять эти метки (имена) в демо нельзя:

Code:
  1. Ограничения DEMO-версии:
  2. поддержка только файлов PE 32бит
  3. нет ассемблера
  4. нет 64битного дизассемблера
  5. нет ARM дизассемблера
  6. нет поддержки логических/физических дисков
  7. нет модуля крипта
  8. нет обработки ini-файла
  9. нет sav-файла
  10. нет клавиатурных макросов
  11. нет записи/чтения имен (names)
  12. нет загрузки HEM (Hiew External Module)


-----
EnJoy!




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

Создано: 08 мая 2018 17:48
· Личное сообщение · #19

Проверил , работает в DEMO, благодарю за информацию. Вопрос решен, тему закрываю.




Ранг: 605.2 (!), 341thx
Активность: 0.470.25
Статус: Модератор
Research & Development

Создано: 09 мая 2018 01:04
· Личное сообщение · #20

На всякий случай готовый файл names для Hiew:

Code:
  1. .00546A0F  addressToText
  2. .00546A3B  @AF_INET
  3. .00546A78  @AF_INET6
  4. .00546A78 *  check if it's a real IPv6 address
  5. .00546B04  @ErrIPaddr
  6. .00546B7B  makeipv6
  7. .0055BCB9  dbgprint
  8. .005824D0  snprintf
  9. .00B2B7C0  errstack
  10. .01A46302  Patch inet_ntop > inet_ntoa


Загрузить имена: F12, F10

Версия warzone2100_portable.exe: 3.1.5

de47_09.05.2018_EXELAB.rU.tgz - warzone2100_portable.namet

-----
EnJoy!



 [email protected] —› Программирование —› Как вырезать ненужную функцию в EXE
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати