Перейти к содержанию

Beatle

Стажёры
  • Постов

    10
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные Beatle

  1. Это из-за Юникода. Дописывай префикс "L" или отключи Юникод в свойствах проекта
    Спасибо, отключение юникода помогло, а префикс нет. В нете нарыл, что нужно ставить А - с ним ошибки не было.

    Сорри за офтоп.

  2. Нашел в нете немного другой код первого примера, но там все равно ругается компилятор на название игры

    #include <iostream>
    #include <windows.h>

    using namespace std;

    int main()
    {
    HWND hWnd;
    DWORD dwID;
    HANDLE hProcess;

    hWnd = FindWindow(NULL, "3D Pinball for Windows - Space Cadet");

    GetWindowThreadProcessId(hWnd, &dwID);

    hProcess = OpenProcess(PROCESS_ALL_ACCESS, NULL, dwID);

    int value = 1000000;

    WriteProcessMemory(hProcess, (LPVOID) 0x00C20C62, (LPVOID) &value, sizeof(&value), NULL);

    return 0;
    }

    Дело в самом компиляторе или что я делаю неправильно?

  3. Попытался компильнуть в MV C++ 2010 первые 2 примера. На оба примера компиллятор выругался. В первом случае подчеркнул

    ProcessWriteMem(HANDLE hProcess, DWORD Address, void* p_value, BYTE size) и hWnd = FindWindow(NULL, "3D Pinball for Windows - Space Cadet");

    , а во втором

    if(strcmp(pe32.szExeFile, "WarRock.exe") == 0)

    error C2664: 'strcmp' : cannot convert parameter 1 from 'WCHAR [260]' to 'const char *'

  4. Это можно поправить изменив исходники Cheat Engine. При чем это не просто. А без знаний языка программирования почти не реально.

    Так, что крупный облом  вышел с "привязкой" для автономных трейнеров на CE ;)  

    Абидна... :blink: Но и за это пасиб!

  5. Если писал механизм упаковки сам - сам его и перепиши на нужный манер. Если не сам - напиши хотя бы название пакера.

    Дело не в пакере, а в СЕ. После ввода ключа привязки и запуска, чистый трейнер оказывается в папке ТЕМП откуда его можно тупо скопировать. Как это поправить можно?

  6. Озадачен вопросом поднятым в уже закрытой теме. Запаковать трейнер в принципе не проблема, но проблема возникает после его запуска. "Чистый" Трейнер.exe при запуске обнаруживается в папке ТЕМП, откуда может быть без особый усилий скопирован и нормально функционировать на любой машине. Если кто уже решал аналогичный вопрос - поделитесь инфой плз! Если не готовым решением, то где можно покопать?

  7. Писал скрипт поиска и замены значений по хоткею, поглядывая на скрипт управлением спидхаком. Чувствую что решение близко, но уже мозг не варит. Скажите плз, где косяк и может можно его еще оптимизировать?

    EnableHotkey =1
    function rwr()
    hideAllCEWindows()
    showMessage("START?")
    results=AOBScan("67 2B 00 00", "+W-C-X")
    if (results~=nil) then
    count=stringlist_getCount(results)
    if (count>1) then
    function No(hotkey)
    for i = 0, (count-1), 1 do
    address=stringlist_getString(results,i)
    if (EnableHotkey==1) then
    value = 22222
    writeInteger(address,value)
    end
    end
    function Norma(hotkey)
    for i = 0, (count-1), 1 do
    address=stringlist_getString(results,i)
    if (EnableHotkey==1) then
    value = 11111
    writeInteger(address,value)
    end
    end
    end
    end
    object_destroy(results)
    results=nil
    end
    showMessage("OK")
    end

    function myattach(timer)
    if getProcessIDFromProcessName("game.exe") ~= nil then
    object_destroy(timer)
    openProcess("game.exe")
    rwr()
    else
    showMessage("Client not found")
    closeCE()
    end

    f=createForm(false) --create an invisible window
    t=createTimer(F);
    timer_setInterval(t,100) --10 might have been too fast for xp...
    timer_onTimer(t,myattach)
    end
    end

    function SetHotKey(func, hotkey)
    local objectHotKey = createHotkey(func, hotkey)
    generichotkey_setKeys(objectHotKey, hotkey)
    generichotkey_onHotkey(objectHotKey, func)
    end

    function onOpenProcess(processid)
    SetHotKey(No, VK_R)
    SetHotKey(Norma, VK_V)
    end

  8. Пасиба за подсказки, но быстро решить эту тривиальную задачу мне будет проблематично. Это первый скрипт который хочу написать. Если не затруднит, хоть какой-нить маленький примерчик, либо ссылку на пример. Просьба конечно нубская, но пока я проштудирую мануалы задача может потерять актуальность... ))

    Я надеялся что есть оператор который позволяет просто заменить одни значения байт на нужные без разбивки на адреса, но ситуация, как понимаю, усложняется... (

  9. У AOBScan могут быть параметры сканирования (ищите описание).

    Пример функции возвращающей первый найденный адрес сигнатуры в типе областей памяти с защитой "выполнение кода".


    function ByteScan(signature) -- return address
    local results = AOBScan(signature, "+X-C-W")
    if (results == nil) then
    messageDialog("Ошибка. Не найден адрес внедрения.\n\rТрейнер будет закрыт!",1, 2)
    closeCE()
    return
    end

    local address = stringlist_getString(results, 0)
    return address
    end

    Я так понимаю, что AOBScan мы можем найти заданный массив байт? У меня задача отыскать большой массив (х х х х х х х х х х х х х) и заменить его на (у у у у у у у у у у у у у) С поиском и заменой значения в адресе проблем нет, а вот как быть с массивом? Подскажите плз.

    Важно отметить, что можно работать с несколькими возвращаемыми адресами, а не только с первым как это было в автоассемблере.
    Как быть, если таких массивов будет несколько?

    Пересмотрел операторы языка, но подходящего не разглядел. :-[

    ЗЫ Если не туда запостил, сорри.

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.