misha Опубликовано 8 мая, 2012 Поделиться Опубликовано 8 мая, 2012 В скрипте задался открыть программу по событию. Глянул СЕ формат оператора shellexecute, выполняю скрипт, программа запускается, но выдает ошибку сама СЕ.Код открытия проги:shellExecute("C:\programma.exe")Ошибка:Error:Failure determining what programma.exe means Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 8 мая, 2012 Поделиться Опубликовано 8 мая, 2012 Это специфика языка Lua. Нужно использовать двойную косую черту. Одна косая черта это специальный символ.Примерpath = "D:\\CodeCH\\Trainer OOP\\Test\\Test.exe"shellExecute(path) Ссылка на комментарий Поделиться на другие сайты Поделиться
misha Опубликовано 8 мая, 2012 Автор Поделиться Опубликовано 8 мая, 2012 Сорри, у меня там и были 2 косые черты.А причину нашел- дебаггер СЕ не хочет воспринимать относительный адрес вида:address="programma.exe+9076"Если писать, явный:address=4204534,то все идет, но явного адреса я не знаю, он меняется пр и каждом запуске. Как быть? Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 8 мая, 2012 Поделиться Опубликовано 8 мая, 2012 1) Найти адрес;2) Найти инструкцию, которая с ним работает поставив на адрес брейкпоинт;3) Написать автоассемблерный скрипт, который будет записывать по адресу постоянное значение.На форуме можно найти много примеров.Дугой вариант искать цепочку указателей. Это может оказаться довольным долгим занятием. В прочем много времени может уйти на что угодно - это зависит от конкретной игры. Ссылка на комментарий Поделиться на другие сайты Поделиться
misha Опубликовано 17 мая, 2012 Автор Поделиться Опубликовано 17 мая, 2012 Привет всем. По теме еще вопросик:хочу выставить не явный путь к файлу, а сделать так. чтобы он пускался из той же папки, где лежит трейнер.Возможно ли такое?Вопрос отпал, уже дошло Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 17 мая, 2012 Поделиться Опубликовано 17 мая, 2012 Попробуй currentDir=io.popen"cd":read'*l'print(currentDir) Ссылка на комментарий Поделиться на другие сайты Поделиться
misha Опубликовано 17 мая, 2012 Автор Поделиться Опубликовано 17 мая, 2012 Спс!Угу, то понятно, что по умолчанию всегда будетт папка установленной СЕ, а я хотел, чтобы куда положишь трейнер и файл, и всегда файл запускался чз трейнер. Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 17 мая, 2012 Поделиться Опубликовано 17 мая, 2012 Попробуй выполнить код, который я привёл в автономном .exe трейнере. Ты же наверно такой тип трейнера используешь. Если использовать другие форматы: *.CT или *.CETRAINER или tiny exe, то их исполняет программа Cheat Engeine. Соответственно путь будет в первом случае трейнера, во втором случае Cheat Engine.Если нужно найти пути *.CT или *.CETRAINER или tiny exe, то такой функции я не нашёл. Можно конечно попробовать найти эти пути из внутренностей процесса CE, но мне лень. Ссылка на комментарий Поделиться на другие сайты Поделиться
misha Опубликовано 17 мая, 2012 Автор Поделиться Опубликовано 17 мая, 2012 Ага, выдало темп папку.D:\*\*\AppData\Local\Temp\cetrainers\CETB551.tmp\extracted Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 18 мая, 2012 Поделиться Опубликовано 18 мая, 2012 О, я не проводил эксперименты. Темп папку вывело, потому что трейнер распаковывается в неё и запускается оттуда. Тогда остаётся ещё несколько вариантов.1) Найти сигнатуру данных в одном из процессов трейнера, которая позволит добраться до пути;2) Попытаться через bat-файл найти имя пути;3) Попытаться через dll-файл это сделать;4) Попытаться это сделать через АА-скрипт (ищем процесс по имени и получаем его путь);5) Обратиться к Дарк Байту на форуме с этим вопросом, может он добавит Lua-команду;Я рекомендую написать на Visual Studio С++ консольную программку, которая получает директорию исполняемого файла по имени процесса (Вариант 4). Затем подсмотреть дизассемблированный код в отладке в Visual Studio. А затем переписать этот код на AA-скрипт. В нём ты по своей метке запишешь путь директории в которой находится трейнер и через Lua прочитаешь эту строку в переменную.Вот тебе пример с функцией PDirName. Эту функцию и надо подсмотреть в дизассемблере и переписать на АА.Author: KriPpLer#include <windows.h>#include <cstdio>#include <wtsapi32.h>#include <psapi.h>char procs[4096];/*///////////////////////////////////////Process username from Users sid*//////////////////////////////////////char* GetUserFromPID(PSID pUserSid){if (pUserSid == NULL)return false;SID_NAME_USE snu;char szUser[_MAX_PATH];DWORD chUser = _MAX_PATH;PDWORD pcchUser = &chUser;char szDomain[_MAX_PATH];DWORD chDomain = _MAX_PATH;PDWORD pcchDomain = &chDomain;strcpy(szUser, "Unknown");if (::LookupAccountSid(NULL, pUserSid, szUser, pcchUser, szDomain, pcchDomain, &snu)){return(szUser);}else{return("Unknown");}return(szUser);}/*///////////////////////////////////////Exe path from process ID*//////////////////////////////////////char* PDirName(DWORD PID){HANDLE Handle;char buffer[MAX_PATH];Handle = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, PID);if (Handle != 0){if (GetModuleFileNameEx(Handle, 0, buffer, MAX_PATH) != 0){return (buffer);}else{return ("Unknown");}CloseHandle(Handle);}}/*///////////////////////////////////////Process list*//////////////////////////////////////char* PrcList(){ZeroMemory(&procs,sizeof(procs));PWTS_PROCESS_INFO pProcessInfo;DWORD ProcessCount = 0;char szUserName[255];DWORD Id = -1;char buffer[4096];if (WTSEnumerateProcesses(WTS_CURRENT_SERVER_HANDLE, 0, 1, &pProcessInfo, &ProcessCount)){for (DWORD CurrentProcess = 0; CurrentProcess < ProcessCount; CurrentProcess++){Id = pProcessInfo[CurrentProcess].ProcessId;sprintf(buffer,"Name: %s Process Id : %d Username: %s Path: %s\n",pProcessInfo[CurrentProcess].pProcessName,Id,GetUserFromPID(pProcessInfo[CurrentProcess].pUserSid),PDirName(Id));strcat(procs,buffer);}}ZeroMemory(&pProcessInfo,sizeof(pProcessInfo));return (procs);}int main(){printf(PrcList());return 0;} Ссылка на комментарий Поделиться на другие сайты Поделиться
misha Опубликовано 18 мая, 2012 Автор Поделиться Опубликовано 18 мая, 2012 Спасибо большое. Попробуем. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения