Софт Спрашиваем у OpenAI Chatbot-а как создавать читы

Пользователь
Статус
Оффлайн
Регистрация
17 Ноя 2021
Сообщения
252
Реакции[?]
35
Поинты[?]
3K
у гайда 2 требования -
1. акк норда
2. 30 рублей на киви чтобы закинуть их на онлайнсим

1-ое что нам понадобится - впн любой страны которая имеет OpenAI в списке принимаемых сайтов(в моем случаи - onlinesim.ru)
1670929922832.png
2-ое что нам понадовится - впн, я юзаю норд

после того как вы подключились к впну заходите сюда ->
Пожалуйста, авторизуйтесь для просмотра ссылки.
и тыкайте "Sign up"
после этого регаемся в сервисе и заходим cюда -> chat.openai.com/chat
и начинаем спрашивать


LiveOverflow уже сделал на эту тему видос ->
 
Searching for myself
Пользователь
Статус
Оффлайн
Регистрация
29 Сен 2021
Сообщения
212
Реакции[?]
69
Поинты[?]
11K
/del
 
Последнее редактирование:
ev0lved!
Пользователь
Статус
Оффлайн
Регистрация
16 Фев 2019
Сообщения
467
Реакции[?]
148
Поинты[?]
0
Баля, пойду просить нейронку крякнуть скит:seemsgood:


Upd. Чего блять?
1670964515547.png
 
кто читает тот умрет
Участник
Статус
Оффлайн
Регистрация
29 Июл 2019
Сообщения
696
Реакции[?]
540
Поинты[?]
153K
Да хуйня на самом деле, сидит базовые штуки высирает, слишком долго дрочить её на сложные вещи ибо их даже и нету в паблике
 
ЧВК EB_LAN
Забаненный
Статус
Оффлайн
Регистрация
12 Янв 2019
Сообщения
838
Реакции[?]
298
Поинты[?]
17K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Да хуйня на самом деле, сидит базовые штуки высирает, слишком долго дрочить её на сложные вещи ибо их даже и нету в паблике
Собирался об этом написать ещё часа 2 назад, но забыл
 
кто читает тот умрет
Участник
Статус
Оффлайн
Регистрация
29 Июл 2019
Сообщения
696
Реакции[?]
540
Поинты[?]
153K
Собирался об этом написать ещё часа 2 назад, но забыл
Да мне тоже лень было зябликам это разжевывать, но не могу смотреть на их довольные соевые зумерские лица которые нафантазировали себе как щас будут гипер читы делать
 
ev0lved!
Пользователь
Статус
Оффлайн
Регистрация
16 Фев 2019
Сообщения
467
Реакции[?]
148
Поинты[?]
0
Да мне тоже лень было зябликам это разжевывать, но не могу смотреть на их довольные соевые зумерские лица которые нафантазировали себе как щас будут гипер читы делать
Камон, тут в основном рофлят просто с этого. Думаю все (ну или почти) понимают, что хер чё годного она высрет
 
кто читает тот умрет
Участник
Статус
Оффлайн
Регистрация
29 Июл 2019
Сообщения
696
Реакции[?]
540
Поинты[?]
153K
Камон, тут в основном рофлят просто с этого. Думаю все (ну или почти) понимают, что хер чё годного она высрет
На юц зайди там автору жопу вылизали за этот тред
 
кто читает тот умрет
Участник
Статус
Оффлайн
Регистрация
29 Июл 2019
Сообщения
696
Реакции[?]
540
Поинты[?]
153K
люди создали нейросеть, которая гуглит вместо них... АХУЕТЬ
@ учишься пол жизни на программиста чтобы работать за 300к / наносек
@ через жуткую мозгоеблю и анальные унижения на всяких форумах по типу югей.биз приходишь к тому что уже можешь работать в компании
@ муторные долгие собеседования на разные должности выебали мозги ещё больше
@ начинаешь работать в средней фирме, ведь в твоем мухосранске нету яндексов и обещанных 300к/наносек
@ за 60тысяч вкалываешь походу попутно грузчиком ибо почему-то для начальника ашота только ты можешь разгрузить фургон новых принтеров, тыж программист
@ но все вроде наладилось, принтеров не завозят, бабы сраки на работе перестали приносить разьебанные motorolla 2009 года на починку и утюги которые пережили российскую империю

* индус делает парсер по GITHUB/SEARCH и называет это нейронной сетью*
* в интернете кошмар, каждый блогер записывает видео о том как это ахуенно работает причмокивая своими ламерскими познаниями*

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

@ ПРИНТЕРЫ ПРИВЕЗЛИ, ИДИ РАЗРГРУЖАЙ
 
Начинающий
Статус
Оффлайн
Регистрация
10 Апр 2020
Сообщения
53
Реакции[?]
11
Поинты[?]
0
@ учишься пол жизни на программиста чтобы работать за 300к / наносек
@ через жуткую мозгоеблю и анальные унижения на всяких форумах по типу югей.биз приходишь к тому что уже можешь работать в компании
@ муторные долгие собеседования на разные должности выебали мозги ещё больше
@ начинаешь работать в средней фирме, ведь в твоем мухосранске нету яндексов и обещанных 300к/наносек
@ за 60тысяч вкалываешь походу попутно грузчиком ибо почему-то для начальника ашота только ты можешь разгрузить фургон новых принтеров, тыж программист
@ но все вроде наладилось, принтеров не завозят, бабы сраки на работе перестали приносить разьебанные motorolla 2009 года на починку и утюги которые пережили российскую империю

* индус делает парсер по GITHUB/SEARCH и называет это нейронной сетью*
* в интернете кошмар, каждый блогер записывает видео о том как это ахуенно работает причмокивая своими ламерскими познаниями*

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

@ ПРИНТЕРЫ ПРИВЕЗЛИ, ИДИ РАЗРГРУЖАЙ
До слёз
 
Разработчик
Статус
Оффлайн
Регистрация
1 Сен 2018
Сообщения
1,598
Реакции[?]
880
Поинты[?]
114K
Да хуйня на самом деле, сидит базовые штуки высирает, слишком долго дрочить её на сложные вещи ибо их даже и нету в паблике
Не сказал бы, хотя особо чего-то сверхвыдающегося она не выдаёт, но базовые вещи, обьяснение ассемблер листингов, генерация шифрования адрессов на основе шифра Вернама с поддержкой SIMD может, также как и дореверсить за тебя простую функцию.
В общей силе я потратил около 20-30 часов, чтобы разобраться во всех возможностя этого ИИ еще до того как она хайпанула ( использовал не новую chat gpt, а старую davinci )

Исследование #1
Реверс инженеринг.
Она умеет обрабатывать как простой асм листинг, и упрощать его, и деобфусцировать так и полный псевдо-код с иды. Тажке способна полностью переменовывать все вары в псевдо-коде, подставляя правильные названия функций. Умеет полностью эмулировать разного вида инструкции включая SIMD.
Привожу пару простых примеров:
C++:
// Save the current tick count
GlobalData::TickCount = *(g_pGlobalVars + 0x1C);

// Call virtual function
CallVFunction();

// Get pointer for the local client
auto localClientPtr = VFunc_2(entityList)();

