PDA

Просмотр полной версии : [Info] Об исходниках Open SA-MP



Daniel_Cortez
04.08.2016, 15:06
Всем привет.

Возможно, некоторые из вас уже слышали о таком проекте, как Open SA-MP. Этот проект задумывался, как своего рода замена для SA-MP. В какой-то момент разработчики Open SA-MP оказались неспособны заниматься его развитием, но в сети так и остались исходники проекта.
Собственно, сами эти исходники можно найти по следующей ссылке:
https://github.com/Sasuke78200/open-samp


Многие утверждают, что исходники Open SA-MP получены на основе обратной разработки (https://ru.wikipedia.org/wiki/%D0%9E%D0%B1%D1%80%D0%B0%D1%82%D0%BD%D0%B0%D1%8F_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0) SA-MP, но это не совсем так.
Да, отчасти это правда, что можно понять по некоторым комментариям в коде:
https://github.com/Sasuke78200/open-samp/blob/master/Open%20SAMP/script/func_amx.cpp#L2850
https://github.com/Sasuke78200/open-samp/blob/6a1aef3052d6a8c3ec5ae56d10e002f1a2772ec2/Open%20SAMP/pool/class_text3dlabels.cpp#L32


А здесь, судя по названиям переменных и комментариям к ним, работали декомпилятором Hex-Rays Decompiler:
https://github.com/Sasuke78200/open-samp/blob/6a1aef3052d6a8c3ec5ae56d10e002f1a2772ec2/Open%20SAMP/pool/class_pickuppool.cpp#L149
https://github.com/Sasuke78200/open-samp/blob/6a1aef3052d6a8c3ec5ae56d10e002f1a2772ec2/Open%20SAMP/main.cpp#L83


Тем не менее, есть косвенные доказательства и того факта, что за основу были взяты оригинальные исходники SA-MP.
Например, если открыть файл "Open SAMP/amx/amx.h", то можно найти в нём следующий комментарий:
https://github.com/Sasuke78200/open-samp/blob/master/Open%20SAMP/amx/amx.h#L21

Разработчик Pawn изначально пользовался системой контроля версий SVN, которая автоматически добавляла в редактируемые файлы исходного кода дату и время регистрации изменений, а также номер ревизии. Очевидно, что в SA-MP Team тоже использовали SVN.


Ещё можно кое-что найти в файле "amx.c":
https://github.com/Sasuke78200/open-samp/blob/master/Open%20SAMP/amx/amx.c#L2096




op_jump_pri:
// Kye SA-MP Team 9/9/2009 Unsecure opcode
//PUSH((unsigned char *)cip-code);
//cip=(cell *)(code+(int)pri);
//NEXT(cip);
assert(0);
ABORT(amx,AMX_ERR_INVINSTR);

Примерно такой текст можно найти в обработчиках для опкодов CALL.PRI и JUMP.PRI. Вместо них поставлены заглушки, поднимающие ошибку времени выполнения в абстрактной машине, что делает эти опкоды нерабочими.
В комментариях указано, что причина таких заглушек - якобы уязвимость опкодов.
Действительно, такая уязвимость имела место - лично я не слышал ни об одном случае её применения на практике, но в теории опкоды CALL.PRI и JUMP.PRI могли использоваться для совершения атак (переход на специально подготовленный байт-код за пределами секции кода скрипта).
Уязвимость была обнаружена после релиза Pawn 3.2 и исправлена в Pawn 3.3 (коммит от 08.12.2008 (https://github.com/compuphase/pawn/commit/6899ed3aa5840eba288a36c2830de86d13e852cb)) - уязвимые опкоды исключены из набора инструкций и добавлена статическая проверка байт-кода при его загрузке (в функции VerifyPCode). Похоже, Kalcor тоже решил удалить эти опкоды, поставив на их место заглушки, хотя проверку байт-кода добавить не удосужился (типично), тем самым оставив множество других потенциальных уязвимостей, которые до сих пор используются в сообществе SA-MP как "фичи".
Если верить комментариям в коде Open SA-MP, исправление было совершено "9/9/2009", т.е. это было после выхода SA-MP 0.2x (20.11.2008) и перед релизом 0.3a (19.10.2009). Всё это подтверждает предположение о том, что Open SA-MP основывается на исходниках SA-MP позднее 0.2x (т.е. 0.3a или одной из бета-версий).

Что интересно, в сервере SA-MP 0.2x CALL.PRI и JUMP.PRI тоже не работают, но это можно объяснить тем, что Kalcor просто подменил архив на files.sa-mp.com (http://files.sa-mp.com), не меняя дату. Подобная подмена уже имела место (http://pro-pawn.ru/showthread.php?12242&p=63497&viewfull=1#post63497) после релиза 0.3.7 R2-1.


Ещё одна интересная деталь:
https://github.com/Sasuke78200/open-samp/blob/master/Open%20SAMP/script/func_amx.cpp#L2980-L2984



{ "GetPlayerInterior", funcGetPlayerInterior }, // 105
{ "SetPlayerAttachedObject", funcSetPlayerAttachedObject }, // 106
{ "RemovePlayerAttachedObject", funcRemovePlayerAttachedObject }, // 107
{ "SetPlayerAttachedObject", funcSetPlayerAttachedObject }, // 108
{ "IsPlayerAttachedObjectSlotUsed", funcIsPlayerAttachedObjectSlotUsed },

Это отрывок таблицы нативных функций в Open SA-MP. Обратите внимание: запись для функции SetPlayerAttachedObject продублирована. Очевидно, это баг, связанный с невнимательностью при copy-paste.
Если верить SA-MP wiki, функция SetPlayerAttachedObject была добавлена в 0.3c.
И вот что можно найти, дизассемблировав сервер SA-MP 0.3c R1:
http://ihost.pro-pawn.ru/image.php?di=D283
Всё те же дублирующиеся записи.
Скорее всего, эта ошибка была допущена кем-то из SA-MP Team ещё до того, как исходники попали в руки к разработчикам Open SA-MP, что говорит о том, что в Open SA-MP за основу были взяты исходники, как минимум, от 0.3c R1 (либо, опять же, одной из предрелизных версий).
Конечно же, есть возможность того, что проект Open SA-MP на самом деле основывается на исходниках более ранней версии (0.3b или 0.3a), а функция SetPlayerAttachedObject была добавлена методом обратной разработки. Но зачем тогда нужно было повторять баг в "своей реализации"? Всё равно никакого эффекта от этого не будет, виртуальная машина AMX просто проигнорирует попытку повторной регистрации функции. Случайно же повторить точно такую же ошибку практически нереально. Остаётся только один вариант: разработчики Open SA-MP не заметили той опечатки, поскольку код регистрации нативных функций был взят из оригинала SA-MP и к нему особо не присматривались. Либо опечатку заметили, но забыли её исправить - или же просто проигнорировали в силу её незначительности. Кстати говоря, она не исправлена даже в последних версиях SA-MP.


Подведём итоги. Прямые доказательства вряд ли возможны здесь в принципе, но всё же есть несколько косвенных зацепок, в итоге указывающих на то, что Open SA-MP основывается на оригинальных исходниках SA-MP, как минимум, версии 0.3c или одной из бета-версий.

В этой теме я привёл исключительно своё мнение, но меня также интересует и ваше.
Можно ли по исходникам Open SA-MP судить о качестве кода в самом SA-MP? Можно ли на их основе делать какие-либо выводы о работе тех или иных систем - PVar'ов, например? Или, возможно, я в чём-то ошибаюсь в этой статье?
В любом случае буду рад услышать ваше мнение в комментариях.

Profyan
04.08.2016, 17:54
Если даже он и на основе 0.3c,то какой смысл на основе него судить о коде и принципе работы SA:MP? Есть же в сети исходники более новой версии 0.3d. Смысл копаться в Open SA:MP,кстати с возможно сильно измененным кодом, если можно открыть оригинал(хотя в интернете много лжи)?
или я что-то не понял и мне стоит прочитать все заново?

Daniel_Cortez
04.08.2016, 18:03
Есть же в сети исходники более новой версии 0.3d.
Это и есть Open SA-MP. Суть в том, что были взяты исходники SA-MP 0.3c, а обратной разработкой добавлены только функции из 0.3d (их можно найти в func_amx.cpp, в самом конце таблицы нативных функций).

UPD: Только что проверил, там добавлены не все функции 0.3d. Нет функций AttachObjectToObject, IsObjectMoving, IsPlayerObjectMoving, а также отсутствует коллбэк OnPlayerGiveDamage.

$continue$
04.08.2016, 20:34
0.3d не официальная версия. Скорее всего полученная реверс-инжинирингом. Ну или люди присели, покурили и написали с нуля копию SA-MP :shock:
Официальная версия слитых исходников - 0.2.2x (или что то в этом вроде)


Есть же в сети исходники более новой версии 0.3d

А, вообще Кую давно пара "вскрыть" исходный код SA-MP. Ибо многие баги бы фиксились pull request'ами.

Daniel_Cortez
04.08.2016, 22:15
0.3d не официальная версия. Скорее всего полученная реверс-инжинирингом. Ну или люди присели, покурили и написали с нуля копию SA-MP :shock:
Официальная версия слитых исходников - 0.2.2x (или что то в этом вроде)
Была утечка исходников 0.2x, их тогда adamix продавал. Но это ещё не значит, что не было других утечек и Open SA-MP не основывается на исходниках SA-MP 0.3*.




А, вообще Кую давно пара "вскрыть" исходный код SA-MP. Ибо многие баги бы фиксились pull request'ами.
И тогда кто-нибудь форкнет проект, начнёт его активно развивать/продвигать и вся прибыль с проекта пойдёт к нему. Куй ленивый, но не дурак (ну или хотя бы не настолько дурак).

ziggi
06.08.2016, 23:17
Если бы основа была 0.3c, то тогда бы им не пришлось реверсить (https://github.com/Sasuke78200/open-samp/blob/master/Open%20SAMP/pool/class_text3dlabels.h) 3D текст (https://github.com/Sasuke78200/open-samp/blob/master/Open%20SAMP/pool/class_text3dlabels.cpp). Также в этих исходниках не хватает некоторых функций, реализации ShowPlayerDialog, например.

Да и вообще, есть ли смысл в знании версии основы Open SA-MP? Исходники есть и кому-то они помогают (например они очень сильно помогают мне в разработке FCNPC).

Надо понимать, что SA-MP начал разрабатываться более десяти лет назад и, как в любом проекте такого возраста, код и некоторые решения смотрятся довольно странно. Kye сам это понимает, о чём он дал понять в своём сообщении о 0.4. Хотя я не понимаю, почему 0.4 обязательно должна быть полностью переписана, ведь назвать так можно ту версию, в которой будет значительное количество нововведений, как это было с 0.2 и 0.3a.

VVWVV
06.08.2016, 23:36
Если бы основа была 0.3c, то тогда бы им не пришлось реверсить (https://github.com/Sasuke78200/open-samp/blob/master/Open%20SAMP/pool/class_text3dlabels.h) 3D текст (https://github.com/Sasuke78200/open-samp/blob/master/Open%20SAMP/pool/class_text3dlabels.cpp). Также в этих исходниках не хватает некоторых функций, реализации ShowPlayerDialog, например.

Да и вообще, есть ли смысл в знании версии основы Open SA-MP? Исходники есть и кому-то они помогают (например они очень сильно помогают мне в разработке FCNPC).

Надо понимать, что SA-MP начал разрабатываться более десяти лет назад и, как в любом проекте такого возраста, код и некоторые решения смотрятся довольно странно. Kye сам это понимает, о чём он дал понять в своём сообщении о 0.4. Хотя я не понимаю, почему 0.4 обязательно должна быть полностью переписана, ведь назвать так можно ту версию, в которой будет значительное количество нововведений, как это было с 0.2 и 0.3a.

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

Данные исходники действительно помогают, но из-за недостатка некоторых функций приходится самому заглядывать в код.

ziggi
06.08.2016, 23:49
Вы же сами на свой вопрос ответили, говоря о том, что SA-MP разрабатывался 10 лет назад. Вполне возможно, что его код написан так, что он сам не может разобраться в нём, поэтому и хочет переписать все заново. Вы же знаете его, о его ошибках и недочётах, которые он совершает уже очень длинный срок. Впрочем, не исключаю тот факт, что действительно существует какой-то "комитет", который решает о жизни новых версий.

Не думаю, что есть проблема в непонимании собственного кода, ибо весь код выглядит очень простым.

Daniel_Cortez
07.08.2016, 01:43
Если бы основа была 0.3c, то тогда бы им не пришлось реверсить (https://github.com/Sasuke78200/open-samp/blob/master/Open%20SAMP/pool/class_text3dlabels.h) 3D текст (https://github.com/Sasuke78200/open-samp/blob/master/Open%20SAMP/pool/class_text3dlabels.cpp).
Да, действительно. Я проверил тот листинг в class_text3dlabels.cpp, функция C3DTextLabels::Create3DTextLabel располагается по адресу 0047ABE0, что соответствует версии 0.3c R2-2.
Тем не менее, факт воссоздания с нуля это ещё не доказывает. Скорее всего, у них были исходники от 0.3c R1 и они просто синхронизировали изменения в реализации 3D-текста, произошедшие в R2. Вполне сходится с фактом дублирования SetPlayerAttachedObject - этот баг появился как раз в 0.3c R1 и, как я уже говорил ранее, если бы эта функция тоже добавлялась в Open SA-MP реверсингом, разработчики не могли бы не заметить то дублирование и у них не было бы ни одной причины намеренно повторять тот же самый баг в своей реализации.



Также в этих исходниках не хватает некоторых функций, реализации ShowPlayerDialog, например.
А это что?

https://github.com/Sasuke78200/open-samp/blob/6a1aef3052d6a8c3ec5ae56d10e002f1a2772ec2/Open%20SAMP/script/func_amx.cpp#L993
https://github.com/Sasuke78200/open-samp/blob/6a1aef3052d6a8c3ec5ae56d10e002f1a2772ec2/Open%20SAMP/script/func_amx.cpp#L2929

Btw, я уже говорил об отсутствующих функциях, но только из 0.3d.



Да и вообще, есть ли смысл в знании версии основы Open SA-MP? Исходники есть и кому-то они помогают (например они очень сильно помогают мне в разработке FCNPC).
Есть, чтобы знать, какие части исходников относятся к оригиналу (SA-MP), а какие были воссозданы.
Иначе, если написать статью о том или ином функционале SA-MP, опираясь на исходники Open SA-MP, найдутся те, кто попытается поставить весь материал статьи под сомнение, аргументируя тем, что описываемый функционал добавлен разрабами Open SA-MP и нет никакой гарантии того, что он реализован точно так же, как в оригинале.

Nexius_Tailer
07.08.2016, 02:03
Есть, чтобы знать, какие части исходников относятся к оригиналу (SA-MP), а какие были воссозданы.
Иначе, если написать статью о том или ином функционале SA-MP, опираясь на исходники Open SA-MP, найдутся те, кто попытается поставить весь материал статьи под сомнение, аргументируя тем, что описываемый функционал добавлен разрабами Open SA-MP и нет никакой гарантии того, что он реализован точно так же, как в оригинале.
Ну так выяснить это наверняка всё равно невозможно

TheMallard
07.08.2016, 08:02
Куй не дурак хотя-бы потому что смог написать и монетизировать мультиплеер для GTA, при этом не столкнувшись с Take2 и Rockstar.

ziggi
07.08.2016, 09:40
Да, действительно. Я проверил тот листинг в class_text3dlabels.cpp, функция C3DTextLabels::Create3DTextLabel располагается по адресу 0047ABE0, что соответствует версии 0.3c R2-2.
Тем не менее, факт воссоздания с нуля это ещё не доказывает. Скорее всего, у них были исходники от 0.3c R1 и они просто синхронизировали изменения в реализации 3D-текста, произошедшие в R2. Вполне сходится с фактом дублирования SetPlayerAttachedObject - этот баг появился как раз в 0.3c R1 и, как я уже говорил ранее, если бы эта функция тоже добавлялась в Open SA-MP реверсингом, разработчики не могли бы не заметить то дублирование и у них не было бы ни одной причины намеренно повторять тот же самый баг в своей реализации.
Да, это тоже возможно.


А это что?

https://github.com/Sasuke78200/open-samp/blob/6a1aef3052d6a8c3ec5ae56d10e002f1a2772ec2/Open%20SAMP/script/func_amx.cpp#L993
https://github.com/Sasuke78200/open-samp/blob/6a1aef3052d6a8c3ec5ae56d10e002f1a2772ec2/Open%20SAMP/script/func_amx.cpp#L2929

Btw, я уже говорил об отсутствующих функциях, но только из 0.3d.
И правда, просто мой редактор не смог найти нужную функцию поиском текста по файлам, странно.


Есть, чтобы знать, какие части исходников относятся к оригиналу (SA-MP), а какие были воссозданы.
Иначе, если написать статью о том или ином функционале SA-MP, опираясь на исходники Open SA-MP, найдутся те, кто попытается поставить весь материал статьи под сомнение, аргументируя тем, что описываемый функционал добавлен разрабами Open SA-MP и нет никакой гарантии того, что он реализован точно так же, как в оригинале.
Для подобного лучше основываться на оригинальных исходниках более ранних версий. А исходники Open SA-MP если не идентичны, то очень близки к последним исходникам SA-MP, это видно при обратной разработке текущей версии SA-MP.

UPD: Еле-еле нашёл исходники vc-mp 0.1c, загрузил на GitHub, может кому-нибудь пригодится: https://github.com/ziggi/vc-mp. Стиль написания очень похож на SA-MP.

TheMallard
07.08.2016, 19:28
Да, это тоже возможно.


И правда, просто мой редактор не смог найти нужную функцию поиском текста по файлам, странно.


Для подобного лучше основываться на оригинальных исходниках более ранних версий. А исходники Open SA-MP если не идентичны, то очень близки к последним исходникам SA-MP, это видно при обратной разработке текущей версии SA-MP.

UPD: Еле-еле нашёл исходники vc-mp 0.1c, загрузил на GitHub, может кому-нибудь пригодится: https://github.com/ziggi/vc-mp. Стиль написания очень похож на SA-MP.

Так писал же Куй, он же и опубликовал их, когда стал заниматься SA-MP. И да, SA-MP основан на VC-MP.

- - - Добавлено - - -

https://github.com/ziggi/vc-mp

> vcmp: A dll renamed as .flt and placed within the GTA:VC /mss folder. Files named as *.flt will be automatically loaded inprocess by the Miles Sound System which GTA:VC uses.

Почему же Куй не сделал SA-MP в d3d9.dll? ИМХО, было бы лучше. Еще в SA есть библиотека dinput8.dll (https://habrahabr.ru/post/146791/) там всего одна функция используется.

Daniel_Cortez
07.08.2016, 20:00
Еле-еле нашёл исходники vc-mp 0.1c, загрузил на GitHub, может кому-нибудь пригодится: https://github.com/ziggi/vc-mp. Стиль написания очень похож на SA-MP.
Не мог бы ввести в курс дела, откуда эти исходники взялись? Куй сам выкладывал их или это результат очередной утечки? Если последнее, то откуда там лицензия GPL?



> vcmp: A dll renamed as .flt and placed within the GTA:VC /mss folder. Files named as *.flt will be automatically loaded inprocess by the Miles Sound System which GTA:VC uses.

Почему же Куй не сделал SA-MP в d3d9.dll? ИМХО, было бы лучше. Еще в SA есть библиотека dinput8.dll (https://habrahabr.ru/post/146791/) там всего одна функция используется.
Потому что тогда пришлось бы писать перенаправления для каждой функции из оригинальной d3d9.dll. С dinput8.dll и ddraw.dll то же самое, хоть там и экспортируется всего по одной функции.
Если же сделать библиотеку с расширением .flt, она сама загрузится с помощью MSS, достаточно будет лишь экспортировать одну функцию (DllMain), которая будет вызвана при загрузке библиотеки, и в неё запихнуть код инициализации VC-MP.

ziggi
07.08.2016, 21:43
Не мог бы ввести в курс дела, откуда эти исходники взялись? Куй сам выкладывал их или это результат очередной утечки? Если последнее, то откуда там лицензия GPL?

Да, Kye сам выложил исходники VC-MP под лицензией GPL после выхода SA-MP (или до выхода, не знаю).

newbie01
08.08.2016, 23:03
Куй не дурак хотя-бы потому что смог написать и монетизировать мультиплеер для GTA, при этом не столкнувшись с Take2 и Rockstar.

Этого не случилось только потому что для этих игр под которые были писаны мультиплееры, отсутствовал стандартный мультиплеер. Например если сделать что-то подобное для GTA 4 и GTA 5 тебя быстро прикроют.

ziggi
09.08.2016, 02:20
Этого не случилось только потому что для этих игр под которые были писаны мультиплееры, отсутствовал стандартный мультиплеер. Например если сделать что-то подобное для GTA 4 и GTA 5 тебя быстро прикроют.

У любительских мультиплееров для GTA 4 проблем с Rockstar не было и не могло быть - мультиплеер GTA 4 от Rockstar не приносил им никакой прибыли и был, скорее всего, внедрён в основном для обкатки сетевого кода для будущей GTA Online. А претензии к любительским мультиплеерам для GTA 5 не удивительны - они лишают Rockstar прибыли.

vovandolg
09.08.2016, 14:37
Куй не дурак хотя-бы потому что смог написать и монетизировать мультиплеер для GTA, при этом не столкнувшись с Take2 и Rockstar.

А по новостям слышал что то вроде что Rockstar подали в суд на создателя мультиплеера к их синглу SA,
ну это было в течении этого полугода, поэтому точно не помню когда слышал и где, было ли такое с Куем(или с кем то)?
Всё таки ж мировые новости и врать не должны..:dntknw:

Daniel_Cortez
09.08.2016, 14:53
А по новостям слышал что то вроде что Rockstar подали в суд на создателя мультиплеера к их синглу SA,
ну это было в течении этого полугода, поэтому точно не помню когда слышал и где, было ли такое с Куем(или с кем то)?
Всё таки ж мировые новости и врать не должны..:dntknw:
Пруфлинк или не было.

ziggi
09.08.2016, 15:24
А по новостям слышал что то вроде что Rockstar подали в суд на создателя мультиплеера к их синглу SA,
ну это было в течении этого полугода, поэтому точно не помню когда слышал и где, было ли такое с Куем(или с кем то)?
Всё таки ж мировые новости и врать не должны..:dntknw:

Если это и было то, скорее всего, это не правда, а у SA-MP есть устное разрешение от Rockstar.

ziggi
24.08.2016, 15:28
В общем, чем сидеть и гадать, я решил спросить напрямую у одного из разработчиков Open SA-MP:

Я спросил:

Hi, excuse for troubling, but I have one question: open-samp based on SA-MP 0.3c source codes or on other version?

на что через некоторое время получил ответ:

Hi sorry I was on holidays where I wasn't able to read my mails.

It's not based on any source code of SA-MP, it's completly made thanks to reverse engineering, we wrote the code by ourselves ;)

Но неопровержимые "улики" в коде не дали мне покоя:


Thank you for your answer. But Open SA-MP definitely has the pieces of the original source SAMP:
- Kye comment: https://github.com/Sasuke78200/open-samp/blob/master/Open%20SAMP/amx/amx.h#L21 (in 0.2X we have: Version: $Id: amx.h,v 1.5 2006/03/26 16:56:15 spookie Exp $)
- Kye comment: https://github.com/Sasuke78200/open-samp/blob/master/Open%20SAMP/amx/amx.c#L2096 (0.2X released 20 December 2008)
- SetPlayerAttachedObject (0.3c) declared twice (as in original SA-MP): https://github.com/Sasuke78200/open-samp/blob/master/Open%20SAMP/script/func_amx.cpp#L2980-L2984

I'm just curious, help me :)


На что я получил довольно обнадёживающий ответ:


Hey, it's not impossible we were three working on the project.

I and Yoann were not in possession of the leaked source code whereas the third guy has it for sure, we can't actually check who added this code since Google code is now closed :/

But 100% of my work and Yoann's work is from reversing the server, otherwise we wouldn't bother ourselves making it as a plugin first to get it working :p


В общем, можно попытаться "потискать" других разработчиков, может что путное выйдет.

Daniel_Cortez
24.08.2016, 15:56
Т.е. он (кстати, кто этот "он"?) утверждает, что абсолютно весь код, над которым работал он сам и некий Yoann, абсолютно не основывается на коде SA-MP, но у какого-то "третьего разработчика" исходники SA-MP "определённо были"?..

Почему я ничуть не удивлён?

ziggi
24.08.2016, 16:36
Т.е. он (кстати, кто этот "он"?) утверждает, что абсолютно весь код, над которым работал он сам и некий Yoann, абсолютно не основывается на коде SA-MP, но у какого-то "третьего разработчика" исходники SA-MP "определённо были"?..

Почему я ничуть не удивлён?

Я спрашивал у Sasuke78200, этот тот, у кого сейчас лежит этот репозиторий на GitHub. Почты разработчиков взял отсюда: https://code.google.com/archive/p/open-samp/source/default/commits
Кстати, нашёл ещё один репозиторий, предположительно совместимый с 0.3z: https://github.com/trisz404/OpenSAMP-WIP

Daniel_Cortez
24.08.2016, 18:35
Кстати, нашёл ещё один репозиторий, предположительно совместимый с 0.3z: https://github.com/trisz404/OpenSAMP-WIP
Видел его раньше. Базируется на Open SA-MP 0.3d, добавлены только 4 функции из 0.3x, внесены изменения в список RPC, убран режим сборки в виде плагина. Остальное - мелкие косметические улучшения.
И да, ещё из main.h зачем-то удалён макрос SAMP_VERSION, теперь вместо него строка "0.3z" захардкожена в 3 разных местах.

CentiuS
08.09.2016, 13:12
Всем привет :)
Так случилось, что я сидел с адамиксом на одном портале, и собственно приобретал у него исходники 0.2.5 и 0.2xU1
Вот мое мнение о Open-SAMP(знаю, что оно никому не интересно, но все же):
У меня был доступ к серверу адамикса, я оттуда извлек много информации. Из моих исследований следует, что некий взломщик был зарутован на SVN серверах kye, и действительно имел доступ до 0.3c-0.3d. Собственно этот взломщик и дал исходный код 0.2xU1 и адамиксу и JeNkStA(разработчик IV:MP), что следует из целой пачки переписок с kye, также он зачем-то выдал их нескольким людям из команды тестеров. У меня же на руках имеется sampnpcrpc.cpp от 0.3а, если кому интересно - могу выдать для ознакомления, но все же я считаю, что Open-SAMP был написан с помощью исходников 0.3 ветки, но не на них, возможно, потому что взломщик не отдавал полностью исходники 0.3 ветки, а только частями(это вполне обьясняет почему у адамикса был только sampnpcrpc.cpp из всех исходников). Также, если хотите могу знающим людям выдать логи переписок из IRC(в том числе личные JeNkStA, адамикса и kye), может сможете извлечь из них какую-то информацию. Итого, исходники были слиты, но полный доступ имел, вероятно, только сам взломщик

- - - Добавлено - - -

Добавлю, что я пытался неоднократно связаться с JeNkStA, но по понятным причинам он просто не захотел на эту тему общаться, да и у него семья, ребенок вроде как есть

- - - Добавлено - - -

Также, JeNkStA сам допиливал 0.2.5 на базе утечек zyronix, написав сервер на основе сервера VC-MP(зачем, не понятно, исходников 0.2xU1 на тот момент, вероятно, не было), но уже с последней версией raknet. Также еще под вопросом, кто был зарутован на SVN, был ли это zyronix или кто-то другой - я не выяснил. Также был еще Chris(или как-то так, тоже из команды IV-MP), утверждал что у него есть исходники 0.3, но когда я захотел у него их выкупить - сказал, что их не нашел. Так что у него либо их не было, либо кто-то до сих пор не хочет, чтобы они были слиты :D Такие дела

TheMallard
08.09.2016, 14:55
Всем привет :)
Так случилось, что я сидел с адамиксом на одном портале, и собственно приобретал у него исходники 0.2.5 и 0.2xU1
Вот мое мнение о Open-SAMP(знаю, что оно никому не интересно, но все же):
У меня был доступ к серверу адамикса, я оттуда извлек много информации. Из моих исследований следует, что некий взломщик был зарутован на SVN серверах kye, и действительно имел доступ до 0.3c-0.3d. Собственно этот взломщик и дал исходный код 0.2xU1 и адамиксу и JeNkStA(разработчик IV:MP), что следует из целой пачки переписок с kye, также он зачем-то выдал их нескольким людям из команды тестеров. У меня же на руках имеется sampnpcrpc.cpp от 0.3а, если кому интересно - могу выдать для ознакомления, но все же я считаю, что Open-SAMP был написан с помощью исходников 0.3 ветки, но не на них, возможно, потому что взломщик не отдавал полностью исходники 0.3 ветки, а только частями(это вполне обьясняет почему у адамикса был только sampnpcrpc.cpp из всех исходников). Также, если хотите могу знающим людям выдать логи переписок из IRC(в том числе личные JeNkStA, адамикса и kye), может сможете извлечь из них какую-то информацию. Итого, исходники были слиты, но полный доступ имел, вероятно, только сам взломщик

- - - Добавлено - - -

Добавлю, что я пытался неоднократно связаться с JeNkStA, но по понятным причинам он просто не захотел на эту тему общаться, да и у него семья, ребенок вроде как есть

- - - Добавлено - - -

Также, JeNkStA сам допиливал 0.2.5 на базе утечек zyronix, написав сервер на основе сервера VC-MP(зачем, не понятно, исходников 0.2xU1 на тот момент, вероятно, не было), но уже с последней версией raknet. Также еще под вопросом, кто был зарутован на SVN, был ли это zyronix или кто-то другой - я не выяснил. Также был еще Chris(или как-то так, тоже из команды IV-MP), утверждал что у него есть исходники 0.3, но когда я захотел у него их выкупить - сказал, что их не нашел. Так что у него либо их не было, либо кто-то до сих пор не хочет, чтобы они были слиты :D Такие дела

А ты опубликуй sampnpcrpc.cpp, будет интересно.

ziggi
08.09.2016, 15:37
Всем привет :)
Так случилось, что я сидел с адамиксом на одном портале, и собственно приобретал у него исходники 0.2.5 и 0.2xU1
Вот мое мнение о Open-SAMP(знаю, что оно никому не интересно, но все же):
У меня был доступ к серверу адамикса, я оттуда извлек много информации. Из моих исследований следует, что некий взломщик был зарутован на SVN серверах kye, и действительно имел доступ до 0.3c-0.3d. Собственно этот взломщик и дал исходный код 0.2xU1 и адамиксу и JeNkStA(разработчик IV:MP), что следует из целой пачки переписок с kye, также он зачем-то выдал их нескольким людям из команды тестеров. У меня же на руках имеется sampnpcrpc.cpp от 0.3а, если кому интересно - могу выдать для ознакомления, но все же я считаю, что Open-SAMP был написан с помощью исходников 0.3 ветки, но не на них, возможно, потому что взломщик не отдавал полностью исходники 0.3 ветки, а только частями(это вполне обьясняет почему у адамикса был только sampnpcrpc.cpp из всех исходников). Также, если хотите могу знающим людям выдать логи переписок из IRC(в том числе личные JeNkStA, адамикса и kye), может сможете извлечь из них какую-то информацию. Итого, исходники были слиты, но полный доступ имел, вероятно, только сам взломщик

- - - Добавлено - - -

Добавлю, что я пытался неоднократно связаться с JeNkStA, но по понятным причинам он просто не захотел на эту тему общаться, да и у него семья, ребенок вроде как есть

- - - Добавлено - - -

Также, JeNkStA сам допиливал 0.2.5 на базе утечек zyronix, написав сервер на основе сервера VC-MP(зачем, не понятно, исходников 0.2xU1 на тот момент, вероятно, не было), но уже с последней версией raknet. Также еще под вопросом, кто был зарутован на SVN, был ли это zyronix или кто-то другой - я не выяснил. Также был еще Chris(или как-то так, тоже из команды IV-MP), утверждал что у него есть исходники 0.3, но когда я захотел у него их выкупить - сказал, что их не нашел. Так что у него либо их не было, либо кто-то до сих пор не хочет, чтобы они были слиты :D Такие дела

Спасибо, теперь всё встало на свои места.

Daniel_Cortez
03.01.2017, 17:49
Уточнил некоторые факты в 1-м посте.
Например, уязвимость, связанная с CALL.pri и JUMP.pri, была исправлена в Pawn 3.3, а не 4.0.
Также заменил фразу "переход на непроверенный байт-код" на "переход на специально подготовленный байт-код" - в Pawn 3.2 и ранее байт-код при загрузке не проверялся вообще (проверка была добавлена только в ревизии 3875).

CentiuS
16.06.2017, 14:38
https://vk.com/wall-118492317_1668

Adamix R.I.P. ...