Другое С/С++ Вопрос - Ответ

Gabriel__

Известный
Проверенный
411
181
CLEO:
0AA2: 30@ = load_library "samp.dll" // IF and SET
0A8E: 1@ = 30@ + 457971 // int
0A8C: write_memory 1@ size 4 value 24216591 virtual_protect 1
0A8E: 2@ = 1@ + 4 // int
0A8C: write_memory 2@ size 2 value 0 virtual_protect 1
0A8E: 3@ = 30@ + 458004 // int
0A8C: write_memory 3@ size 4 value 22053903 virtual_protect 1
0A8E: 4@ = 3@ + 4 // int
0A8C: write_memory 4@ size 2 value 0 virtual_protect 1
0A8E: 5@ = 30@ + 458280 // int
0A8C: write_memory 5@ size 2 value 16500 virtual_protect 1
0A8E: 6@ = 30@ + 462648 // int
0A8C: write_memory 6@ size 2 value 24948 virtual_protect 1
0A8E: 7@ = 30@ + 462372 // int
0A8C: write_memory 7@ size 4 value 24218127 virtual_protect 1
0A8E: 8@ = 7@ + 4 // int
0A8C: write_memory 8@ size 2 value 0 virtual_protect 1
0AA3: free_library 30@
0AB2: ret 0
как это будет в C++
А зачем сдесь загружать и выгружать библиотеку ? И почему это вообще работает ?? Нужно же в уже в существующую samp.dll писать значение чтобы работало.
 

NarutoUA

NarutoUA
BH Team
692
1,535
Ну загружать видимо чтобы получить дескриптор модуля, а выгружать хз.
 

DarkExorcist

Новичок
77
3
Как в с++ использовать call, call_function или же call_method из клео. Точнее аналоги этих функций в с++
 

AWRage

Активный
642
141
Почему не работает? Хочу сделать массив массивов массивов%) (примерно так array[0][0][0]). Но чтобы количество элементов можно было увеличивать.
Код:
int lvl1 = 0;
int lvl2 = 0;
int lvl3 = 0;

void inc3(int *arr, int val)
{
    lvl3++;
    arr = (int *)realloc(arr, sizeof(int) * lvl3);
    arr[lvl3 - 1] = val;
}

void inc2(int **arr, int val)
{
    lvl2++;
    arr = (int **)realloc(arr, sizeof(int) * lvl2);
    inc3(arr[lvl2 - 1], val);
}

void inc1(int ***arr, int val)
{
    lvl1++;
    arr = (int ***)realloc(arr, sizeof(int) * lvl1);
    inc2(arr[lvl1 - 1], val);
}

void main()
{
        int ***arr = NULL;
        inc1(arr, 10);
}
 

Vasiliy77

Известный
22
1
Какие оффсеты нужны для создания диалога на 0.3.7? Юзаю код ниже, в результате диалог не отображается.
C++:
#define SAMP_DIALOG_SHOW 0x80320//
#define SAMP_DIALOG_INFO_OFFSET 0x2129F8//

showSampDialog(int send, int dialogID, int typedialog, char *caption, char *text, char *button1, char *button2)
{
    uint32_t    samp_dll = (uint32_t)GetModuleHandle("samp.dll");
    g_dwSAMP_Addr = (uint32_t)samp_dll;

    uint32_t func = g_dwSAMP_Addr + SAMP_DIALOG_SHOW;
    uint32_t data = g_dwSAMP_Addr + SAMP_DIALOG_INFO_OFFSET;

    __asm mov eax, dword ptr[data]
        __asm mov ecx, dword ptr[eax] //mov to offset
        __asm push send //0 - No send response, 1 - Send response
    __asm push button2
    __asm push button1
    __asm push text
    __asm push caption
    __asm push typedialog
    __asm push dialogID
    __asm call func
    return;
}
Думаю нужны другие адреса в #define, может знаете какие?
И 2 вопрос, как редактировать пункты в главном меню на Esc? Убрать какой-то например.
 
Последнее редактирование:
  • Нравится
Реакции: F0RQU1N and

AWRage

Активный
642
141
Как проверить что нужная клавиша была нажата, а не зажата.