// Check if player is alive
if (localClientPtr && C_CSPlayer::IsAlive(localClientPtr)) {
    // Set flag to 1
    g_bSomething = 1;

    // If a double tap exploit is going on
    if (*g_ExploitData->DoubleTapFlag) {
        g_ExploitData->TickCountDifference = *(g_ClientState + 0x4D28) + *(g_ClientState + 0x4D24) + 1;
        g_Networking->NetworkTick++;
    }

    // Move a certain number of times based on the tickbase difference
    int timesToMove = GlobalData::LastTickbaseDifference - *(g_ClientState + 0x4D28) - 4;
    while (timesToMove > 0) {
        g_ExploitData->WasMoving = 1;
        o_CL_Move(frameTime, isFinalTick);
        timesToMove -= 1;
    }
    g_ExploitData->WasMoving = 0;
    g_ExploitData->HasMoved = 1;
C++:
void RegisterActionJoinParty()
{
v8::Isolate* isolate;
v8::Isolate* isolatePtr;
  int scopePtr; eax
  int funcTemplatePtr; //
eax
  _DWORD* funcPtr; eax
  int strPtr; eax
  _DWORD* templatePtr; eax
int nameFuncPtr; eax
  int arg0; [esp-4h] [ebp-2Ch]
  char
scopeBuffer[12]; [esp+8h] [ebp-20h] BYREF
  char strBuffer[4]; [esp+14h]
[ebp-14h] BYREF
  char tempBuffer[4]; [esp+18h] [ebp-10h] BYREF
  int
contextPtr; [esp+1Ch] [ebp-Ch] BYREF
  int globalObjectPtr; [esp+20h]
[ebp-8h] BYREF
  char arg1; [esp+27h] [ebp-1h] BYREF

  isolate =
(v8::Isolate*)(*(int (__thiscall **)(int))(*(_DWORD *)g_pUIEngine +
516))(g_pUIEngine);
  v8::Isolate::Enter(isolate);
  isolatePtr = (struct
v8::Isolate*)(*(int (__thiscall **)(int))(*(_DWORD *)g_pUIEngine +
516))(g_pUIEngine);
v8::HandleScope::HandleScope((v8::HandleScope*)scopeBuffer, isolatePtr);
(*(void (__thiscall **)(int, int*))(*(_DWORD *)g_pUIEngine + 500))(g_pUIEngine,
&contextPtr);
  (*(void (__thiscall **)(int, int*))(*(_DWORD *)g_pUIEngine +
504))(g_pUIEngine, &globalObjectPtr);
  scopePtr = (*(int (__thiscall
**)(int))(*(_DWORD *)g_pUIEngine + 516))(g_pUIEngine);
  funcTemplatePtr =
(*(int (__thiscall **)(int, int, int, _DWORD, int, int, _DWORD))(*(_DWORD
*)g_pUIEngine + 516))(
         g_pUIEngine,
         scopePtr + 72,
globalObjectPtr,
         0,
         1,
         scopePtr + 72,
         0);
funcPtr = (_DWORD*)v8::FunctionTemplate::New(tempBuffer, funcTemplatePtr,
sub_10651C20);
  strPtr = (*(int (__thiscall **)(int, _DWORD, int))(*(_DWORD
*)g_pUIEngine + 516))(g_pUIEngine, *funcPtr, arg0);
  templatePtr =
(_DWORD*)v8::String::NewFromUtf8(strBuffer, strPtr, "ActionJoinParty", 0, -1);
v8::Template::Set(contextPtr, *templatePtr);
  nameFuncPtr = (*(int (__thiscall
**)(int, const char*, int, _DWORD, int))(*(_DWORD *)g_pUIEngine + 660))(
g_pUIEngine,
         "ActionJoinParty",
         1,
         0,
         2);
arg1 = 16;
  (*(void (__thiscall **)(int, int, int, char *, _DWORD))(*(_DWORD
*)g_pUIEngine + 664))(g_pUIEngine, nameFuncPtr, 1, &arg1, 0);
v8::HandleScope::~HandleScope((v8::HandleScope*)scopeBuffer);
v8::Isolate::Exit(isolate);
}
C++:
This function initializes a video decoder.

char __thiscall
InitVideoDecoder(DecoderHandle *handle, AVFormatContext *input_ctx,
int best_media_stream, char do_stream_info_search)
{
  DiagnosticsState
*diagnostics; // edi
  DecodeContext *context; // eax
  AVFormatContext
*format_ctx; // eax
  int audio_stream; // eax
  AVCodec *decoder; // ecx
unsigned int scale1; // ecx
  unsigned int scale2; // eax
  int video_stream; //
[esp+4h] [ebp-8h] BYREF
  char success; // [esp+8h] [ebp-4h]
  int
audio_best_stream; // [esp+14h] [ebp+8h]
  int video_best_stream; // [esp+1Ch]
[ebp+10h]

  if ( dword_102FDAB8 )
  {
    diagnostics = StartDiagnostics();
success = TriggerDiagnostics("CVideoDecoderLibav::BInit", 0, 5, 0, 4,
&diagnostics );
  }
  else
  {
    diagnostics = 0;
    success = 0;
  }
context = *(DecodeContext**)(handle + 8);
  if ( context )
    goto label_10;
context = AllocateDecodeContext(input_ctx);
  if (context)
  {
*(DecodeContext**)(handle + 12) = context; // Store context
    format_ctx =
AllocateFormatContext(context);
    *handle = format_ctx; // Store format
context
  }
  else
  {
    context = 0;
  }

  if (avformat_open_input() < 0)
{
    ReportError("Video player: Could not open video input\n");
label_10:
success = 0;
    goto label_11;
  }

  if (do_stream_info_search &&
avformat_find_stream_info(format_ctx, 0) < 0)
    goto label_10;

  //Find the
best audio and video stream
  audio_best_stream =
av_find_best_stream(format_ctx, 0, -1, -1, 0, 0);
  audio_stream =
av_find_best_stream(format_ctx, 1, -1, audio_best_stream, 0, 0);
video_best_stream = audio_stream;
  if (audio_best_stream < 0)
  {
    if
(video_best_stream < 0)
      goto label_10;

    goto label_25;
  }

  // Open
the audio decoder
  audio_stream = *(int*)(*(int*)(*(int*)(format_ctx + 28) + 4
* audio_best_stream) + 8);
  decoder = avcodec_find_decoder(*(int*)(audio_stream
+ 48));
  if (!decoder || avcodec_open2(audio_stream, decoder, 0) < 0)
    goto
label_10;
  *(int*)(handle + 84) = audio_best_stream;

  // Open the video
decoder
  goto label_28;

label_25:
  video_stream =
*(int*)(*(int*)(*(int*)(format_ctx + 28) + 4 * video_best_stream) + 8);
decoder = avcodec_find_decoder(*(int*)(video_stream + 48));
  if (!decoder)
  {
ReportError("Video player: Codec not supported\n");
    goto label_10;
  }
*(int*)(video_stream + 808) = 2;
  if (avcodec_open2(video_stream, decoder, 0) <
0)
  {
    ReportError("Video player: Could not open decoder\n");
    goto
label_10;
  }
  *(int*)(handle + 80) = video_best_stream;
  if (audio_stream >=
0)
    goto label_25;

label_28:
  // Initialize the decoder
  if
(!InitDecoder(handle))
    goto label_10;

  // Set the time scale
  scale1 =
*(unsigned int*)(format_ctx + 1064);
  scale2 = *(unsigned int*)(format_ctx +
1068);
  if (__SPAIR64__(scale2, scale1) > 0 && (scale1 || scale2 !=
0x80000000))
    *(__int64*)(handle + 64) = av_rescale_q(scale1, scale2, 1,
1000000, 1, 1000000);
  success = 1;

label_11:
  if (diagnostics && success)
EndDiagnostics();
  return success;
}

Еще он способен вполне нормально анализировать VTIL код, и даже переводить его в псевдо-код ( Примера не будет, я его потерял )

Исследование #2
Защита приложений.
Из-за объема данных на которых была обучена эта модель она обладает знаниями о устройстве разных аспектов защиты, а также может написать базовые примеры кода.
C++:
#include <iostream>
#include <string>

using namespace std;

string encryptDecrypt(string toEncrypt) {
    char key = 'K'; // Any char will work
    string output = toEncrypt;

    for (int i = 0; i < toEncrypt.size(); i++)
        output[i] = toEncrypt[i] ^ key;

    return output;
}

int main() {
    string input = "This is a sample text";
    string encrypted = encryptDecrypt(input);
    cout << "Encrypted Text = " << encrypted << endl;

    string decrypted = encryptDecrypt(encrypted);
    cout << "Decrypted Text = " << decrypted << endl;

    return 0;
}
C++:
#include <iostream>
#include <string>
#include <smmintrin.h>
#include <immintrin.h>

using namespace std;

string encryptDecrypt(string toEncrypt) {
    char key[16] = {'K', 'e', 'y', '0', 'K', 'e', 'y', '1',
                    'K', 'e', 'y', '2', 'K', 'e', 'y', '3'};

    // Load the key into an SSE register
    __m128i reg_key = _mm_loadu_si128((__m128i*)&key);

    int input_size = (int)toEncrypt.size();
    int num_iters = (input_size + 15) / 16;

    string output = toEncrypt;
    for (int i = 0; i < num_iters; i++) {
        // Load the next 16 bytes of input
        __m128i reg_input = _mm_loadu_si128((__m128i*)&output[i * 16]);

        // Do XOR with the key
        __m128i reg_output = _mm_xor_si128(reg_input, reg_key);

        // Store the result
        _mm_storeu_si128((__m128i*)&output[i * 16], reg_output);
    }

    return output;
}

int main() {
    string input = "This is a sample text";
    string encrypted = encryptDecrypt(input);
    cout << "Encrypted Text = " << encrypted << endl;

    string decrypted = encryptDecrypt(encrypted);
    cout << "Decrypted Text = " << decrypted << endl;

    return 0;
}

Исследование #3
Геймхакинг.
Она вполне может реализовать вам Legitbot с разными ништяками
C++:
#include "SDK.h"

void Aimbot()
{
  C_BasePlayer* localplayer = (C_BasePlayer*)g_EntityList->GetClientEntity(g_EngineClient->GetLocalPlayer());
  if (!localplayer)
    return;

  if (!localplayer->IsAlive())
    return;

  C_BaseCombatWeapon* activeWeapon = (C_BaseCombatWeapon*)g_EntityList->GetClientEntityFromHandle(localplayer->m_hActiveWeapon());
  if (!activeWeapon)
    return;

  if (activeWeapon->m_iItemDefinitionIndex() == WEAPON_C4)
    return;

  if (activeWeapon->IsKnife()  activeWeapon->IsGrenade())
    return;

  Vector viewAngles;
  g_EngineClient->GetViewAngles(viewAngles);

  Vector aimAngles;
  Vector aimPoint;
  Vector src = localplayer->GetEyePos();
  float bestFov = g_Options.aimbot_fov;
  C_BasePlayer* target = nullptr;

  for (int i = 1; i <= g_GlobalVars->maxClients; i++)
  {
    C_BasePlayer* entity = (C_BasePlayer*)g_EntityList->GetClientEntity(i);

    if (!entity  entity == localplayer  entity->IsDormant()  !entity->IsAlive())
      continue;

    if (entity->m_iTeamNum() == localplayer->m_iTeamNum())
      continue;

    if (g_Options.aimbot_friendly)
      if (entity->m_iTeamNum() != localplayer->m_iTeamNum())
        continue;

    // Recoil Control
    Vector recoilReduction = localplayer->m_aimPunchAngle() * 2.f;
    Vector aimAnglesRecoil = Math::CalcAngle(src, entity->GetHitboxPos(g_Options.aimbot_hitbox)) - recoilReduction;

    // Random Aim Offsets
    Vector randomOffset = Vector(Math::RandomFloat(-g_Options.aimbot_random_offset, g_Options.aimbot_random_offset), Math::RandomFloat(-g_Options.aimbot_random_offset, g_Options.aimbot_random_offset), 0.f);
    aimAnglesRecoil += randomOffset;

    // Target Selection
    float fov = Math::GetFov(viewAngles, aimAnglesRecoil);
    if (fov < bestFov)
    {
      bestFov = fov;
      aimPoint = entity->GetHitboxPos(g_Options.aimbot_hitbox);
      aimAngles = aimAnglesRecoil;
      target = entity;
    }
  }

  // Prediction
  Vector velocity = localplayer->m_vecVelocity();
  float speed = velocity.Length2D();
  float estimatedTime = 0.f;
  if (speed > 0.f)
    estimatedTime = g_GlobalVars->interval_per_tick * (aimPoint - src).Length() / speed;

  aimPoint += velocity * estimatedTime;

  // Target Locking
  if (target && g_Options.aimbot_lock)
    aimPoint = target->GetHitboxPos(g_Options.aimbot_hitbox);

  if (bestFov < g_Options.aimbot_fov)
  {
    // Random Aim Angles
    Vector randomAngles = Vector(Math::RandomFloat(-g_Options.aimbot_random_angle, g_Options.aimbot_random_angle), Math::RandomFloat(-g_Options.aimbot_random_angle, g_Options.aimbot_random_angle), 0.f);
    aimAngles += randomAngles;

    Math::ClampAngles(aimAngles);
    Math::SmoothAngles(viewAngles, aimAngles, g_Options.aimbot_smooth);
    g_EngineClient->SetViewAngles(viewAngles);

    // Random Aim Speed
    float randomSpeed = Math::RandomFloat(g_Options.aimbot_min_speed, g_Options.aimbot_max_speed);
    g_InputSystem->m_fButtonPressed = true;
    g_InputSystem->m_fButtonValue = randomSpeed;

    // Auto-Fire
    if (g_Options.aimbot_autofire && activeWeapon->CanFire())
      g_InputSystem->m_fButtonPressed = true;

    // Auto-Scope
    if (g_Options.aimbot_autoscope && activeWeapon->m_zoomLevel() == 0 && activeWeapon->CanZoom())
      g_InputSystem->m_fButtonPressed = true;
  }
}
Также она может реализовать простые вещи по типу экстернал глоу и т.д, но это не стоит добавления примера кода сюда.

Исследование #4
Работа с кодом, его обьяснение и поиск багов.
Давинчи вполне способен объяснять код, и показывать на его недостатки.
Так-же он способен исправлять ошибки в коде, если ему показать их из компилятора.

Исследование #5
Объяснение математики, и других точных наук.
Тут особо нету о чём говорить, но в моих условиях:
1) Он смог объяснить часть программы вышмата второго курса, а также решить лабу.
2) Способен писать математические формулы за вас, а также обьяснять их работу.
3) Может реализовывать математику в коде, а также знаком с
Пожалуйста, авторизуйтесь для просмотра ссылки.



