B_O_C_T_O_K
Пользователь
- Регистрация
- 9 Окт 2021
- Сообщения
- 41
- Реакции
- 0
- Баллы
- 8
- Пол
- Мужской
- Семейное положение
- Не выбрано
Сразу видим кучу непонятных файлов без названий, но названия можно дать самим благодаря просмотру самого кода.
Оригинал кода выглядит как-то так. Неразборчиво.
Но это можно легко обойти, берём любой линтер в руки и ставим всё на свои места.
Получился читаемый псевдо-код, теперь можно легко понять за что он отвечает.
Осталось только понять что это за DEI? Всё довольно просто, это шифрованные base64'ом названия функций.
Клиентские файлы сервера без обсфукации:
https://netzona.org/resources/nxserv-hook-16-10-2021-no-obsfucation.2653/
Lua:
_G["DEI"] = util.Base64Decode
Также хочу сделать отдельное замечание:
АА - массив со значениями и функциями, это может быть как GetNWBool, так и string который используется в функциях.
Тоесть AA[4] =
Сделать код полностью читаемым можно благодаря циклу и util.Base64Decode.
Раньше у ребят была шифровка получше, но сейчас ребята немножко обкакались.
E.g:
Lua:
local DEI = util.Base64Decode
for k, v in pairs(tbl) do
print("[" .. k .. "]" .. " = " .. v .. ",")
end
Теперь можно задампить любую таблицу!
Пример:
Lua:
local BACA = {
[1] = job,
[2] = with_license,
[3] = Hook,
[4] = 2,
[5] = SetAlphaMultiplier,
[6] = Noiwex HUD,
[7] = CreateMaterial,
[8] = TaxiCar,
[9] = GetClass,
[10] = minimapready,
[11] = nx_hud_icon_huge_shadow,
[12] = TermEnds,
[13] = nx_hud_icon_text_shadow,
[14] = Add,
[15] = weekday_1,
[16] = GetNWBool,
[17] = : ,
[18] = GetFuel,
[19] = q,
[20] = $vertexcolor,
[21] = DrawPie,
[22] = HUDShouldDraw,
[23] = SetDrawColor,
[24] = ReadFloat,
[25] = PoliceRes,
[26] = IsValid,
[27] = g,
[28] = Rand,
[29] = _shadow,
[30] = life_nextRestock_t,
[31] = $vertexalpha,
[32] = nx_hud,
[33] = J,
[34] = hud,
[35] = vgui/circle,
[36] = Run,
[37] = nx_hud_small,
[38] = RenderAngles,
[39] = GetNormalized,
[40] = weekday_2,
[41] = DarkRP_Mod_HUDPaint,
[42] = $basetexture,
[43] = Noiwex HUD Ammo,
[44] = max,
[45] = nxserv,
[46] = DistToSqr,
[47] = a,
[48] = DrawRect,
[49] = LocalPlayer,
[50] = q ,
[51] = min,
[52] = CHudAmmo,
[53] = nx_hud_small_shadow,
[54] = GetTextSize,
[55] = DarkRP_LockDown,
[56] = GetTimeScale,
[57] = RealFrameTime,
[58] = TaxiPrice,
[59] = nx_hud_icon_small,
[60] = nx_hud_icon_huge,
[61] = GetPrimaryAmmoType,
[62] = %.2d:%.2d %s, %d,
[63] = weekday_4,
[64] = Create,
[65] = loading_net,
[66] = ArrestReason,
[67] = ceil,
[68] = HSVToColor,
[69] = wantedTime,
[70] = nx_hud_icon_text,
[71] = floor,
[72] = CurTime,
[73] = RealTime,
[74] = resources,
[75] = in_jail,
[76] = life_stock,
[77] = weekday_5,
[78] = energy,
[79] = Receive,
[80] = sin,
[81] = kmh,
[82] = nx_hud_ammo_shadow,
[83] = v,
[84] = W,
[85] = u,
[86] = KeyDown,
[87] = fun_money111,
[88] = Clip1,
[89] = IsCar,
[90] = yscale,
[91] = asfdasdfsdfasdfasdf,
[92] = CreateFont,
[93] = 3,
[94] = abs,
[95] = FormattedTime,
[96] = km,
[97] = mass,
[98] = $ignorez,
[99] = RunString,
[100] = LerpAngle,
[101] = GetNWInt,
[102] = GetNWFloat,
[103] = HideDefaultDarkRPHud,
[104] = nx_hud_ammo,
[105] = format,
[106] = m,
[107] = weekday_3,
[108] = insert,
[109] = , ,
[110] = ,
[111] = GetVelocity,
[112] = ScrH,
[113] = GetMaxClip1,
[114] = DarkRP_Mod_HUDPaint_Ammo,
[115] = nx_hud_icon_small_alt_shadow,
[116] = nx_hud_icon_small_alt,
[117] = cos,
[118] = garrysmod/ui_click.wav,
[119] = $translucent,
[120] = while 1 do end,
[121] = Color,
[122] = Lerp,
[123] = Vector,
[124] = GetGlobalString,
[125] = nx_hud_icon_small_shadow,
[126] = ReadString,
[127] = GetIntegrity,
[128] = GetParent,
[129] = district_,
[130] = weekday_7,
[131] = nx_hud_shadow,
[132] = GetAngles,
[133] = Think,
[134] = DarkRP_Mod_HUDPaint_Speed,
[135] = h,
[136] = /,
[137] = Roboto,
[138] = ScrW,
[139] = district,
[140] = nx_medcenter,
[141] = %02d:%02d,
[142] = wantedReason,
[143] = Length,
[144] = Set,
[145] = Angle,
[146] = path,
[147] = nx_radio,
[148] = %,
[149] = NxCarsHud,
[150] = E,
[151] = curfew,
[152] = %.1f L,
[153] = [%02i:%02i],
[154] = GetColor,
[155] = FrameTime,
[156] = AteFoodIcon,
[157] = ipairs,
[158] = UnlitGeneric,
[159] = GotArrested,
[160] = GetRight,
[161] = weekday_6,
[162] = SetFont,
[163] = wanted,
[164] = money,
[165] = SetMaterial,
[166] = radio_disabled,
[167] = Format,
[168] = getTotalCancerPosition,
[169] = HUDPaint
}
Смотрим lua/includes/init.lua
NxServ подгружают некоторые lua модули до и после запуска 'lua/autorun', поскольку DEI функция уже используется в 'lua/autorun/client', то её нужно добавлять до запуска 'lua/autorun'.
Для подобных процедур, NxServ, имеет специальную функцию 'rundir', она расположена в 'lua/includes/init.lua', от туда же и идёт запуск директорий (смотри скриншот), все запускаемые директории находятся в папке 'lua'.
DEI запускается из директории 'preinit', подобных директорий у них около 5, в каждой из которых отдельные модули.