Beatle
-
Постов
10 -
Зарегистрирован
-
Посещение
Тип контента
Профили
Форумы
Загрузки
Блоги
Сообщения, опубликованные Beatle
-
-
Нашел в нете немного другой код первого примера, но там все равно ругается компилятор на название игры
#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;
}Дело в самом компиляторе или что я делаю неправильно?
-
Попытался компильнуть в 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 *'
-
Чтоб исключить бесконтрольное распространение трейнера...А зачем вам это всё!? -
Это можно поправить изменив исходники Cheat Engine. При чем это не просто. А без знаний языка программирования почти не реально.
Так, что крупный облом вышел с "привязкой" для автономных трейнеров на CE
Абидна... Но и за это пасиб!
-
Если писал механизм упаковки сам - сам его и перепиши на нужный манер. Если не сам - напиши хотя бы название пакера.
Дело не в пакере, а в СЕ. После ввода ключа привязки и запуска, чистый трейнер оказывается в папке ТЕМП откуда его можно тупо скопировать. Как это поправить можно?
-
Озадачен вопросом поднятым в уже закрытой теме. Запаковать трейнер в принципе не проблема, но проблема возникает после его запуска. "Чистый" Трейнер.exe при запуске обнаруживается в папке ТЕМП, откуда может быть без особый усилий скопирован и нормально функционировать на любой машине. Если кто уже решал аналогичный вопрос - поделитесь инфой плз! Если не готовым решением, то где можно покопать?
-
Писал скрипт поиска и замены значений по хоткею, поглядывая на скрипт управлением спидхаком. Чувствую что решение близко, но уже мозг не варит. Скажите плз, где косяк и может можно его еще оптимизировать?
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 -
Пасиба за подсказки, но быстро решить эту тривиальную задачу мне будет проблематично. Это первый скрипт который хочу написать. Если не затруднит, хоть какой-нить маленький примерчик, либо ссылку на пример. Просьба конечно нубская, но пока я проштудирую мануалы задача может потерять актуальность... ))
Я надеялся что есть оператор который позволяет просто заменить одни значения байт на нужные без разбивки на адреса, но ситуация, как понимаю, усложняется... (
-
У 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 мы можем найти заданный массив байт? У меня задача отыскать большой массив (х х х х х х х х х х х х х) и заменить его на (у у у у у у у у у у у у у) С поиском и заменой значения в адресе проблем нет, а вот как быть с массивом? Подскажите плз.
Как быть, если таких массивов будет несколько?Важно отметить, что можно работать с несколькими возвращаемыми адресами, а не только с первым как это было в автоассемблере.Пересмотрел операторы языка, но подходящего не разглядел.
ЗЫ Если не туда запостил, сорри.
Программирование трейнеров на C/C++/VC++
in Низкоуровневое программирование
Опубликовано
Сорри за офтоп.