Исследование #6
Аналитика данных.
ИИ готов создать формулу на основе предоставляемых параметров, а также продемонстировать её работу на реальных данных.
For NAVI:
Match 1 -
s1mple: R = 16, M = 6, K = 1.5; Level of Play = (16*0.01) + (6*0.075) + (1.5*0.825) = 0.54
electronic: R = 17, M = 7, K = 1.2; Level of Play = (17*0.01) + (7*0.075) + (1.2*0.825) = 0.55
flamie: R = 15, M = 8, K = 1.1; Level of Play = (15*0.01) + (8*0.075) + (1.1*0.825) = 0.53
Boombl4: R = 13, M = 5, K = 1.3; Level of Play = (13*0.01) + (5*0.075) + (1.3*0.825) = 0.48
Edward: R = 13, M = 4, K = 0.8; Level of Play = (13*0.01) + (4*0.075) + (0.8*0.825) = 0.41
Match Link:
Пожалуйста, авторизуйтесь для просмотра ссылки.


Match 2 -
s1mple: R = 14, M = 8, K = 1.2; Level of Play = (14*0.01) + (8*0.075) + (1.2*0.825) = 0.56
electronic: R = 16, M = 9, K = 1.7; Level of Play = (16*0.01) + (9*0.075) + (1.7*0.825) = 0.63
flamie: R = 10, M = 7, K = 1; Level of Play = (10*0.01) + (7*0.075) + (1*0.825) = 0.52
Boombl4: R = 11, M = 6, K = 1.5; Level of Play = (11*0.01) + (6*0.075) + (1.5*0.825) = 0.53
Edward: R = 10, M = 5, K = 0.9; Level of Play = (10*0.01) + (5*0.075) + (0.9*0.825) = 0.45
Match Link:
Пожалуйста, авторизуйтесь для просмотра ссылки.


Match 3 -
s1mple: R = 12, M = 7, K = 1.3; Level of Play = (12*0.01) + (7*0.075) + (1.3*0.825) = 0.55
electronic: R = 11, M = 10, K = 1.8; Level of Play = (11*0.01) + (10*0.075) + (1.8*0.825) = 0.70
flamie: R = 15, M = 5, K = 0.9; Level of Play = (15*0.01) + (5*0.075) + (0.9*0.825) = 0.46
Boombl4: R = 12, M = 8, K = 1.4; Level of Play = (12*0.01) + (8*0.075) + (1.4*0.825) = 0.56
Edward: R = 17, M = 6, K = 1; Level of Play = (17*0.01) + (6*0.075) + (1*0.825) = 0.54
Match Link:
Пожалуйста, авторизуйтесь для просмотра ссылки.

Human: Where is vitus pro?
AI: Examining 3 matches between Natus Vincere (NAVI) and Virtus Pro, we can calculate the level of play for each player using the formula:
Level of Play = (R * 0.01) + (M * 0.075) + (K * 0.825).

For Virtus Pro:
Match 1 -
snatchie: R = 13, M = 9, K = 1.1; Level of Play = (13*0.01) + (9*0.075) + (1.1*0.825) = 0.60
byali: R = 18, M = 6, K = 1.4; Level of Play = (18*0.01) + (6*0.075) + (1.4*0.825) = 0.55
MICHU: R = 11, M = 7, K = 1.3; Level of Play = (11*0.01) + (7*0.075) + (1.3*0.825) = 0.52
Snax: R = 14, M = 5, K = 0.9; Level of Play = (14*0.01) + (5*0.075) + (0.9*0.825) = 0.44
morelz: R = 16, M = 4, K = 0.8; Level of Play = (16*0.01) + (4*0.075) + (0.8*0.825) = 0.40
Match Link:
Пожалуйста, авторизуйтесь для просмотра ссылки.


Match 2 -
snatchie: R = 14, M = 8, K = 1.4; Level of Play = (14*0.01) + (8*0.075) + (1.4*0.825) = 0.63
byali: R = 18, M = 7, K = 1.8; Level of Play = (18*0.01) + (7*0.075) + (1.8*0.825) = 0.66
MICHU: R = 10, M = 10, K = 1.1; Level of Play = (10*0.01) + (10*0.075) + (1.1*0.825) = 0.60
Snax: R = 14, M = 6, K = 1.2; Level of Play = (14*0.01) + (6*0.075) + (1.2*0.825) = 0.56
morelz: R = 11, M = 6, K = 0.9; Level of Play = (11*0.01) + (6*0.075) + (0.9*0.825) = 0.49
Match Link:
Пожалуйста, авторизуйтесь для просмотра ссылки.


Match 3 -
snatchie: R = 12, M = 6, K = 1.2; Level of Play = (12*0.01) + (6*0.075) + (1.2*0.825) = 0.53
byali: R = 13, M = 9, K = 1.7; Level of Play = (13*0.01) + (9*0.075) + (1.7*0.825) = 0.64
MICHU: R = 16, M = 5, K = 0.8; Level of Play = (16*0.01) + (5*0.075) + (0.8*0.825) = 0.45
Snax: R = 13, M = 8, K = 1.3; Level of Play = (13*0.01) + (8*0.075) + (1.3*0.825) = 0.56
morelz: R = 15, M = 5, K = 1; Level of Play = (15*0.01) + (5*0.075) + (1*0.825) = 0.51
Match Link:
Пожалуйста, авторизуйтесь для просмотра ссылки.

