-
Постов
2 999 -
Зарегистрирован
-
Победитель дней
129
Тип контента
Профили
Форумы
Загрузки
Блоги
Сообщения, опубликованные MasterGH
-
-
Спасибо. Очень было интересно посмотреть на эту схему. В ней даже есть текст кода для обработчиков игровых событий. Молодцы, разработчики, у них было меньше временных затрат с перекомпиляцией. Я там увидел по 822 строчке к примеру:
<Bitmap Name="bmpInventory_HeroHealthTorseInactive">
<Position x="730" y="66"/>
<Size x="82" y="138"/>
<Material MaterialID="_control_2">
<Position x="329" y="1690"/>
<Size x="82" y="138"/>
</Material>
</Bitmap>
<Bitmap Name="bmpInventory_HeroHealthTorseActive" Visible="false">
<Position x="730" y="66"/>
<Size x="82" y="138"/>
<Material MaterialID="_control_2">
<Position x="565" y="1690"/>
<Size x="82" y="138"/>
</Material>
</Bitmap>
<Bitmap Name="bmpInventory_HeroHealthTorseMask" Opacity="0.5">
<Position x="730" y="66"/>
<Size x="82" y="138"/>
<Material MaterialID="_control_2">
<Position x="81" y="1687"/>
<Size x="82" y="138"/>
</Material>
</Bitmap>
<Custom Name="customInventory_HeroHealthTorseBox">
<Position x="735" y="74"/>
<Size x="72" y="125"/>
<OnMouseIn>
SetStaticProperty(curWidget,"../bmpInventory_HeroHealthTorseInactive@Visible",false);
SetStaticProperty(curWidget,"../bmpInventory_HeroHealthTorseActive@Visible",true);
SetStaticProperty("lblInventory_HeroInventoryMoneyValue","@Text",tostring(Game.GetHeroHealth("Torse")));
</OnMouseIn>
<OnMouseOut>
SetStaticProperty(curWidget,"../bmpInventory_HeroHealthTorseInactive@Visible",true);
SetStaticProperty(curWidget,"../bmpInventory_HeroHealthTorseActive@Visible",false);
</OnMouseOut>
<OnDragAndDrop>
do
local ptrDragged = GetDraggedWidget();
if GetStaticProperty(ptrDragged,"@Name") == "icontblInventory_HeroInventoryTable" then
local nPID = GetDynamicProperty(ptrDragged,"PID");
local nRealIndex = IconTable.GetIconDataAsNumber(ptrDragged,GetStaticProperty(ptrDragged,"@CurIcon"));
Game.AddHeroHealth("Torse",Control.GetInventoryItemInfo(nPID,nRealIndex,"s"));
end
end
</OnDragAndDrop>
</Custom><!-- Torse -->
Меня заинтересовал:
do
local ptrDragged = GetDraggedWidget();
if GetStaticProperty(ptrDragged,"@Name") == "icontblInventory_HeroInventoryTable" then
local nPID = GetDynamicProperty(ptrDragged,"PID");
local nRealIndex = IconTable.GetIconDataAsNumber(ptrDragged,GetStaticProperty(ptrDragged,"@CurIcon"));
Game.AddHeroHealth("Torse",Control.GetInventoryItemInfo(nPID,nRealIndex,"s"));
end
end
</OnDragAndDrop><OnDragAndDrop>
Это код обработчика перетаскивания на виджет торса.
Функция пытается "добавить здоровья торсу" от свойства элемента который перетаскивается на "торс" :
Game.AddHeroHealth("Torse",Control.GetInventoryItemInfo(nPID,nRealIndex,"s"));
По всей "схеме" можно поколдовать ) Но лучший вариант всё же не в редактировании этого файла. Будет время я что-нибудь сделаю и отпишусь.
-
Вы даже не представляете как далеко пошёл Дарк Байт. Он "прикручивает" настоящую IDE к Cheat Egine по существующим компонентам. А это предвестник того, что трейнеры начнут штамповать LUA скриптами. Которые будут сверхмалых размеров по сравнению с автономными трейнерами написанными даже на ассемблере.
Но радоваться ещё рано, т.к. это дело на 100% не работает пока. Например, Control_SetCaption и Control_GetCaption пока не работают. Но обработчики события работают в связке с IDE, но не генерируются автоматически в LUA-консоле. Так же можно было видеть что добавлена подсветка. Как бы там не было, грядут большие перемены в создании трейнеров - сверх малых размеров.
-
Если два или более бряков срабатывают один за другим, то можно быстро найти «развилку»
Сначала ставим оба бряка и делаем так чтобы один из них сработал.
Затем пускаем трейс по ретам в OllyDbg (ctrl+F12)
Вновь прервыемся и отпускаем игру по F9.
В итоге мы останавливаемся в месте развилки.
На рисунке сначала прервались на нажатии кнопки, а после проведенных действий мы оказались на развилке – начале пути до инструкции записи значения маны в адрес маны. Таким образом мы быстро определили ветку кода, которую необходимо исследовать внутрь. Иногда это бывает очень полезно.
-
Для кому интересно как использовать поток в скриптах CE
alloc(mycode,4096)
CREATETHREAD(mycode);
mycode:
mov eax,[gamex.dll+123456]
mov ebx,[eax+4c]
mov [eax+48],ebx
push #1000
call sleep
jmp mycodeВ данном случае здесь заморозка с частотой в 1-ну секунду.
А вот мой пример скрипта для GTA SAN Andreas. Скрипт заполняет данные структуры игрока один раз
//mov [[00B6F3B8]+n*1c+5a8]],1
//mov [[00B6F3B8]+n*1c+5ac]],1
//где n =[1..12]
[ENABLE]
alloc(tred,200)
registersymbol(tred)
label(x1)
tred:
push eax
push ecx
push ebx
xor ecx,ecx
mov eax,[00B6F3B8]
add eax,5a8
x1:
inc ecx
imul ebx,ecx,1c
mov [eax+ebx],1// mov [[00B6F3B8]+n*1c+5a8]],1 - в обойме
mov [eax+ebx+4],1// mov [[00B6F3B8]+n*1c+5ac]],1 - общие патроны
cmp ecx,c
jne x1
pop ebx
pop ecx
pop eax
call GetCurrentThread
ret
createthread(tred)
[DISABLE]
dealloc(tred)Инструкцию call GetCurrentThread я ипользовал для корректного получения указателя на поток (хотя думаю можно было бы сделать иначе, но пока я не исследовал это дело). GetCurrentThread кладёт в eax указатель на данный поток и ret поток закрывает.
-
-
-
Эта ссылка ничем не поможет.
Это инсталлятор на lazarus-0.9.28.2-fpc-2.2.4-win32.exe. Старая версия IDE, старый компилятор. Cheat Engine не скомпилируешь.
-
-
А я тем временем написал lua-скрипт, отображающий цифровое значение здоровья частей тела при наведении на них (в инвентаре ноги-руки можно выделять и их здоровье отобразится снизу вместо денег) Почему в графе денег? Потому что графа здоровья выводит только целые, а в деньгах тип float отображается корректно. Если кому будет интересно, могу поделиться lua-скриптом, хотя толку от него немного...
Поделись
-
(если число заморозить, то перезайдя в инвентарь увидим, что и там число изменилось, но без заморозки тут же восстанавливаеся в первоначальное значение
Тут надо ставить бряк на запись и следить каким образом идёт запись восстановленного значения.
-
У меня идеи по структуризации тем и разделов по Cheat Engine модернизациям. Но сначала необходимо разобраться с тем как компилить Cheat Engine. Пока мне не удалось в этом разобраться если кто сможет, то пишите.
Для начала следующая информация.
Для компиляции текущего CE требуется Lazarus IDE версии не ниже v0.9.29, рекомендуется v0.9.31. Также требуется последний компилятор Free Pascal. Я предполагаю, что Dark Byte (DB) постоянно следит за последними обновлениями исходники этих инструментов. Компилирует их и затем компилирует ими Cheat Engine. Если он это делает не часто, то по крайне мере может сделать в любой момент и тогда новые исходники CE 6.xx мы уже не скомпилим и будем искать решение вместо того чтобы найти его сейчас. Это означает, что нам.
1. Этап
1) Скачиваем и пользуемся TortoiseSVN создав папку SVN в ней будет другие SVN-папки:
2) Закачиваем с помощью TortoiseSVN SVN-cheatEngine по ссылке http://ce.colddot.nl/svn
3) Закачиваем SVN-freePascalCompiler по ссылке http://svn.freepascal.org/svn/fpc/
4) Закачиваем SVN-IDELazarus по ссылке http://svn.freepascal.org/svn/lazarus
Таким образом всегда можно получать новые исходники. Я не знаю, возможно вы не захотите скачивать некоторые папки, но это уже Ваше решение.
2. Этап.
Потребуется компилировать все инструменты.
Пока у меня получилось скомпилировать freepascal. Позже я напишу как это сделал. Но у меня не получилось собрать Lazarus. После его компиляции, настроек необходимых путей можно будет компилировать Cheat Engine 6.0... Также есть здесь обсуждение.
А вообще мне не очень нравится этот гемморой на самом деле, но что делать - придётся.
-
Я с тобой согласен. Я написал эту тему, т.к. мне было самому интересно и на этих инструментах была написана CE 6.0. Соответственно модификации делать можно этими инструментами. Кстати автономные трейнеры прикрученные к CE6.0 будут весит около 15 мб - писал Дарк байт. Но если "обрезать" выше описанными способами, то думаю чуть больше 2 метров. В CE 5.6 версиях трейнер весил ~800 кб с картинкой. ИМХО разница большая. Но LUA-скрипты в таблицах CE - это сверх компактный трейнер, который будет работать если установлена CE.
...Также стоит учитывать, что эти инструменты гибче Дельфи, они свободные и их можно продавать и другие могут продавать, то что продают первые - такая вот лицензия.
-
Скачайте последний кряк с плейграунда иначе запаритесь с защитой. Как админ вынужден напомнить, что вся ответсвенность за его использование лежит за вами.
У меня один раз игра подвисла, после того как я сделал иньекцию CE. Но игра была в оконном режиме и я с помощью клавиатуры убил процесс CE 6,0- всё закрылось - не пришлось перезагружаться. Возможно, это заморочки CE 6.0 и следует покапаться в её настройках. В следующий раз я сделал иньецию на дельнги снова и затем тут же выключил и больше у меня ничего не зависало.
Сигнатуру кода не привожу, т.к. некогда было её делать. Инструкция "game.dll"+F251: срабатывает, когда пользователь лезет в инвентарь и в этот момент у него становиться 9999999 песо. Но они отнимаются, когда пользователь что-то покупает.
[ENABLE]
alloc(newmem,2048)
label(returnhere)
label(originalcode)
label(exit)
newmem:
mov [eax+00000CC4],#9999999
originalcode:
mov eax,[eax+00000CC4]
exit:
jmp returnhere
"game.dll"+F251:
jmp newmem
nop
returnhere:
[DISABLE]
dealloc(newmem)
"game.dll"+F251:
mov eax,[eax+00000CC4]
//Alt: db 8B 80 C4 0C 00 00Перейдём к читу здоровья.
В вашем Xenuse
Есть два адреса здоровья:
Один статический, а другой динамический.
Если на динамический постравить бряк, то прервёмся здесь (у вас может быть другая dll-ка)
game.dll+79BF3 - F3 0F11 99 98100000 - movss [ecx+00001098],xmm3
game.dll+79BFB - 33 C0 - xor eax,eax
game.dll+79BFD - 8D 91 7C0C0000 - lea edx,[ecx+00000C7C]
game.dll+79C03 - 56 - push esi
game.dll+79C04 - 0FB6 F0 - movzx esi,al
game.dll+79C07 - 83 FE 05 - cmp esi,05
game.dll+79C0A - 77 11 - ja game.dll+79C1DЗдесь нужно посмотреть по ecx начало структуры.
В сканере памяти ввести поиск адресов от ecx, до где-то ecx + 0x1098+0x2000 = ecx + 0x3098;
Вам нужно закупиться всякими шприцам взломав деньги. И наблюдать например за ногами. Сложность поставьте лёгкую чтобы боты стреляли по ногам чаще.
Ну так вот поставьте поиск в MHS значения float. Всегда делайте первый отсев: уменьшилось, увеличилось, не изменилось(если уверены) и + дополнительный отсев по промежутку от 0,0 до 1,0.
Возможно, можно так найти адрес (у меня к сожалению оврал со временем и в выходные тоже не будет)
--------
Ещё один способ поставить условнй бряк в CE на (см. выше)
game.dll+79BF3 - F3 0F11 99 98100000 - movss [ecx+00001098],xmm3
Процесс игры должен остановиться.
Зделайте трейс на 5000 или более инструкций (если что-то подвиснет, то минут через 10 отвиснет, не вздумайте это делать в полноэкранном режиме)
Посмотрите вверх по коду как значение попадает в xmm3. Изучите инструкции SIMD.
1) Можете следить есть ли выше по коду этот xmm3 (я к сожалению его не увидел на три уровня вверх). Если нет заглядывайте в выше стоящие call-ы ставя условные бряки (если не знаете как делать то не делайте этого) - я это не успел сделать.
2) Я точно не помню, по моему есть инструкция которая крутит регистры XMM как барабан вверх или вниз смещая их.Значит от инструкции
game.dll+79BF3 - F3 0F11 99 98100000 - movss [ecx+00001098],xmm3
нужно искать либые инструкции которые поместили значение в xmm3. Обращайте внимание на циклы. Потому что в xmm3 - это явно результат цикла.
3) Соледующие действия тоже могут помочь.
Сделайте так чтобы game.dll (она запротокчена старфорсом) распаковалась в памяти игры (просто запустите её). Сохраните её дамп и проанализируйте IDA + hexarrays. Испольузуйте Petools
Могут быть и другие подходы, которые более быстро помогут, но у меня не было времени изучить это дело.
Пока всё.
-
Я могу предположить с точностью до 90% как я там схема, хотя я не видел этой игры даже на скриншотах, кроме того который ты привёл.
Скорее всего, общее здоровье солдата состоит из суммы значений. Левая и правая нога и рука, тело, голова.. Также защита на голове - шлем, броня на теле. Если действительно там такая "схема здоровья", то я бы постарался отсеивать значения 4 байта с точкой когда меняется состояние от нормального к плохому и наоборот определённой части тела например туловища. Я бы взял бы побольше аптечек и попадал бы изредка под обстрел. Это самый простой вариант выйти на адреса здоровья. Они могут находится скорее всего рядом друг с другом, а могут и на каком-то расстоянии... В прошлой какой-то игре я нашёл адрес полоски здоровья и вышел по коду вверх на цикл где складывалось состояние каждой части тела и обмундирования. Так что вот так вот.
-
Создание формы на WinAPI:
Lazarus IDE - v0.9.28.2 Beta
Free Pascal - v2.2.4
{$APPTYPE GUI}
Program Api;
{$MODE DELPHI}
uses
windows, messages;
var
window:TWndClassEx;
Mwindow: HWND;
Mmsg: MSG;
function WindowProc (wnd: HWND; msg: integer; wparam: WPARAM; lparam: LPARAM):LRESULT;STDCALL;
begin
case msg of
WM_Destroy:
begin
PostQuitMessage (0);
Result := 0;
Exit;
end;
else
Result := DefWindowProc(wnd,msg,wparam,lparam);
end;
end;
begin
window.cbSize := sizeof (window);
window.style := CS_HREDRAW or CS_VREDRAW;
window.lpfnWndProc := @WindowProc;
window.cbClsExtra := 0;
window.cbWndExtra := 0;
window.hInstance := HInstance;
window.hIcon := LoadIcon (0,IDI_APPLICATION);
window.hCursor := LoadCursor (0,IDC_ARROW);
window.hbrBackground:=Color_BtnFace+12;
window.lpszMenuName := nil;
window.lpszClassName := 'Main_Window';
RegisterClassEx (window);
Mwindow := CreateWindowEx(0,'Main_Window','First_WinAPI_Programm', WS_OVERLAPPEDWINDOW,100,100,300,300,0,0,Hinstance,nil);
SHOWWINDOW (Mwindow,SW_Show);
while GetMessage (Mmsg,0,0,0) do
begin
TranslateMessage (Mmsg);
DispatchMessage (Mmsg);
end;
end.Этапы работы "напильником":
1) 63 КБ не в сжатом виде (23 КБ - упакован в архив .rar)
2) Удалив отладочную инфорамцию батником:
cd lazarus
D:\SOFT\lazarus\fpc\2.2.4\bin\i386-win32\strip.exe --strip-all project1.exeПолучаю 38 КБ(17 КБ - упакован в архив .rar)
3) Открываем "Проект -- Параметры компилятора -- Код"
Ставим галку напротив "Умное связывание (-CX)"
Переходим на вкладку "Связывание" и убираем галку напротив "Выдать номера строк в ошибках времени исполнения (-gl)"
Тут же ставим галку напротив "Вырезать символы из бинарника (-Xs)" - эту же самую функцию выполняет утилита strip.
Тут же савим галку на "Умное связывание (-XX)"
Жмем "Ок" и компилируем проект по новой.
Получаю 28 кб (13 КБ - упакован в архив .rar)
------
Но последние обновления (я их ещё не установил):
2009-10-25 lazarus-0.9.28.2-fpc-2.2.4-win32.exe (64.6 MB)
13.11.2010 Вышел релиз Free Pascal v2.4.2
Я думаю, даже если бы я установил обновления, то размер бы вряд ли бы уменьшился.
Пока вывод:
Получаю 28 кб (12 КБ - упакован в архив .rar)
Я не использовал пакеры, так что кому надо тот сам сделает.
Файл для исследования (секций и дизассемблерного кода) в аттаче: 3) project1.rar
-
Нормальная статья. Её поймут только те, кто делали хуки на COM бъекты.
Я правда не совсем понял зачем автор ставит бряки больше одного раза, когда можно было обойтись одним. Хотя может я и ошибаюсь, т.к. на память не помню описания DirectX-интерфейсов и инициализацию устройства... Если будет время, то я почитаю повнимательнее эту статью. А вообще автор статьи неправильно поступил описывая подробности как и что делать в OllyDbg без рисования сначала общей картины как он собирается вытаскивать указатель и из какой представляемой "логики кода" на коде С++ он собирается вытащить, и вообще какова логика кода стандартной инициализации устройства, и по каким смещения каких интерфейсов находятся методы возвращающие те или иные объекты... Будет время я прокомментирую эту статью нормально с примерами.
-
Народ, для того чтобы написать статью о компиляции CE6.0 нужна инфа по компиляции Lazarus после получения его исходников из SVN. Кто знает напишите )
А всё сам сделаю как будет время. Я уже нашёл информацию как компилировать Лезаруса.
-
Lazarus - свободно распространяемая IDE для компилятора Free Pascal Compiler, среды для разработки кросс-платформенных приложений на языке Free Pascal.
Содержит набор визуальных компонентов LCL (Lazarus Component Library). В настоящее время практически полностью поддерживает виджеты GTK1 и Win32 . В разработке находятся виджеты Carbon, WinCE и WinAPI.
Начиная с версии 0.9.26 поддерживает виджеты GTK2 и Qt
Реализован основной набор элементов управления
Поддерживает преобразование проектов Delphi
Имеет собственный формат управления пакетами
Поддерживаемые ОС: GNU/Linux, Microsoft Windows, Mac OS X, FreeBSD, WinCE
Как уменьшить размер EXE файла в Lazarus
Любой, даже небольшой проект в Lazarus, при компиляции создает EXE файл большого размера. Это связано с тем, что компилятор добавляет большое количество информации для отладчика. Когда это информация становится ненужной (например, после окончательной отладки программы) ее можно удалить.
Рассмотрим этот процесс на примере простой консольной программы, выводящей строчку "Hello, World!". Создаем новый проект: Файл ? Создать ? Project ? Console application. Добавляем строчку Write('Hello, World!'); после строк "{ add your program here }" в подпрограмме TMyApplication.DoRun. Теперь запускаем программу. Все, что она делает - это выводит строку текста в консольном окне и при этом занимает 1 154 845 байт (в случае приложения под Виндоуз размер может быть выше 11 МБ).
Начнем уменьшать размер. Первое, уберем информацию для отладчика из исполняемого файла: strip --strip-all project1.exe (здесь project1.exe - имя вашего бинарного файла). Новый файл project1.exe имеет размер 141 312 байт, т.е. в 8 раз меньше. Но на этом мы не остановимся.
Проведем еще один шаг уменьшения размера исполняемого файла с помощью бинарного упаковщика UPX. Команда для полного сжатия следующая: upx.exe --best project1.exe (упаковщик UPX должен лежать в той же папке, что и сама программа или же можно прописать путь в PATH до папки, где проинсталлирован упаковщик). В результате получим размер 54 272 байт, т.е. в 21 раз меньше первоначального размера.
Отметим, что порядок выполнения команд важен. Если запустить упаковщик, а потом команду strip, то результат будет значительно хуже (416 541 байт).
Для удобства вы можете создать пакетный командный файл compile.bat со следующим содержанием (подставив вместо project1.exe имя вашего исполняемого файла):
strip --strip-all project1.exe
upx.exe --best project1.exeТеперь, для того, чтобы уменьшить размер исполняемого файла достаточно просто запустить файл compile.bat.
Автор статьи: Ильдар Насибуллаев.
-
Новые изменения на форуме:
1) У пользователей группы "Разработчики" восстановлены рейтинги от минусовых рейтингов которые ставили бестолковые пользователи (в частности несчастные спамеры);
2) Теперь только привилегированные пользователи могут ставить рейтинг. В данном случае это право заслужили "Разработчики". Может быть позже будет ещё одна группа для постояльцев, которые также могли бы оценивать рейтинг, т.е. уровень.
3) Только что зарегистрировавшиеся пользователи проходят премодерацию сообщений какое-то время, после чего премодерация снимается. Это значит, что какое-то время Новые пользователи будут ждать когда их сообщения опубликуется. Когда пользователей будет очень много возможно администрации понадобятся помощники - супермодераторы и модераторы.
От администрации: Xipho и MasterGH
Мы ценим каждого нормального пользователя на нашем форуме. Спасибо за то, что вы с нами. Этот форум для вас и для нас.
-
Эта тема будет для тех кто желает изучить программирование и кому это всегда казалось очень сложным.
Я случайно нашёл идеальный вариант для вас: стильный, упрощенный и в то же время мощный, с описаниями на русском языке вариант - программирование на Small Basik. Ссылки которые я опубликую содержат настолько разжёванную информацию, что она позволит понять необходимые основы программирования и понять как учить язык программирования. Точнее не "учить", а воспринимать и понимать.
2) Руководство "С чего начать" (.pdf)
4) Детский уголок вундеркиндов: Учебники по программированию
Я несколько лет занимаюсь программированием и могу сказать, что в первую очередь для понимания "как заставить компьютер делать, то что вы хотите" нужно изучить самый простой язык программирования с доступным описанием, с хорошими примерами. Изучив один язык Вы сможете изучать другой вспоминая как вы изучали предыдущий. Поставьте для себя цель "написать некоторую программу" читайте и ищите примеры и тогда у вас в голове будет прояснятся каким образом достичь цели.
Напишите вашу первую программу:
s = "Привет, МИР!!!"
TextWindow.WriteLine(s)А вот интересный пример который будет ближе к концу руководства:
GraphicsWindow.BackgroundColor = "Black"
GraphicsWindow.PenColor = "LightGreen"
DrawTree()
Sub DrawTree
If (distance > 0) Then
Turtle.Move(distance)
Turtle.Turn(angle)
Stack.PushValue("distance", distance)
distance = distance - delta
DrawTree()
Turtle.Turn(-angle * 2)
DrawTree()
Turtle.Turn(angle)
distance = Stack.PopValue("distance")
Turtle.Move(-distance)
EndIf
EndSubЯ посмотрел функционал этой программы. В общем довольно скудный функционал. Но вот что есть из функций, что очень не плохо;
- математические функции
- работа со строками и текстом (класс Text, работа в консоле TextWindow)
- работа с массивами, списками (Stack, ImageList)
- работа с файлами
- работа с удалёнными соединениями, сетевыми методами (можно загрузить содержимое страницы, отфильтровать её содержимое, проанализировать, воспользоваться службой Гугль по составлению например графиков, получить график и сохранить как файл)
- работа с графикой (ImageList, Shapes и т.п.)
- работа с мышкой
- поддержка определения командной строки
- работа с часами
- работа с рабочим столом
- работа с Интернет-словарём
- размещение фотографий на сервисе Flick
- Класс Program (методы для работы с программой)
- Работа со звуками Класс Sound
- Работа с таймером класс Timer
- Черепашка Turtle готова выполнить ваши издевательства.
Вот и весь очень скромный набор этой программы. К сожалению здесь нет создания GUI элементов (кнопок, менюшек и т.п.) у окна формы.
Кому надо больше, обратите внимание на следующие продукты (именно в таком порядке):
Visual Basic 2010 Express (новичкам будет тяжело...писать трейнеры можно по статьям)
Visual C# 2010 Express (точно не для новичков...писать трейнеры можно по статьям)
Visual C++ 2010 Express (точно не для новичков; если будите писать трейнеры, то только по статьям которые найдёте и то у вас будет очень много вопросов)
Для веб-разработок:
Visual Web Developer 2010 Express
Другие инструменты в зависимости от ваших интересов найдёте сами.
Я привел бесплатные урезанные среды разработок (возможно без ограниченных сроков) в которых вы можете писать куда более продвинутые программы. Например, вы можете: создавать пользовательский интерфейс, а для гурманов взаимодействовать с программами из пакета Офисных программ: Ворд, Ексель и другие. Взаимодействовать с базами данных... Но у всех этих программных продуктов есть один недостаток, скорее это достоинство. Огромная документация, просто огромнейшая документация MSDN на русском языке для C# и Visual Basic.net. Если вы выберите C++, то пока не разберётесь с WinAPI, то ничего не напишите ) Потом ещё придётся разобраться с архитектурой Windows... Есть и другие языки программирования типа Дельфи (язык Паскаль)... сами решайте что вам легче
-
Хотел бы узнать в чём у тебя возникла сложность сделать бесконечное здоровье в "Xenus 2: Белое золото"?
-
Недавно вышла статья про обход Xlive - ссылка.
Например, там вы увидите следующее. Для того чтобы узнать какой код xlive проверяет сохранность кода игры, вы должны поставить "аппаратный бряк на доступ" на игровой код (подробности в статьи с видео)
-
За это не стоит благодарностей.
Я поднял за твоё умение писать сложные скрипты.
-
Оказался ты 1800 годах в России и понадобилось тебе из Москвы в Париж...
На велосипеде можно доехать из Москвы до Парижа.
На лошади можно доскакать...
На машине можно доехать из Москвы до Парижа.
На поезде можно доехать...
На самолете можно долететь из Москвы до Парижа.
В конце концов можно и пешком дотопать если очень долго идти.
Но самолётов тогда не было, машины были медленные... животное тебе нужно достать и на поезд не сесть. Машину достать проблема. На велосипеде как и пешком долго добираться. Но вот тебе подарили самую скоростную электронную машину с маркой LUA со сложной инструкцией. И ты всем сказал "да зачем она мне нужна, я эту инструкцию буду читать полмесяца, возьму я лучше велосипед и поеду на нём в Париж..." Так и уехал Akama в Париж на велосипеде с маркой Asm...
OllyDbg. Обнаружение устройства DirectX
in Olly Debugger
Опубликовано
По прежнему пока нет времени. Пока нашёл самый простой исходник по инициализации устройства.