| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Как это сделать? |
| Автор: dead_ricky 3.2.2003, 14:46 |
| Может вкурсе, есть такая прога - ArtMoney, с помощью нее можно у игрушек (и нетолько) делать деньги ну и т.д. во время самой игры. Принцип такой, че у тя етсь какое-то значение в игре (денег), ты Alt-Tab'ом переключаешься на ArtMoney, выбираешь из списка процессов свою игруху и вводиш в некоторое поле значение искомой переменной (денег там или еще че-нить), находиться доху.. всякой шняги. Так вот, потом по ходу игры твоя переменная изменяется (че-нить построил - денег стало меньше), ну и обратно перелазишь в ArtMoney вводишь текущее значение и из раннее найденных "переменных" отсеивается ложные. И так находишь то что те надо и делаешь сколько надо. Так вот, как это программно выглядит, может кто знает? З.Ы. Только не пишите, че мол это относиться к взлому, а это хороший форум иди мол на другой форум и спрашивай там... как-то такое было. Лучше тогда вообще не пишите. Еще один З.Ы. Зараннее благодарен |
| Автор: brb 3.2.2003, 16:56 | ||||||
Так писать НЕЛЬЗЯ!!! |
| Автор: Baa 3.2.2003, 18:00 |
| dead_ricky Делается довольно просто... спецом для таких читеров GameWizard сделали дллку, чтобы все проще было. Объяснять технологию поиска значения не буду, смори описание на ReadProcessMemory WriteProcessMemory з.ы. впредь фильтруй базар :\ |
| Автор: Step 3.2.2003, 23:46 |
| Baa ну ты спец, может чу-чуть распишеш... |
| Автор: man2002ua 4.2.2003, 00:09 |
| Недавно сделал себе такую утилитку, к-я ищет переменные значения. Heroes of Might and Magic III на Duron 1.3/256 находит значения за 2 минуты (драконов себе поставил несколько сотен - тут же интерес к игре пропал - не советую так играть). Она не требует точного значения переменной, достаточно сказать ей - уменьшилось, увеличилось или не изменилось, плюс режим уменьшилось/увеличилось на "число" и режим поиска точного числа. Ну и конечно возможность изменения переменной. |
| Автор: Step 4.2.2003, 00:19 |
| man2002ua кинь исходник если не жалок step_sf@rambler.ru |
| Автор: Baa 4.2.2003, 02:11 |
| Вот простой пример... на самом деле так делать не стоит, но суть дела он отражает... char test[] = "test"; AfxMessageBox (test); char* lpBuffer = new char [0xFF]; ZeroMemory (lpBuffer, 0xFF); DWORD dwRead = 0; DWORD *offset = 0; while (true) { ReadProcessMemory (GetCurrentProcess (), offset, lpBuffer, 4, &dwRead); if (!strcmp (lpBuffer, "test")) { strcpy (lpBuffer, "gggg"); WriteProcessMemory (GetCurrentProcess(), offset, lpBuffer, 4, &dwRead); break; } offset++; } AfxMessageBox (test); delete [] lpBuffer; |
| Автор: Step 4.2.2003, 02:29 | ||
|
| Автор: Baa 4.2.2003, 19:32 |
| На какие-такие подозрения? ясное дело, что ищу в своем процессе... хочешь искать в чужом? юзай OpenProcess или CreateProcess для получения хэндла на чужой процесс... я просто показал как работать с функциями ReadProcessMemory и т.д., мне ж не сказали, че конкретно вы хотите увидить |
| Автор: Step 4.2.2003, 19:37 | ||
|
| Автор: man2002ua 5.2.2003, 00:03 |
| Step - не жалко, только полную версию не дам, извини. Дам шаровую, в к-й нет делать определенные настройки типа - сканировать только заданную область процесса и искать значения типа byte, dword и изменять значения тоже нельзя (кажется). Сейчас закончу защиту вешать и вышлю. |
| Автор: dead_ricky 6.2.2003, 19:29 |
| 2 All: очень sorry 2 man2002ua: отправь плз мне тоже исходник на мыло dead_ricky@mail.ru |
| Автор: man2002ua 6.2.2003, 19:35 |
| dead_ricky, какой еще исходник? Версия сырая и не распространяется! Могу только идею рассказать |
| Автор: Step 6.2.2003, 20:14 |
| man2002ua Cпасибо и на этом |
| Автор: dead_ricky 14.2.2003, 00:27 | ||
Раскажи тогда идею, только как можно подробней. Лучше со вставками коды. Буду очень признателен |
| Автор: Baa 14.2.2003, 00:41 |
| dead_ricky помойму вся идея из моего кода ясна была... если уж по нему не понял... |
| Автор: man2002ua 14.2.2003, 00:49 |
| Идея: 1) открыть процесс; 2) сохранить образ страниц памяти с атрибутами PAGE_READWRITE и MEM_COMMIT, используя функцию VirtualQueryEx; 3) дождаться изменения переменной - пройти по всем страницам - выбирая изменившиеся значения; 4) Освободить память от страниц, переменные в к-х не изменились, а старый слепок памяти - заменить новым. 5) Варить так несколько раз - до готовности. Желательно все оптимизировать, а то выжрет всю память. |
| Автор: Baa 14.2.2003, 17:34 |
| man2002ua чтоб память не выжрало можно свапить... и можно сохранять не весь слепок, а токо смещения... |
| Автор: dead_ricky 2.3.2003, 19:40 | ||
Отдыхай, понял |
| Автор: man2002ua 3.3.2003, 18:13 |
| Baa, cохранять смещения чего? И смысл в свапаньи (это при винде-то |
| Автор: Baa 4.3.2003, 03:57 |
| dead_ricky кажется мне хамят? впрочем ладно, спишем на трудное время... 1. раз ты искал этим куском инт или флоат, то ты ничего не понял из моего кода 2. я никому ничего давать не собираюсь, а тем более при такой постановке вопроса, даже не вопроса, а требования. 3. без комментариев man2002ua дык можно сохранять смещения найденных значений в памяти, и в след. раз смореть изменения токо по этим смещениям... если захочешь поговорить на эту тему - пиши. з.ы. тема закрыта. |