Ещё была создана модифицированная версия Давинчи обученная по разделу "Создание читов для CS:GO", но это очень долгая история которая стоит отдельной темы.

В общем итог: ИИ способен упростить твою жизнь, и не заставить тебя учить билеты, но заменить программиста или другую проффесию - не способен, и не думаю что в ближайшем будущем сможет.

UPD: Насчёт сложных вещей, почему нету в паблике? Я думаю абсолютно всё есть в паблике ( Знания на тему, но не готовая паста )
 
кто читает тот умрет
Участник
Статус
Оффлайн
Регистрация
29 Июл 2019
Сообщения
696
Реакции[?]
540
Поинты[?]
153K
Не сказал бы, хотя особо чего-то сверхвыдающегося она не выдаёт, но базовые вещи, обьяснение ассемблер листингов, генерация шифрования адрессов на основе шифра Вернама с поддержкой SIMD может, также как и дореверсить за тебя простую функцию.
В общей силе я потратил около 20-30 часов, чтобы разобраться во всех возможностя этого ИИ еще до того как она хайпанула ( использовал не новую chat gpt, а старую davinci )

Исследование #1
Реверс инженеринг.
Она умеет обрабатывать как простой асм листинг, и упрощать его, и деобфусцировать так и полный псевдо-код с иды. Тажке способна полностью переменовывать все вары в псевдо-коде, подставляя правильные названия функций. Умеет полностью эмулировать разного вида инструкции включая SIMD.
Привожу пару простых примеров:
C++:
// Save the current tick count
GlobalData::TickCount = *(g_pGlobalVars + 0x1C);

// Call virtual function
CallVFunction();

// Get pointer for the local client
auto localClientPtr = VFunc_2(entityList)();

