GTA3 Mod Installer Hack for San Andreas.

Тема в разделе "WASM.BEGINNERS", создана пользователем FrantiC, 22 июн 2006.

  1. FrantiC

    FrantiC New Member

    Публикаций:
    0
    Регистрация:
    22 июн 2006
    Сообщения:
    7
    Ох ребята, не знаю туда ли я обратился или нет, но сюда я попал не случайно! Значит была в свое время замечательная программа GTA3_modification_install_generator_0.1b, которая помогала делать экзешник с модами! Но почему-то на Сан-Андреас этого не сделали пока... Дак вот я взял ее и попробовал - получилось и для Сан-Андреса! Схема там такая: добавляешь в окошко файлы модов, строчки, потом нажимаешь кнопку и эта программа создает инсталлятор мода! Но: Там везде написано на форме ГТА3 и путь тоже к ГТА3(это уже в созданном инсталляторе), и директорию соответственно где лежит файл gta3.exe а не gta_sa.exe.... Пришлось переименовывать, да ипуть указывать постоянно. Дак вот я решил Res-Hackerom попробовать посмотреть текст. данные, дабы подправить заголовки.... НЕ так то все и просто. Рез-Хакер не захател, говорит зажато.



    А вот потом я попал на ваш сайт и распаковал это сжатый UPX-ом экзешник... Потом залез в Рез-Хакер но там этих данных не было! Потом я решил скачать декомпилятор. Раскомпилил эту программу (не инсталлятор модов который создается этой прогаммой). Раскомпиливал прогой DeDe.. Посмотрел коды и структуру... очень похоже на Делфи! Потом решил сделать файлы проекта и Unit.pas. Загрузил все это в Делфи! Окрылась форма программы... Вот только на кнопки меня очень смутили коды: таких я никогда не видел.

    Вот допустим что в коде кнопки, которая при нажатии ДЕЛАЕТ инсталлятор (экзешник с модами):



    00444400 55 push ebp

    00444401 8BEC mov ebp, esp

    00444403 B904000000 mov ecx, $00000004

    00444408 6A00 push $00

    0044440A 6A00 push $00

    0044440C 49 dec ecx

    0044440D 75F9 jnz 00444408

    0044440F 51 push ecx

    00444410 53 push ebx

    00444411 56 push esi

    00444412 8945FC mov [ebp-$04], eax

    00444415 33C0 xor eax, eax

    00444417 55 push ebp



    * Possible String Reference to: 'йќоыялЮ^[‹е]Г'

    |

    00444418 687A454400 push $0044457A



    ***** TRY

    |

    0044441D 64FF30 push dword ptr fs:[eax]

    00444420 648920 mov fs:[eax], esp



    * Reference to Form1

    |

    00444423 8B45FC mov eax, [ebp-$04]



    * Reference to control TForm1.ListBox1 : TListBox

    |

    00444426 8B80D4020000 mov eax, [eax+$02D4]



    * Reference to field TListBox.Items : TStrings

    |

    0044442C 8B80F0010000 mov eax, [eax+$01F0]

    00444432 8B10 mov edx, [eax]



    * Reference to method TStrings.Count()

    |

    00444434 FF5214 call dword ptr [edx+$14]

    00444437 48 dec eax

    00444438 0F8EFA000000 jle 00444538

    0044443E 8D55EC lea edx, [ebp-$14]



    * Possible String Reference to: 'installer'

    |

    00444441 B890454400 mov eax, $00444590



    * Reference to: Unit1.Proc_004442B8

    |

    00444446 E86DFEFFFF call 004442B8



    * Reference to Form1

    |

    0044444B 8B45FC mov eax, [ebp-$04]



    * Reference to control TForm1.ListBox1 : TListBox

    |

    0044444E 8B80D4020000 mov eax, [eax+$02D4]



    * Reference to field TListBox.Items : TStrings

    |

    00444454 8B80F0010000 mov eax, [eax+$01F0]

    0044445A 8B10 mov edx, [eax]



    * Reference to method TStrings.Count()

    |

    0044445C FF5214 call dword ptr [edx+$14]

    0044445F 48 dec eax

    00444460 85C0 test eax, eax

    00444462 0F8CA7000000 jl 0044450F

    00444468 40 inc eax

    00444469 8945E4 mov [ebp-$1C], eax

    0044446C C745F800000000 mov dword ptr [ebp-$08], $00000000

    00444473 8D4DE0 lea ecx, [ebp-$20]



    * Reference to Form1

    |

    00444476 8B45FC mov eax, [ebp-$04]



    * Reference to control TForm1.ListBox1 : TListBox

    |

    00444479 8B80D4020000 mov eax, [eax+$02D4]



    * Reference to field TListBox.Items : TStrings

    |

    0044447F 8B80F0010000 mov eax, [eax+$01F0]

    00444485 8B55F8 mov edx, [ebp-$08]

    00444488 8B18 mov ebx, [eax]



    * Reference to method TStrings.Strings [ Index()

    |

    0044448A FF530C call dword ptr [ebx+$0C]

    0044448D 8B45E0 mov eax, [ebp-$20]

    00444490 8D55E8 lea edx, [ebp-$18]



    * Reference to: Unit1.Proc_00443F80

    |

    00444493 E8E8FAFFFF call 00443F80

    00444498 8D4DF0 lea ecx, [ebp-$10]



    * Reference to Form1

    |

    0044449B 8B45FC mov eax, [ebp-$04]



    * Reference to control TForm1.ListBox1 : TListBox

    |

    0044449E 8B80D4020000 mov eax, [eax+$02D4]



    * Reference to field TListBox.Items : TStrings

    |

    004444A4 8B80F0010000 mov eax, [eax+$01F0]

    004444AA 8B55F8 mov edx, [ebp-$08]

    004444AD 8B18 mov ebx, [eax]



    * Reference to method TStrings.Strings [ Index()

    |

    004444AF FF530C call dword ptr [ebx+$0C]

    004444B2 8D45F4 lea eax, [ebp-$0C]



    * Reference to: system.@LStrClr(String;String);

    |

    004444B5 E8CAF4FBFF call 00403984

    004444BA 8B45F0 mov eax, [ebp-$10]



    * Reference to: system.@LStrLen:Integer;

    |

    004444BD E842F7FBFF call 00403C04

    004444C2 8BF0 mov esi, eax

    004444C4 83FE01 cmp esi, +$01

    004444C7 7C2C jl 004444F5

    004444C9 8B45F0 mov eax, [ebp-$10]

    004444CC 8A5C30FF mov bl, byte ptr [eax+esi-$01]

    004444D0 80FB5C cmp bl, $5C

    004444D3 7420 jz 004444F5

    004444D5 8D45DC lea eax, [ebp-$24]

    004444D8 8B55F0 mov edx, [ebp-$10]

    004444DB 8BD3 mov edx, ebx



    * Reference to: system.@LStrFromChar(String;String;Char);

    |

    004444DD E84AF6FBFF call 00403B2C

    004444E2 8B55DC mov edx, [ebp-$24]

    004444E5 8D45F4 lea eax, [ebp-$0C]

    004444E8 8B4DF4 mov ecx, [ebp-$0C]



    * Reference to: system.@LStrCat3;

    |

    004444EB E860F7FBFF call 00403C50

    004444F0 4E dec esi

    004444F1 85F6 test esi, esi

    004444F3 75D4 jnz 004444C9

    004444F5 8D4DEC lea ecx, [ebp-$14]

    004444F8 8B55E8 mov edx, [ebp-$18]

    004444FB 8B45F4 mov eax, [ebp-$0C]



    * Reference to: Unit1.Proc_0044413C

    |

    004444FE E839FCFFFF call 0044413C

    00444503 FF45F8 inc dword ptr [ebp-$08]

    00444506 FF4DE4 dec dword ptr [ebp-$1C]

    00444509 0F8564FFFFFF jnz 00444473



    * Possible String Reference to: 'install.exe'

    |

    0044450F BAA4454400 mov edx, $004445A4

    00444514 8B45EC mov eax, [ebp-$14]



    * Reference to: Unit1.Proc_00444054

    |

    00444517 E838FBFFFF call 00444054

    0044451C 6A00 push $00



    * Possible String Reference to: 'W00t'

    |

    0044451E 68B0454400 push $004445B0



    * Possible String Reference to: 'Install.exe has been created, pleas

    | e test on a non critical gta3 insta

    | llation before distribution ;)'

    |

    00444523 68B8454400 push $004445B8



    * Reference to Form1

    |

    00444528 8B45FC mov eax, [ebp-$04]



    * Reference to: controls.TWinControl.GetHandle(TWinControl):HWND;

    |

    0044452B E8084DFEFF call 00429238

    00444530 50 push eax



    * Reference to: SysAllocStringLen.MessageBoxA()

    |

    00444531 E8CA21FCFF call 00406700

    00444536 EB1A jmp 00444552

    00444538 6A00 push $00



    * Possible String Reference to: 'Doh!'

    |

    0044453A 6820464400 push $00444620



    * Possible String Reference to: 'Not enough files selected'

    |

    0044453F 6828464400 push $00444628



    * Reference to Form1

    |

    00444544 8B45FC mov eax, [ebp-$04]



    * Reference to: controls.TWinControl.GetHandle(TWinControl):HWND;

    |

    00444547 E8EC4CFEFF call 00429238

    0044454C 50 push eax



    * Reference to: SysAllocStringLen.MessageBoxA()

    |

    0044454D E8AE21FCFF call 00406700

    00444552 33C0 xor eax, eax

    00444554 5A pop edx

    00444555 59 pop ecx

    00444556 59 pop ecx

    00444557 648910 mov fs:[eax], edx



    ****** FINALLY

    |



    * Possible String Reference to: '^[‹е]Г'

    |

    0044455A 6881454400 push $00444581

    0044455F 8D45DC lea eax, [ebp-$24]

    00444562 BA02000000 mov edx, $00000002



    * Reference to: system.@LStrArrayClr;

    |

    00444567 E83CF4FBFF call 004039A8

    0044456C 8D45E8 lea eax, [ebp-$18]

    0044456F BA04000000 mov edx, $00000004



    * Reference to: system.@LStrArrayClr;

    |

    00444574 E82FF4FBFF call 004039A8

    00444579 C3 ret





    * Reference to: system.@HandleFinally;

    |

    0044457A E99DEEFBFF jmp 0040341C

    0044457F EBDE jmp 0044455F



    ****** END

    |

    00444581 5E pop esi

    00444582 5B pop ebx

    00444583 8BE5 mov esp, ebp

    00444585 5D pop ebp

    00444586 C3 ret





    Такого я еще не видел в Делфи.... А самое главное не нашел ни единого слова о том что ГОТОВЫЙ ЭЗЕШНИК должен в указании директории находить именно gta3.exe (я то хочу на gta_sa.ese заменить) И не нашел ни единого слова о GTA3 которые также написаны на форме ГОТОВОГО экзешника.



    В общем очень надеюсь на помощь.....

    ЕЩе раз повтаряю суть! Есть прога Generator.exe. Добавляешь туда файлы модов, файл script.txt (в котором прописаны каманды замены файлов вдиректории ГТА и замены строчек и т.д). Нажимаешь кнопку. Генерируется файл installer.exe Запускаешь его - появляется окошко, где написаны всякие надписи про ГТА3 (которые нада заменить)а также выбор пути к директории ГТА (по умолчанию тоже ГТА3). ПРавильность выбора определяется наличием файла gta3.exe (надо заменить на gta_sa.exe) Жмешь далее все устанавливается.....
     
  2. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    DeDe не декомпилирует код, он создает ассемблерный код с комментариями.
     
  3. FrantiC

    FrantiC New Member

    Публикаций:
    0
    Регистрация:
    22 июн 2006
    Сообщения:
    7
    :dntknw: Что же делать..... :dntknw:
     
  4. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    Ты хочешь разобраться в программе, получить исходники? Если она на Дельфи (похоже на то), я могу ее посмотреть своими тулзами (собираю тестовый материал). Ссылку выложи, плиз. Быстро не обещаю, потому как жара, футбол, работа, увлечения, дача, творчество, животные, жена, дети,...:)
     
  5. FrantiC

    FrantiC New Member

    Публикаций:
    0
    Регистрация:
    22 июн 2006
    Сообщения:
    7
  6. ARMICRON

    ARMICRON New Member

    Публикаций:
    0
    Регистрация:
    7 янв 2006
    Сообщения:
    41
  7. FrantiC

    FrantiC New Member

    Публикаций:
    0
    Регистрация:
    22 июн 2006
    Сообщения:
    7
    ARMICRON!



    San Andres э

    то совсем не то! Это МОд инсталлер! А скриптты там создаются не в EXE-виде, а в расширении .sami.... Он не гадится.....



    Да писал уже не отвечает..... Блин неужели такой сложный код?
     
  8. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    Дело не в сложности, а в нехватке времени, я тебе об этом уже говорил!
     
  9. FrantiC

    FrantiC New Member

    Публикаций:
    0
    Регистрация:
    22 июн 2006
    Сообщения:
    7
    Да я понял, просто так хочется... Ну заглядывай хоть сюда, чтобы тема не умерла.... это так важно. Постарайся - я тебе даже деньжат на Web-money вышлю :))
     
  10. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    О деньжатах, как ты выразился, говорят в коммерциал! А в этом разделе могут помочь и на безвозмездной основе. (Ндравится мне это слово - беЗвоЗмеЗдно - сразу вспоминаешь Винни-Пуха).
     
  11. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine
  12. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    FrantiC

    Вот что удалось выяснить. В коде твоей программы лежит соб-но installer. После распаковки поищи такие строки

    SO!#INSTALLER - Start of Installer

    ...

    EO!#INSTALLER - End of Installer

    Между этими строками находится тело инсталлятора.



    При нажатии на кнопку Generate к телу инсталлятора добавляются следующие секции

    SO!#FILENAME_1

    ... Content of FILENAME_1

    EO!#FILENAME_1

    ...

    SO!#FILENAME_N

    ... Content of FILENAME_N

    EO!#FILENAME_N



    Получившийся код записывается под именем install.exe в текущую директорию, где находится твоя программа.



    Ты можешь получить этот файл, опять-таки распаковать его (он упакован UPX), и посмотреть, нет-ли там того, что ты ищешь. Если не поможет, будем продолжать.
     
  13. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine
    нечего там продолжать, ты думаешь его интересует принцип распаковки UPX или что-то другое? то что ему надо было - у нас занимает 20 минут, бесплатно ... а на его личное обучение уйдет не один месяц



    Шаги примерно такие:

    SO!#FILENAME\ EO!#FILENAME это оверлей в файле, просто дописанный в конце кусок, он вырезается и распаковывается в отдельный экзе - в котром правятся все строки (дельфи!) GTA3 на GTA San Andreas, тоже самое с начальным экзе и обратно все упаковываются в другом порядке
     
  14. FrantiC

    FrantiC New Member

    Публикаций:
    0
    Регистрация:
    22 июн 2006
    Сообщения:
    7
    Я не такой тупой, разберусь, щас попробую.....
     
  15. FrantiC

    FrantiC New Member

    Публикаций:
    0
    Регистрация:
    22 июн 2006
    Сообщения:
    7
    Блин я не могу понять где искать



    SO!#INSTALLER - Start of Installer

    ...

    EO!#INSTALLER - End of Installer



    Я распаковал UPx-ом Generator.exe; потом DeDe открыл его, и сформировал делшьфийские файлы... но там этого нету....
     
  16. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine
    готовый http://slil.ru/22875997 не устраивает?



    Generator.exe это 2 файла



    - вырезаешь из Generator.exe все байты между SO!#INSTALLER и EO!#INSTALLER

    - сохраняешь как INSTALLER.EXE

    - распаковываешь UPX -d INSTALLER.EXE

    - в PE Explorer правишь RC_DATA на нужный

    - в OllyDbg ищешь остальные строки GTA3 и правишь на нужные

    - упаковываешь UPX INSTALLER.EXE

    - вставляешь его обратно между SO!#INSTALLER и EO!#INSTALLER



    *в самом Generator.exe можно тоже пару строк изменить для красоты