Ох ребята, не знаю туда ли я обратился или нет, но сюда я попал не случайно! Значит была в свое время замечательная программа 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) Жмешь далее все устанавливается.....
Ты хочешь разобраться в программе, получить исходники? Если она на Дельфи (похоже на то), я могу ее посмотреть своими тулзами (собираю тестовый материал). Ссылку выложи, плиз. Быстро не обещаю, потому как жара, футбол, работа, увлечения, дача, творчество, животные, жена, дети,...
Хорошо.... вот она. http://gtamaps.ovl.ru/files/pafiledb.php?action=download&id=46 То что мне надо я уже писал.
FrantiC Может автору письмо написать? Вот на этом форуме он зарегистрирован. Добавление: на этой страничке нашел San Andreas Mod Installer PS Google рулит.
ARMICRON! San Andres э то совсем не то! Это МОд инсталлер! А скриптты там создаются не в EXE-виде, а в расширении .sami.... Он не гадится..... Да писал уже не отвечает..... Блин неужели такой сложный код?
Да я понял, просто так хочется... Ну заглядывай хоть сюда, чтобы тема не умерла.... это так важно. Постарайся - я тебе даже деньжат на Web-money вышлю )
О деньжатах, как ты выразился, говорят в коммерциал! А в этом разделе могут помочь и на безвозмездной основе. (Ндравится мне это слово - беЗвоЗмеЗдно - сразу вспоминаешь Винни-Пуха).
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), и посмотреть, нет-ли там того, что ты ищешь. Если не поможет, будем продолжать.
нечего там продолжать, ты думаешь его интересует принцип распаковки UPX или что-то другое? то что ему надо было - у нас занимает 20 минут, бесплатно ... а на его личное обучение уйдет не один месяц Шаги примерно такие: SO!#FILENAME\ EO!#FILENAME это оверлей в файле, просто дописанный в конце кусок, он вырезается и распаковывается в отдельный экзе - в котром правятся все строки (дельфи!) GTA3 на GTA San Andreas, тоже самое с начальным экзе и обратно все упаковываются в другом порядке
Блин я не могу понять где искать SO!#INSTALLER - Start of Installer ... EO!#INSTALLER - End of Installer Я распаковал UPx-ом Generator.exe; потом DeDe открыл его, и сформировал делшьфийские файлы... но там этого нету....
готовый 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 можно тоже пару строк изменить для красоты