// Check if player is alive
if (localClientPtr && C_CSPlayer::IsAlive(localClientPtr)) {
    // Set flag to 1
    g_bSomething = 1;

    // If a double tap exploit is going on
    if (*g_ExploitData->DoubleTapFlag) {
        g_ExploitData->TickCountDifference = *(g_ClientState + 0x4D28) + *(g_ClientState + 0x4D24) + 1;
        g_Networking->NetworkTick++;
    }

    // Move a certain number of times based on the tickbase difference
    int timesToMove = GlobalData::LastTickbaseDifference - *(g_ClientState + 0x4D28) - 4;
    while (timesToMove > 0) {
        g_ExploitData->WasMoving = 1;
        o_CL_Move(frameTime, isFinalTick);
        timesToMove -= 1;
    }
    g_ExploitData->WasMoving = 0;
    g_ExploitData->HasMoved = 1;
C++:
void RegisterActionJoinParty()
{
v8::Isolate* isolate;
v8::Isolate* isolatePtr;
  int scopePtr; eax
  int funcTemplatePtr; //
eax
  _DWORD* funcPtr; eax
  int strPtr; eax
  _DWORD* templatePtr; eax
int nameFuncPtr; eax
  int arg0; [esp-4h] [ebp-2Ch]
  char
scopeBuffer[12]; [esp+8h] [ebp-20h] BYREF
  char strBuffer[4]; [esp+14h]
[ebp-14h] BYREF
  char tempBuffer[4]; [esp+18h] [ebp-10h] BYREF
  int
contextPtr; [esp+1Ch] [ebp-Ch] BYREF
  int globalObjectPtr; [esp+20h]
[ebp-8h] BYREF
  char arg1; [esp+27h] [ebp-1h] BYREF

  isolate =
(v8::Isolate*)(*(int (__thiscall **)(int))(*(_DWORD *)g_pUIEngine +
516))(g_pUIEngine);
  v8::Isolate::Enter(isolate);
  isolatePtr = (struct
v8::Isolate*)(*(int (__thiscall **)(int))(*(_DWORD *)g_pUIEngine +
516))(g_pUIEngine);
v8::HandleScope::HandleScope((v8::HandleScope*)scopeBuffer, isolatePtr);
(*(void (__thiscall **)(int, int*))(*(_DWORD *)g_pUIEngine + 500))(g_pUIEngine,
&contextPtr);
  (*(void (__thiscall **)(int, int*))(*(_DWORD *)g_pUIEngine +
504))(g_pUIEngine, &globalObjectPtr);
  scopePtr = (*(int (__thiscall
**)(int))(*(_DWORD *)g_pUIEngine + 516))(g_pUIEngine);
  funcTemplatePtr =
(*(int (__thiscall **)(int, int, int, _DWORD, int, int, _DWORD))(*(_DWORD
*)g_pUIEngine + 516))(
         g_pUIEngine,
         scopePtr + 72,
globalObjectPtr,
         0,
         1,
         scopePtr + 72,
         0);
funcPtr = (_DWORD*)v8::FunctionTemplate::New(tempBuffer, funcTemplatePtr,
sub_10651C20);
  strPtr = (*(int (__thiscall **)(int, _DWORD, int))(*(_DWORD
*)g_pUIEngine + 516))(g_pUIEngine, *funcPtr, arg0);
  templatePtr =
(_DWORD*)v8::String::NewFromUtf8(strBuffer, strPtr, "ActionJoinParty", 0, -1);
v8::Template::Set(contextPtr, *templatePtr);
  nameFuncPtr = (*(int (__thiscall
**)(int, const char*, int, _DWORD, int))(*(_DWORD *)g_pUIEngine + 660))(
g_pUIEngine,
         "ActionJoinParty",
         1,
         0,
         2);
arg1 = 16;
  (*(void (__thiscall **)(int, int, int, char *, _DWORD))(*(_DWORD
*)g_pUIEngine + 664))(g_pUIEngine, nameFuncPtr, 1, &arg1, 0);
v8::HandleScope::~HandleScope((v8::HandleScope*)scopeBuffer);
v8::Isolate::Exit(isolate);
}
C++:
This function initializes a video decoder.

char __thiscall
InitVideoDecoder(DecoderHandle *handle, AVFormatContext *input_ctx,
int best_media_stream, char do_stream_info_search)
{
  DiagnosticsState
*diagnostics; // edi
  DecodeContext *context; // eax
  AVFormatContext
*format_ctx; // eax
  int audio_stream; // eax
  AVCodec *decoder; // ecx
unsigned int scale1; // ecx
  unsigned int scale2; // eax
  int video_stream; //
[esp+4h] [ebp-8h] BYREF
  char success; // [esp+8h] [ebp-4h]
  int
audio_best_stream; // [esp+14h] [ebp+8h]
  int video_best_stream; // [esp+1Ch]
[ebp+10h]

  if ( dword_102FDAB8 )
  {
    diagnostics = StartDiagnostics();
success = TriggerDiagnostics("CVideoDecoderLibav::BInit", 0, 5, 0, 4,
&diagnostics );
  }
  else
  {
    diagnostics = 0;
    success = 0;
  }
context = *(DecodeContext**)(handle + 8);
  if ( context )
    goto label_10;
context = AllocateDecodeContext(input_ctx);
  if (context)
  {
*(DecodeContext**)(handle + 12) = context; // Store context
    format_ctx =
AllocateFormatContext(context);
    *handle = format_ctx; // Store format
context
  }
  else
  {
    context = 0;
  }

  if (avformat_open_input() < 0)
{
    ReportError("Video player: Could not open video input\n");
label_10:
success = 0;
    goto label_11;
  }

  if (do_stream_info_search &&
avformat_find_stream_info(format_ctx, 0) < 0)
    goto label_10;

  //Find the
best audio and video stream
  audio_best_stream =
av_find_best_stream(format_ctx, 0, -1, -1, 0, 0);
  audio_stream =
av_find_best_stream(format_ctx, 1, -1, audio_best_stream, 0, 0);
video_best_stream = audio_stream;
  if (audio_best_stream < 0)
  {
    if
(video_best_stream < 0)
      goto label_10;

    goto label_25;
  }

  // Open
the audio decoder
  audio_stream = *(int*)(*(int*)(*(int*)(format_ctx + 28) + 4
* audio_best_stream) + 8);
  decoder = avcodec_find_decoder(*(int*)(audio_stream
+ 48));
  if (!decoder || avcodec_open2(audio_stream, decoder, 0) < 0)
    goto
label_10;
  *(int*)(handle + 84) = audio_best_stream;

  // Open the video
decoder
  goto label_28;

label_25:
  video_stream =
*(int*)(*(int*)(*(int*)(format_ctx + 28) + 4 * video_best_stream) + 8);
decoder = avcodec_find_decoder(*(int*)(video_stream + 48));
  if (!decoder)
  {
ReportError("Video player: Codec not supported\n");
    goto label_10;
  }
*(int*)(video_stream + 808) = 2;
  if (avcodec_open2(video_stream, decoder, 0) <
0)
  {
    ReportError("Video player: Could not open decoder\n");
    goto
label_10;
  }
  *(int*)(handle + 80) = video_best_stream;
  if (audio_stream >=
0)
    goto label_25;

label_28:
  // Initialize the decoder
  if
(!InitDecoder(handle))
    goto label_10;

  // Set the time scale
  scale1 =
*(unsigned int*)(format_ctx + 1064);
  scale2 = *(unsigned int*)(format_ctx +
1068);
  if (__SPAIR64__(scale2, scale1) > 0 && (scale1 || scale2 !=
0x80000000))
    *(__int64*)(handle + 64) = av_rescale_q(scale1, scale2, 1,
1000000, 1, 1000000);
  success = 1;

label_11:
  if (diagnostics && success)
EndDiagnostics();
  return success;
}

Еще он способен вполне нормально анализировать VTIL код, и даже переводить его в псевдо-код ( Примера не будет, я его потерял )

Исследование #2
Защита приложений.
Из-за объема данных на которых была обучена эта модель она обладает знаниями о устройстве разных аспектов защиты, а также может написать базовые примеры кода.
C++:
#include <iostream>
#include <string>

using namespace std;

string encryptDecrypt(string toEncrypt) {
    char key = 'K'; // Any char will work
    string output = toEncrypt;

    for (int i = 0; i < toEncrypt.size(); i++)
        output[i] = toEncrypt[i] ^ key;

    return output;
}

int main() {
    string input = "This is a sample text";
    string encrypted = encryptDecrypt(input);
    cout << "Encrypted Text = " << encrypted << endl;

    string decrypted = encryptDecrypt(encrypted);
    cout << "Decrypted Text = " << decrypted << endl;

    return 0;
}
C++:
#include <iostream>
#include <string>
#include <smmintrin.h>
#include <immintrin.h>

using namespace std;

string encryptDecrypt(string toEncrypt) {
    char key[16] = {'K', 'e', 'y', '0', 'K', 'e', 'y', '1',
                    'K', 'e', 'y', '2', 'K', 'e', 'y', '3'};

    // Load the key into an SSE register
    __m128i reg_key = _mm_loadu_si128((__m128i*)&key);

    int input_size = (int)toEncrypt.size();
    int num_iters = (input_size + 15) / 16;

    string output = toEncrypt;
    for (int i = 0; i < num_iters; i++) {
        // Load the next 16 bytes of input
        __m128i reg_input = _mm_loadu_si128((__m128i*)&output[i * 16]);

        // Do XOR with the key
        __m128i reg_output = _mm_xor_si128(reg_input, reg_key);

        // Store the result
        _mm_storeu_si128((__m128i*)&output[i * 16], reg_output);
    }

    return output;
}

int main() {
    string input = "This is a sample text";
    string encrypted = encryptDecrypt(input);
    cout << "Encrypted Text = " << encrypted << endl;

    string decrypted = encryptDecrypt(encrypted);
    cout << "Decrypted Text = " << decrypted << endl;

    return 0;
}

Исследование #3
Геймхакинг.
Она вполне может реализовать вам Legitbot с разными ништяками
C++:
#include "SDK.h"

void Aimbot()
{
  C_BasePlayer* localplayer = (C_BasePlayer*)g_EntityList->GetClientEntity(g_EngineClient->GetLocalPlayer());
  if (!localplayer)
    return;

  if (!localplayer->IsAlive())
    return;

  C_BaseCombatWeapon* activeWeapon = (C_BaseCombatWeapon*)g_EntityList->GetClientEntityFromHandle(localplayer->m_hActiveWeapon());
  if (!activeWeapon)
    return;

  if (activeWeapon->m_iItemDefinitionIndex() == WEAPON_C4)
    return;

  if (activeWeapon->IsKnife()  activeWeapon->IsGrenade())
    return;

  Vector viewAngles;
  g_EngineClient->GetViewAngles(viewAngles);

  Vector aimAngles;
  Vector aimPoint;
  Vector src = localplayer->GetEyePos();
  float bestFov = g_Options.aimbot_fov;
  C_BasePlayer* target = nullptr;

  for (int i = 1; i <= g_GlobalVars->maxClients; i++)
  {
    C_BasePlayer* entity = (C_BasePlayer*)g_EntityList->GetClientEntity(i);

    if (!entity  entity == localplayer  entity->IsDormant()  !entity->IsAlive())
      continue;

    if (entity->m_iTeamNum() == localplayer->m_iTeamNum())
      continue;

    if (g_Options.aimbot_friendly)
      if (entity->m_iTeamNum() != localplayer->m_iTeamNum())
        continue;

    // Recoil Control
    Vector recoilReduction = localplayer->m_aimPunchAngle() * 2.f;
    Vector aimAnglesRecoil = Math::CalcAngle(src, entity->GetHitboxPos(g_Options.aimbot_hitbox)) - recoilReduction;

    // Random Aim Offsets
    Vector randomOffset = Vector(Math::RandomFloat(-g_Options.aimbot_random_offset, g_Options.aimbot_random_offset), Math::RandomFloat(-g_Options.aimbot_random_offset, g_Options.aimbot_random_offset), 0.f);
    aimAnglesRecoil += randomOffset;

    // Target Selection
    float fov = Math::GetFov(viewAngles, aimAnglesRecoil);
    if (fov < bestFov)
    {
      bestFov = fov;
      aimPoint = entity->GetHitboxPos(g_Options.aimbot_hitbox);
      aimAngles = aimAnglesRecoil;
      target = entity;
    }
  }

  // Prediction
  Vector velocity = localplayer->m_vecVelocity();
  float speed = velocity.Length2D();
  float estimatedTime = 0.f;
  if (speed > 0.f)
    estimatedTime = g_GlobalVars->interval_per_tick * (aimPoint - src).Length() / speed;

  aimPoint += velocity * estimatedTime;

  // Target Locking
  if (target && g_Options.aimbot_lock)
    aimPoint = target->GetHitboxPos(g_Options.aimbot_hitbox);

  if (bestFov < g_Options.aimbot_fov)
  {
    // Random Aim Angles
    Vector randomAngles = Vector(Math::RandomFloat(-g_Options.aimbot_random_angle, g_Options.aimbot_random_angle), Math::RandomFloat(-g_Options.aimbot_random_angle, g_Options.aimbot_random_angle), 0.f);
    aimAngles += randomAngles;

    Math::ClampAngles(aimAngles);
    Math::SmoothAngles(viewAngles, aimAngles, g_Options.aimbot_smooth);
    g_EngineClient->SetViewAngles(viewAngles);

    // Random Aim Speed
    float randomSpeed = Math::RandomFloat(g_Options.aimbot_min_speed, g_Options.aimbot_max_speed);
    g_InputSystem->m_fButtonPressed = true;
    g_InputSystem->m_fButtonValue = randomSpeed;

    // Auto-Fire
    if (g_Options.aimbot_autofire && activeWeapon->CanFire())
      g_InputSystem->m_fButtonPressed = true;

    // Auto-Scope
    if (g_Options.aimbot_autoscope && activeWeapon->m_zoomLevel() == 0 && activeWeapon->CanZoom())
      g_InputSystem->m_fButtonPressed = true;
  }
}
Также она может реализовать простые вещи по типу экстернал глоу и т.д, но это не стоит добавления примера кода сюда.

Исследование #4
Работа с кодом, его обьяснение и поиск багов.
Давинчи вполне способен объяснять код, и показывать на его недостатки.
Так-же он способен исправлять ошибки в коде, если ему показать их из компилятора.

Исследование #5
Объяснение математики, и других точных наук.
Тут особо нету о чём говорить, но в моих условиях:
1) Он смог объяснить часть программы вышмата второго курса, а также решить лабу.
2) Способен писать математические формулы за вас, а также обьяснять их работу.
3) Может реализовывать математику в коде, а также знаком с
Пожалуйста, авторизуйтесь для просмотра ссылки.



Исследование #6
Аналитика данных.
ИИ готов создать формулу на основе предоставляемых параметров, а также продемонстировать её работу на реальных данных.
For NAVI:
Match 1 -
s1mple: R = 16, M = 6, K = 1.5; Level of Play = (16*0.01) + (6*0.075) + (1.5*0.825) = 0.54
electronic: R = 17, M = 7, K = 1.2; Level of Play = (17*0.01) + (7*0.075) + (1.2*0.825) = 0.55
flamie: R = 15, M = 8, K = 1.1; Level of Play = (15*0.01) + (8*0.075) + (1.1*0.825) = 0.53
Boombl4: R = 13, M = 5, K = 1.3; Level of Play = (13*0.01) + (5*0.075) + (1.3*0.825) = 0.48
Edward: R = 13, M = 4, K = 0.8; Level of Play = (13*0.01) + (4*0.075) + (0.8*0.825) = 0.41
Match Link:
Пожалуйста, авторизуйтесь для просмотра ссылки.


Match 2 -
s1mple: R = 14, M = 8, K = 1.2; Level of Play = (14*0.01) + (8*0.075) + (1.2*0.825) = 0.56
electronic: R = 16, M = 9, K = 1.7; Level of Play = (16*0.01) + (9*0.075) + (1.7*0.825) = 0.63
flamie: R = 10, M = 7, K = 1; Level of Play = (10*0.01) + (7*0.075) + (1*0.825) = 0.52
Boombl4: R = 11, M = 6, K = 1.5; Level of Play = (11*0.01) + (6*0.075) + (1.5*0.825) = 0.53
Edward: R = 10, M = 5, K = 0.9; Level of Play = (10*0.01) + (5*0.075) + (0.9*0.825) = 0.45
Match Link:
Пожалуйста, авторизуйтесь для просмотра ссылки.


