-
Автор темы
- #1
Не могу сделать кодкейв 3 дня бошку себе ебу с этим и не понимаю в чем проблема то краши то еще что главная проблема не могу понять логику работы самого кодейва но чтобы был хороший старт для этого надо сделать что то что работает так вот что мне от вас требуется если вы хотите мне помочь
1. Хорошие зарубежные видосы
2. Хорошие русские видосы если таковые имеются
3. Объяснить почему ошибок много при сборке проекта и есть ли смысл использовать pragma warning ( disable : ) ( не знаю сработает ли оно тут вообще или нет не до конца понимаю работу этой функции но так или иначе хотелось бы избежать использования подобных штук )
4. Так же по возможности какую нибудь литературу
5. Разобрать мой сурс
6. Либо же скинуть свой чтобы я по нему что либо сделал
Пытался делать по гайдам гайдед хакинга но всё равно что то не так ( игру крашило)
просто если при копипастинге ошибки то это уже кринж какой то конкретный, и какого хуя в кс го если глобальные переменные от чего ее взломать легче а тут такого нет и надо хукать функцию просто горит очко
дополню в игре все адреса статические так что с адресами траблов точно не может быть если я конечно не упал ебалом в клавиатуру лишний раз
При компиляции такие ошибки
AssaultCube\AssaultCube\main.cpp(103,27): error C2488: 'cavedata::caveFunc': 'naked' can only be applied to non-member function definitions
AssaultCube\AssaultCube\main.cpp(106,1): error C2415: improper operand type
AssaultCube\AssaultCube\main.cpp(110,1): error C2400: inline assembler syntax error in 'opcode'; found '('
AssaultCube\AssaultCube\main.cpp(111,1): error C2400: inline assembler syntax error in 'opcode'; found '.'
AssaultCube\AssaultCube\main.cpp(112,1): error C2400: inline assembler syntax error in 'opcode'; found '.'
AssaultCube\AssaultCube\main.cpp(113,1): error C2400: inline assembler syntax error in 'opcode'; found '('
AssaultCube\AssaultCube\main.cpp(115,1): error C2181: illegal else without matching if
AssaultCube\AssaultCube\main.cpp(116,5): error C2065: 'input': undeclared identifier
AssaultCube\AssaultCube\main.cpp(117,5): error C2146: syntax error: missing ';' before identifier 'input'
AssaultCube\AssaultCube\main.cpp(117,5): error C2065: 'input': undeclared identifier
AssaultCube\AssaultCube\main.cpp(118,5): error C2146: syntax error: missing ';' before identifier 'SendInput'
AssaultCube\AssaultCube\main.cpp(118,19): error C2065: 'input': undeclared identifier
AssaultCube\AssaultCube\main.cpp(119,4): error C2143: syntax error: missing ';' before '}'
AssaultCube\AssaultCube\main.cpp(123,1): error C2415: improper operand type
AssaultCube\AssaultCube\main.cpp(126,2): error C2059: syntax error: '}'
AssaultCube\AssaultCube\main.cpp(126,1): error C2143: syntax error: missing ';' before '}'
AssaultCube\AssaultCube\main.cpp(131,2): error C2143: syntax error: missing ';' before '{'
AssaultCube\AssaultCube\main.cpp(131,2): error C2447: '{': missing function header (old-style formal list?)
СУРС лишний скорее всего именно ошибки в том что просто нет реализации в мейне, но хотелось бы почитать как бы именно вы реализовали это
По возможности напишите пожалуйста как бы вы реализовали перехват функции прицела , нужен ли вообще для этого именно кодкейв? и можно ли как то иначе?. ( Но хотелось бы именно кодкейвом интересная штука ) вот как выглядит в иде эта функция
SOURCE:
Дополнение: 1. менял языковой стандарт с 14 по последнюю
2. Пихал crt хуйню в препроцессор
3. Копипастил дохуя кода из других видосов но видимо не смог адаптировать
и немного о том как я вообще что то узнаю ведь я онли копипаст и говорить мне смысла нет даже один хуй ебанат
скажу сразу что я просто ищу готовое решение дальше уже по нему пытаюсь узнать логику работы этого всего ведь если изучать то что не работает ну такое себе сами понимаете поэтому мне надо что то что работает после чего уже буду лезть в тонкости базы если так можно выразиться xD но нужен начальный толчок хотя бы, спасибо за выслушивание моего сочинения просто накипело конкретно так
1. Хорошие зарубежные видосы
2. Хорошие русские видосы если таковые имеются
3. Объяснить почему ошибок много при сборке проекта и есть ли смысл использовать pragma warning ( disable : ) ( не знаю сработает ли оно тут вообще или нет не до конца понимаю работу этой функции но так или иначе хотелось бы избежать использования подобных штук )
4. Так же по возможности какую нибудь литературу
5. Разобрать мой сурс
6. Либо же скинуть свой чтобы я по нему что либо сделал
Пытался делать по гайдам гайдед хакинга но всё равно что то не так ( игру крашило)
просто если при копипастинге ошибки то это уже кринж какой то конкретный, и какого хуя в кс го если глобальные переменные от чего ее взломать легче а тут такого нет и надо хукать функцию просто горит очко
дополню в игре все адреса статические так что с адресами траблов точно не может быть если я конечно не упал ебалом в клавиатуру лишний раз
При компиляции такие ошибки
AssaultCube\AssaultCube\main.cpp(103,27): error C2488: 'cavedata::caveFunc': 'naked' can only be applied to non-member function definitions
AssaultCube\AssaultCube\main.cpp(106,1): error C2415: improper operand type
AssaultCube\AssaultCube\main.cpp(110,1): error C2400: inline assembler syntax error in 'opcode'; found '('
AssaultCube\AssaultCube\main.cpp(111,1): error C2400: inline assembler syntax error in 'opcode'; found '.'
AssaultCube\AssaultCube\main.cpp(112,1): error C2400: inline assembler syntax error in 'opcode'; found '.'
AssaultCube\AssaultCube\main.cpp(113,1): error C2400: inline assembler syntax error in 'opcode'; found '('
AssaultCube\AssaultCube\main.cpp(115,1): error C2181: illegal else without matching if
AssaultCube\AssaultCube\main.cpp(116,5): error C2065: 'input': undeclared identifier
AssaultCube\AssaultCube\main.cpp(117,5): error C2146: syntax error: missing ';' before identifier 'input'
AssaultCube\AssaultCube\main.cpp(117,5): error C2065: 'input': undeclared identifier
AssaultCube\AssaultCube\main.cpp(118,5): error C2146: syntax error: missing ';' before identifier 'SendInput'
AssaultCube\AssaultCube\main.cpp(118,19): error C2065: 'input': undeclared identifier
AssaultCube\AssaultCube\main.cpp(119,4): error C2143: syntax error: missing ';' before '}'
AssaultCube\AssaultCube\main.cpp(123,1): error C2415: improper operand type
AssaultCube\AssaultCube\main.cpp(126,2): error C2059: syntax error: '}'
AssaultCube\AssaultCube\main.cpp(126,1): error C2143: syntax error: missing ';' before '}'
AssaultCube\AssaultCube\main.cpp(131,2): error C2143: syntax error: missing ';' before '{'
AssaultCube\AssaultCube\main.cpp(131,2): error C2447: '{': missing function header (old-style formal list?)
СУРС лишний скорее всего именно ошибки в том что просто нет реализации в мейне, но хотелось бы почитать как бы именно вы реализовали это
По возможности напишите пожалуйста как бы вы реализовали перехват функции прицела , нужен ли вообще для этого именно кодкейв? и можно ли как то иначе?. ( Но хотелось бы именно кодкейвом интересная штука ) вот как выглядит в иде эта функция
SOURCE:
C++:
#define _CRT_SECURE_NO_WARNINGS
#include "inc.h"
using namespace std;
typedef int (__cdecl* __edi_val)(HANDLE hProc, DWORD, DWORD, UINT);
HANDLE hProc;
DWORD pId;
DWORD attachProc(const char* procName)
{
PROCESSENTRY32 pEntry;
pEntry.dwSize = sizeof(pEntry);
HANDLE hSnapProc = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
while (Process32Next(hSnapProc, &pEntry))
{
if (!strcmp((char*)pEntry.szExeFile, procName))
{
hProc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pEntry.th32ProcessID);
cout << "hProc: " << hProc << endl;
pId = pEntry.th32ProcessID;
CloseHandle(hSnapProc);
return pId;
}
}
}
DWORD getModuleBase(DWORD pId, const char* pName)
{
MODULEENTRY32 mEntry;
mEntry.dwSize = sizeof(MODULEENTRY32);
HANDLE hSnapModule = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE|TH32CS_SNAPMODULE32, pId);
if (hSnapModule == INVALID_HANDLE_VALUE)
{
cout << "Failed to get snap of module " << endl;
return false;
}
while (Module32Next(hSnapModule, &mEntry))
{
if (!strcmp((char*)mEntry.szModule, pName))
{
cout << "hSnapModule: " << hSnapModule << endl;
CloseHandle(hSnapModule);
return (DWORD)mEntry.modBaseAddr;
}
}
}
DWORD CalcPtr(HANDLE hProc, DWORD ptr, vector <unsigned int> offsets)
{
DWORD addr = ptr;
for (unsigned int i = 0; i < offsets.size(); i++)
{
ReadProcessMemory(hProc, (LPVOID)addr, &addr, sizeof(addr), 0);
addr += offsets[i];
}
return addr;
}
template <class data_type>
data_type wpm(data_type addr, DWORD value)
{
WriteProcessMemory(hProc, (LPVOID)addr, &value, sizeof(data_type), 0);
}
template<class data_type>
data_type rpm(data_type address)
{
data_type buffer;
ReadProcessMemory(hProc, (LPVOID)address, &buffer, sizeof(data_type), 0);
return buffer;
}
class cavedata
{
public:
DWORD ori_call_address = 0x4607C0;
DWORD ori_jump_address = 0x0040ADA2;
DWORD edi_val = 0;
unsigned char* hook_location = (unsigned char*)0x0040AD9D;
__declspec(naked) DWORD caveFunc()
{
__asm {
call ori_call_address
pushad
mov edi_value, eax
if (edi_value != 0) {
input.type = INPUT_MOUSE;
input.mi.dwFlags = MOUSEEVENTF_LEFTDOWN;
SendInput(1, &input, sizeof(INPUT));
}
else {
input.type = INPUT_MOUSE;
input.mi.dwFlags = MOUSEEVENTF_LEFTUP;
SendInput(1, &input, sizeof(INPUT));
}
_asm {
popad
jmp ori_jump_address
}
}
}
};
DWORD __cdecl RemoteThread(cavedata* cData)
{
__edi_val TriggerVal = (__edi_val)cData->caveFunc();
TriggerVal(NULL, cData->ori_call_address, cData->ori_jump_address, MB_ICONINFORMATION);
return EXIT_SUCCESS;
}
int main()
{
DWORD pId = attachProc("ac_client.exe");
DWORD mBase = getModuleBase(pId, "ac_client.exe");
cout << hex << "Pid " << pId << endl;
cout << hex << "Mbase " << mBase << endl;
vector <unsigned int> oHPoff = { 0xF8 };
DWORD hpBase = 0x00109B74;
DWORD basehpaddr = mBase + hpBase;
DWORD baseaddr = CalcPtr(hProc, basehpaddr, oHPoff);
}
Дополнение: 1. менял языковой стандарт с 14 по последнюю
2. Пихал crt хуйню в препроцессор
3. Копипастил дохуя кода из других видосов но видимо не смог адаптировать
и немного о том как я вообще что то узнаю ведь я онли копипаст и говорить мне смысла нет даже один хуй ебанат
скажу сразу что я просто ищу готовое решение дальше уже по нему пытаюсь узнать логику работы этого всего ведь если изучать то что не работает ну такое себе сами понимаете поэтому мне надо что то что работает после чего уже буду лезть в тонкости базы если так можно выразиться xD но нужен начальный толчок хотя бы, спасибо за выслушивание моего сочинения просто накипело конкретно так