Match 3 -
s1mple: R = 12, M = 7, K = 1.3; Level of Play = (12*0.01) + (7*0.075) + (1.3*0.825) = 0.55
electronic: R = 11, M = 10, K = 1.8; Level of Play = (11*0.01) + (10*0.075) + (1.8*0.825) = 0.70
flamie: R = 15, M = 5, K = 0.9; Level of Play = (15*0.01) + (5*0.075) + (0.9*0.825) = 0.46
Boombl4: R = 12, M = 8, K = 1.4; Level of Play = (12*0.01) + (8*0.075) + (1.4*0.825) = 0.56
Edward: R = 17, M = 6, K = 1; Level of Play = (17*0.01) + (6*0.075) + (1*0.825) = 0.54
Match Link:
Пожалуйста, авторизуйтесь для просмотра ссылки.

Human: Where is vitus pro?
AI: Examining 3 matches between Natus Vincere (NAVI) and Virtus Pro, we can calculate the level of play for each player using the formula:
Level of Play = (R * 0.01) + (M * 0.075) + (K * 0.825).

For Virtus Pro:
Match 1 -
snatchie: R = 13, M = 9, K = 1.1; Level of Play = (13*0.01) + (9*0.075) + (1.1*0.825) = 0.60
byali: R = 18, M = 6, K = 1.4; Level of Play = (18*0.01) + (6*0.075) + (1.4*0.825) = 0.55
MICHU: R = 11, M = 7, K = 1.3; Level of Play = (11*0.01) + (7*0.075) + (1.3*0.825) = 0.52
Snax: R = 14, M = 5, K = 0.9; Level of Play = (14*0.01) + (5*0.075) + (0.9*0.825) = 0.44
morelz: R = 16, M = 4, K = 0.8; Level of Play = (16*0.01) + (4*0.075) + (0.8*0.825) = 0.40
Match Link:
Пожалуйста, авторизуйтесь для просмотра ссылки.


Match 2 -
snatchie: R = 14, M = 8, K = 1.4; Level of Play = (14*0.01) + (8*0.075) + (1.4*0.825) = 0.63
byali: R = 18, M = 7, K = 1.8; Level of Play = (18*0.01) + (7*0.075) + (1.8*0.825) = 0.66
MICHU: R = 10, M = 10, K = 1.1; Level of Play = (10*0.01) + (10*0.075) + (1.1*0.825) = 0.60
Snax: R = 14, M = 6, K = 1.2; Level of Play = (14*0.01) + (6*0.075) + (1.2*0.825) = 0.56
morelz: R = 11, M = 6, K = 0.9; Level of Play = (11*0.01) + (6*0.075) + (0.9*0.825) = 0.49
Match Link:
Пожалуйста, авторизуйтесь для просмотра ссылки.


Match 3 -
snatchie: R = 12, M = 6, K = 1.2; Level of Play = (12*0.01) + (6*0.075) + (1.2*0.825) = 0.53
byali: R = 13, M = 9, K = 1.7; Level of Play = (13*0.01) + (9*0.075) + (1.7*0.825) = 0.64
MICHU: R = 16, M = 5, K = 0.8; Level of Play = (16*0.01) + (5*0.075) + (0.8*0.825) = 0.45
Snax: R = 13, M = 8, K = 1.3; Level of Play = (13*0.01) + (8*0.075) + (1.3*0.825) = 0.56
morelz: R = 15, M = 5, K = 1; Level of Play = (15*0.01) + (5*0.075) + (1*0.825) = 0.51
Match Link:
Пожалуйста, авторизуйтесь для просмотра ссылки.

Ещё была создана модифицированная версия Давинчи обученная по разделу "Создание читов для CS:GO", но это очень долгая история которая стоит отдельной темы.

В общем итог: ИИ способен упростить твою жизнь, и не заставить тебя учить билеты, но заменить программиста или другую проффесию - не способен, и не думаю что в ближайшем будущем сможет.

UPD: Насчёт сложных вещей, почему нету в паблике? Я думаю абсолютно всё есть в паблике ( Знания на тему, но не готовая паста )
Брат ты старался но я не хочу это читать
 
Searching for myself
Пользователь
Статус
Оффлайн
Регистрация
29 Сен 2021
Сообщения
212
Реакции[?]
69
Поинты[?]
11K
Ещё была создана модифицированная версия Давинчи обученная по разделу "Создание читов для CS:GO", но это очень долгая история которая стоит отдельной темы.
А что, где про это почитать?
 
Разработчик
Статус
Оффлайн
Регистрация
1 Сен 2018
Сообщения
1,598
Реакции[?]
880
Поинты[?]
114K
Брат ты старался но я не хочу это читать
Я специально написал итог в конце.


А что, где про это почитать?
Ну я начинал писать тему на эту тему, но потом подумал, что это не будет кому-то интересно, и забросил.

p.s:
1671566880739.png
 
Начинающий
Статус
Оффлайн
Регистрация
23 Сен 2020
Сообщения
60
Реакции[?]
6
Поинты[?]
4K
Не сказал бы, хотя особо чего-то сверхвыдающегося она не выдаёт, но базовые вещи, обьяснение ассемблер листингов, генерация шифрования адрессов на основе шифра Вернама с поддержкой SIMD может, также как и дореверсить за тебя простую функцию.
В общей силе я потратил около 20-30 часов, чтобы разобраться во всех возможностя этого ИИ еще до того как она хайпанула ( использовал не новую chat gpt, а старую davinci )

Исследование #1
Реверс инженеринг.
Она умеет обрабатывать как простой асм листинг, и упрощать его, и деобфусцировать так и полный псевдо-код с иды. Тажке способна полностью переменовывать все вары в псевдо-коде, подставляя правильные названия функций. Умеет полностью эмулировать разного вида инструкции включая SIMD.
Привожу пару простых примеров:
C++:
// Save the current tick count
GlobalData::TickCount = *(g_pGlobalVars + 0x1C);

// Call virtual function
CallVFunction();

// Get pointer for the local client
auto localClientPtr = VFunc_2(entityList)();

// Check if player is alive
if (localClientPtr && C_CSPlayer::IsAlive(localClientPtr)) {
    // Set flag to 1
    g_bSomething = 1;

    // If a double tap exploit is going on
    if (*g_ExploitData->DoubleTapFlag) {
        g_ExploitData->TickCountDifference = *(g_ClientState + 0x4D28) + *(g_ClientState + 0x4D24) + 1;
        g_Networking->NetworkTick++;
    }

    // Move a certain number of times based on the tickbase difference
    int timesToMove = GlobalData::LastTickbaseDifference - *(g_ClientState + 0x4D28) - 4;
    while (timesToMove > 0) {
        g_ExploitData->WasMoving = 1;
        o_CL_Move(frameTime, isFinalTick);
        timesToMove -= 1;
    }
    g_ExploitData->WasMoving = 0;
    g_ExploitData->HasMoved = 1;
C++:
void RegisterActionJoinParty()
{
v8::Isolate* isolate;
v8::Isolate* isolatePtr;
  int scopePtr; eax
  int funcTemplatePtr; //
eax
  _DWORD* funcPtr; eax
  int strPtr; eax
  _DWORD* templatePtr; eax
int nameFuncPtr; eax
  int arg0; [esp-4h] [ebp-2Ch]
  char
scopeBuffer[12]; [esp+8h] [ebp-20h] BYREF
  char strBuffer[4]; [esp+14h]
[ebp-14h] BYREF
  char tempBuffer[4]; [esp+18h] [ebp-10h] BYREF
  int
contextPtr; [esp+1Ch] [ebp-Ch] BYREF
  int globalObjectPtr; [esp+20h]
[ebp-8h] BYREF
  char arg1; [esp+27h] [ebp-1h] BYREF

  isolate =
(v8::Isolate*)(*(int (__thiscall **)(int))(*(_DWORD *)g_pUIEngine +
516))(g_pUIEngine);
  v8::Isolate::Enter(isolate);
  isolatePtr = (struct
v8::Isolate*)(*(int (__thiscall **)(int))(*(_DWORD *)g_pUIEngine +
516))(g_pUIEngine);
v8::HandleScope::HandleScope((v8::HandleScope*)scopeBuffer, isolatePtr);
(*(void (__thiscall **)(int, int*))(*(_DWORD *)g_pUIEngine + 500))(g_pUIEngine,
&contextPtr);
  (*(void (__thiscall **)(int, int*))(*(_DWORD *)g_pUIEngine +
504))(g_pUIEngine, &globalObjectPtr);
  scopePtr = (*(int (__thiscall
**)(int))(*(_DWORD *)g_pUIEngine + 516))(g_pUIEngine);
  funcTemplatePtr =
(*(int (__thiscall **)(int, int, int, _DWORD, int, int, _DWORD))(*(_DWORD
*)g_pUIEngine + 516))(
         g_pUIEngine,
         scopePtr + 72,
globalObjectPtr,
         0,
         1,
         scopePtr + 72,
         0);
funcPtr = (_DWORD*)v8::FunctionTemplate::New(tempBuffer, funcTemplatePtr,
sub_10651C20);
  strPtr = (*(int (__thiscall **)(int, _DWORD, int))(*(_DWORD
*)g_pUIEngine + 516))(g_pUIEngine, *funcPtr, arg0);
  templatePtr =
(_DWORD*)v8::String::NewFromUtf8(strBuffer, strPtr, "ActionJoinParty", 0, -1);
v8::Template::Set(contextPtr, *templatePtr);
  nameFuncPtr = (*(int (__thiscall
**)(int, const char*, int, _DWORD, int))(*(_DWORD *)g_pUIEngine + 660))(
g_pUIEngine,
         "ActionJoinParty",
         1,
         0,
         2);
arg1 = 16;
  (*(void (__thiscall **)(int, int, int, char *, _DWORD))(*(_DWORD
*)g_pUIEngine + 664))(g_pUIEngine, nameFuncPtr, 1, &arg1, 0);
v8::HandleScope::~HandleScope((v8::HandleScope*)scopeBuffer);
v8::Isolate::Exit(isolate);
}
C++:
This function initializes a video decoder.

char __thiscall
InitVideoDecoder(DecoderHandle *handle, AVFormatContext *input_ctx,
int best_media_stream, char do_stream_info_search)
{
  DiagnosticsState
*diagnostics; // edi
  DecodeContext *context; // eax
  AVFormatContext
*format_ctx; // eax
  int audio_stream; // eax
  AVCodec *decoder; // ecx
unsigned int scale1; // ecx
  unsigned int scale2; // eax
  int video_stream; //
[esp+4h] [ebp-8h] BYREF
  char success; // [esp+8h] [ebp-4h]
  int
audio_best_stream; // [esp+14h] [ebp+8h]
  int video_best_stream; // [esp+1Ch]
[ebp+10h]

  if ( dword_102FDAB8 )
  {
    diagnostics = StartDiagnostics();
success = TriggerDiagnostics("CVideoDecoderLibav::BInit", 0, 5, 0, 4,
&diagnostics );
  }
  else
  {
    diagnostics = 0;
    success = 0;
  }
context = *(DecodeContext**)(handle + 8);
  if ( context )
    goto label_10;
context = AllocateDecodeContext(input_ctx);
  if (context)
  {
*(DecodeContext**)(handle + 12) = context; // Store context
    format_ctx =
AllocateFormatContext(context);
    *handle = format_ctx; // Store format
context
  }
  else
  {
    context = 0;
  }

  if (avformat_open_input() < 0)
{
    ReportError("Video player: Could not open video input\n");
label_10:
success = 0;
    goto label_11;
  }

  if (do_stream_info_search &&
avformat_find_stream_info(format_ctx, 0) < 0)
    goto label_10;

  //Find the
best audio and video stream
  audio_best_stream =
av_find_best_stream(format_ctx, 0, -1, -1, 0, 0);
  audio_stream =
av_find_best_stream(format_ctx, 1, -1, audio_best_stream, 0, 0);
video_best_stream = audio_stream;
  if (audio_best_stream < 0)
  {
    if
(video_best_stream < 0)
      goto label_10;

    goto label_25;
  }

  // Open
the audio decoder
  audio_stream = *(int*)(*(int*)(*(int*)(format_ctx + 28) + 4
* audio_best_stream) + 8);
  decoder = avcodec_find_decoder(*(int*)(audio_stream
+ 48));
  if (!decoder || avcodec_open2(audio_stream, decoder, 0) < 0)
    goto
label_10;
  *(int*)(handle + 84) = audio_best_stream;

  // Open the video
decoder
  goto label_28;

label_25:
  video_stream =
*(int*)(*(int*)(*(int*)(format_ctx + 28) + 4 * video_best_stream) + 8);
decoder = avcodec_find_decoder(*(int*)(video_stream + 48));
  if (!decoder)
  {
ReportError("Video player: Codec not supported\n");
    goto label_10;
  }
*(int*)(video_stream + 808) = 2;
  if (avcodec_open2(video_stream, decoder, 0) <
0)
  {
    ReportError("Video player: Could not open decoder\n");
    goto
label_10;
  }
  *(int*)(handle + 80) = video_best_stream;
  if (audio_stream >=
0)
    goto label_25;

label_28:
  // Initialize the decoder
  if
(!InitDecoder(handle))
    goto label_10;

  // Set the time scale
  scale1 =
*(unsigned int*)(format_ctx + 1064);
  scale2 = *(unsigned int*)(format_ctx +
1068);
  if (__SPAIR64__(scale2, scale1) > 0 && (scale1 || scale2 !=
0x80000000))
    *(__int64*)(handle + 64) = av_rescale_q(scale1, scale2, 1,
1000000, 1, 1000000);
  success = 1;

label_11:
  if (diagnostics && success)
EndDiagnostics();
  return success;
}

Еще он способен вполне нормально анализировать VTIL код, и даже переводить его в псевдо-код ( Примера не будет, я его потерял )

Исследование #2
Защита приложений.
Из-за объема данных на которых была обучена эта модель она обладает знаниями о устройстве разных аспектов защиты, а также может написать базовые примеры кода.
C++:
#include <iostream>
#include <string>

using namespace std;

string encryptDecrypt(string toEncrypt) {
    char key = 'K'; // Any char will work
    string output = toEncrypt;

    for (int i = 0; i < toEncrypt.size(); i++)
        output[i] = toEncrypt[i] ^ key;

    return output;
}

int main() {
    string input = "This is a sample text";
    string encrypted = encryptDecrypt(input);
    cout << "Encrypted Text = " << encrypted << endl;

    string decrypted = encryptDecrypt(encrypted);
    cout << "Decrypted Text = " << decrypted << endl;

    return 0;
}
C++:
#include <iostream>
#include <string>
#include <smmintrin.h>
#include <immintrin.h>

using namespace std;

string encryptDecrypt(string toEncrypt) {
    char key[16] = {'K', 'e', 'y', '0', 'K', 'e', 'y', '1',
                    'K', 'e', 'y', '2', 'K', 'e', 'y', '3'};

    // Load the key into an SSE register
    __m128i reg_key = _mm_loadu_si128((__m128i*)&key);

    int input_size = (int)toEncrypt.size();
    int num_iters = (input_size + 15) / 16;

    string output = toEncrypt;
    for (int i = 0; i < num_iters; i++) {
        // Load the next 16 bytes of input
        __m128i reg_input = _mm_loadu_si128((__m128i*)&output[i * 16]);

        // Do XOR with the key
        __m128i reg_output = _mm_xor_si128(reg_input, reg_key);

        // Store the result
        _mm_storeu_si128((__m128i*)&output[i * 16], reg_output);
    }

    return output;
}

int main() {
    string input = "This is a sample text";
    string encrypted = encryptDecrypt(input);
    cout << "Encrypted Text = " << encrypted << endl;

    string decrypted = encryptDecrypt(encrypted);
    cout << "Decrypted Text = " << decrypted << endl;

    return 0;
}

Исследование #3
Геймхакинг.
Она вполне может реализовать вам Legitbot с разными ништяками
C++:
#include "SDK.h"

void Aimbot()
{
  C_BasePlayer* localplayer = (C_BasePlayer*)g_EntityList->GetClientEntity(g_EngineClient->GetLocalPlayer());
  if (!localplayer)
    return;

  if (!localplayer->IsAlive())
    return;

  C_BaseCombatWeapon* activeWeapon = (C_BaseCombatWeapon*)g_EntityList->GetClientEntityFromHandle(localplayer->m_hActiveWeapon());
  if (!activeWeapon)
    return;

  if (activeWeapon->m_iItemDefinitionIndex() == WEAPON_C4)
    return;

  if (activeWeapon->IsKnife()  activeWeapon->IsGrenade())
    return;

  Vector viewAngles;
  g_EngineClient->GetViewAngles(viewAngles);

  Vector aimAngles;
  Vector aimPoint;
  Vector src = localplayer->GetEyePos();
  float bestFov = g_Options.aimbot_fov;
  C_BasePlayer* target = nullptr;

  for (int i = 1; i <= g_GlobalVars->maxClients; i++)
  {
    C_BasePlayer* entity = (C_BasePlayer*)g_EntityList->GetClientEntity(i);

    if (!entity  entity == localplayer  entity->IsDormant()  !entity->IsAlive())
      continue;

    if (entity->m_iTeamNum() == localplayer->m_iTeamNum())
      continue;

    if (g_Options.aimbot_friendly)
      if (entity->m_iTeamNum() != localplayer->m_iTeamNum())
        continue;

    // Recoil Control
    Vector recoilReduction = localplayer->m_aimPunchAngle() * 2.f;
    Vector aimAnglesRecoil = Math::CalcAngle(src, entity->GetHitboxPos(g_Options.aimbot_hitbox)) - recoilReduction;

    // Random Aim Offsets
    Vector randomOffset = Vector(Math::RandomFloat(-g_Options.aimbot_random_offset, g_Options.aimbot_random_offset), Math::RandomFloat(-g_Options.aimbot_random_offset, g_Options.aimbot_random_offset), 0.f);
    aimAnglesRecoil += randomOffset;

    // Target Selection
    float fov = Math::GetFov(viewAngles, aimAnglesRecoil);
    if (fov < bestFov)
    {
      bestFov = fov;
      aimPoint = entity->GetHitboxPos(g_Options.aimbot_hitbox);
      aimAngles = aimAnglesRecoil;
      target = entity;
    }
  }

  // Prediction
  Vector velocity = localplayer->m_vecVelocity();
  float speed = velocity.Length2D();
  float estimatedTime = 0.f;
  if (speed > 0.f)
    estimatedTime = g_GlobalVars->interval_per_tick * (aimPoint - src).Length() / speed;

  aimPoint += velocity * estimatedTime;

  // Target Locking
  if (target && g_Options.aimbot_lock)
    aimPoint = target->GetHitboxPos(g_Options.aimbot_hitbox);

  if (bestFov < g_Options.aimbot_fov)
  {
    // Random Aim Angles
    Vector randomAngles = Vector(Math::RandomFloat(-g_Options.aimbot_random_angle, g_Options.aimbot_random_angle), Math::RandomFloat(-g_Options.aimbot_random_angle, g_Options.aimbot_random_angle), 0.f);
    aimAngles += randomAngles;

    Math::ClampAngles(aimAngles);
    Math::SmoothAngles(viewAngles, aimAngles, g_Options.aimbot_smooth);
    g_EngineClient->SetViewAngles(viewAngles);

    // Random Aim Speed
    float randomSpeed = Math::RandomFloat(g_Options.aimbot_min_speed, g_Options.aimbot_max_speed);
    g_InputSystem->m_fButtonPressed = true;
    g_InputSystem->m_fButtonValue = randomSpeed;

    // Auto-Fire
    if (g_Options.aimbot_autofire && activeWeapon->CanFire())
      g_InputSystem->m_fButtonPressed = true;

    // Auto-Scope
    if (g_Options.aimbot_autoscope && activeWeapon->m_zoomLevel() == 0 && activeWeapon->CanZoom())
      g_InputSystem->m_fButtonPressed = true;
  }
}
Также она может реализовать простые вещи по типу экстернал глоу и т.д, но это не стоит добавления примера кода сюда.

Исследование #4
Работа с кодом, его обьяснение и поиск багов.
Давинчи вполне способен объяснять код, и показывать на его недостатки.
Так-же он способен исправлять ошибки в коде, если ему показать их из компилятора.

Исследование #5
Объяснение математики, и других точных наук.
Тут особо нету о чём говорить, но в моих условиях:
1) Он смог объяснить часть программы вышмата второго курса, а также решить лабу.
2) Способен писать математические формулы за вас, а также обьяснять их работу.
3) Может реализовывать математику в коде, а также знаком с
Пожалуйста, авторизуйтесь для просмотра ссылки.



Исследование #6
Аналитика данных.
ИИ готов создать формулу на основе предоставляемых параметров, а также продемонстировать её работу на реальных данных.
For NAVI:
Match 1 -
s1mple: R = 16, M = 6, K = 1.5; Level of Play = (16*0.01) + (6*0.075) + (1.5*0.825) = 0.54
electronic: R = 17, M = 7, K = 1.2; Level of Play = (17*0.01) + (7*0.075) + (1.2*0.825) = 0.55
flamie: R = 15, M = 8, K = 1.1; Level of Play = (15*0.01) + (8*0.075) + (1.1*0.825) = 0.53
Boombl4: R = 13, M = 5, K = 1.3; Level of Play = (13*0.01) + (5*0.075) + (1.3*0.825) = 0.48
Edward: R = 13, M = 4, K = 0.8; Level of Play = (13*0.01) + (4*0.075) + (0.8*0.825) = 0.41
Match Link:
Пожалуйста, авторизуйтесь для просмотра ссылки.


Match 2 -
s1mple: R = 14, M = 8, K = 1.2; Level of Play = (14*0.01) + (8*0.075) + (1.2*0.825) = 0.56
electronic: R = 16, M = 9, K = 1.7; Level of Play = (16*0.01) + (9*0.075) + (1.7*0.825) = 0.63
flamie: R = 10, M = 7, K = 1; Level of Play = (10*0.01) + (7*0.075) + (1*0.825) = 0.52
Boombl4: R = 11, M = 6, K = 1.5; Level of Play = (11*0.01) + (6*0.075) + (1.5*0.825) = 0.53
Edward: R = 10, M = 5, K = 0.9; Level of Play = (10*0.01) + (5*0.075) + (0.9*0.825) = 0.45
Match Link:
Пожалуйста, авторизуйтесь для просмотра ссылки.


Match 3 -
s1mple: R = 12, M = 7, K = 1.3; Level of Play = (12*0.01) + (7*0.075) + (1.3*0.825) = 0.55
electronic: R = 11, M = 10, K = 1.8; Level of Play = (11*0.01) + (10*0.075) + (1.8*0.825) = 0.70
flamie: R = 15, M = 5, K = 0.9; Level of Play = (15*0.01) + (5*0.075) + (0.9*0.825) = 0.46
Boombl4: R = 12, M = 8, K = 1.4; Level of Play = (12*0.01) + (8*0.075) + (1.4*0.825) = 0.56
Edward: R = 17, M = 6, K = 1; Level of Play = (17*0.01) + (6*0.075) + (1*0.825) = 0.54
Match Link:
Пожалуйста, авторизуйтесь для просмотра ссылки.

Human: Where is vitus pro?
AI: Examining 3 matches between Natus Vincere (NAVI) and Virtus Pro, we can calculate the level of play for each player using the formula:
Level of Play = (R * 0.01) + (M * 0.075) + (K * 0.825).

For Virtus Pro:
Match 1 -
snatchie: R = 13, M = 9, K = 1.1; Level of Play = (13*0.01) + (9*0.075) + (1.1*0.825) = 0.60
byali: R = 18, M = 6, K = 1.4; Level of Play = (18*0.01) + (6*0.075) + (1.4*0.825) = 0.55
MICHU: R = 11, M = 7, K = 1.3; Level of Play = (11*0.01) + (7*0.075) + (1.3*0.825) = 0.52
Snax: R = 14, M = 5, K = 0.9; Level of Play = (14*0.01) + (5*0.075) + (0.9*0.825) = 0.44
morelz: R = 16, M = 4, K = 0.8; Level of Play = (16*0.01) + (4*0.075) + (0.8*0.825) = 0.40
Match Link:
Пожалуйста, авторизуйтесь для просмотра ссылки.


Match 2 -
snatchie: R = 14, M = 8, K = 1.4; Level of Play = (14*0.01) + (8*0.075) + (1.4*0.825) = 0.63
byali: R = 18, M = 7, K = 1.8; Level of Play = (18*0.01) + (7*0.075) + (1.8*0.825) = 0.66
MICHU: R = 10, M = 10, K = 1.1; Level of Play = (10*0.01) + (10*0.075) + (1.1*0.825) = 0.60
Snax: R = 14, M = 6, K = 1.2; Level of Play = (14*0.01) + (6*0.075) + (1.2*0.825) = 0.56
morelz: R = 11, M = 6, K = 0.9; Level of Play = (11*0.01) + (6*0.075) + (0.9*0.825) = 0.49
Match Link:
Пожалуйста, авторизуйтесь для просмотра ссылки.


Match 3 -
snatchie: R = 12, M = 6, K = 1.2; Level of Play = (12*0.01) + (6*0.075) + (1.2*0.825) = 0.53
byali: R = 13, M = 9, K = 1.7; Level of Play = (13*0.01) + (9*0.075) + (1.7*0.825) = 0.64
MICHU: R = 16, M = 5, K = 0.8; Level of Play = (16*0.01) + (5*0.075) + (0.8*0.825) = 0.45
Snax: R = 13, M = 8, K = 1.3; Level of Play = (13*0.01) + (8*0.075) + (1.3*0.825) = 0.56
morelz: R = 15, M = 5, K = 1; Level of Play = (15*0.01) + (5*0.075) + (1*0.825) = 0.51
Match Link:
Пожалуйста, авторизуйтесь для просмотра ссылки.

Ещё была создана модифицированная версия Давинчи обученная по разделу "Создание читов для CS:GO", но это очень долгая история которая стоит отдельной темы.

В общем итог: ИИ способен упростить твою жизнь, и не заставить тебя учить билеты, но заменить программиста или другую проффесию - не способен, и не думаю что в ближайшем будущем сможет.

UPD: Насчёт сложных вещей, почему нету в паблике? Я думаю абсолютно всё есть в паблике ( Знания на тему, но не готовая паста )
а все мэн ей запретили что либо базарить из плана полноценного кода для чита или даже lua для чита
 
Последнее редактирование:
Сверху Снизу