|
29.03.2011, 16:36
|
#1
|
Элита
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений (для 1,012 пользователей)
|
Прога для подмены стауса(mra)
кароч,давно хотел написать прогу(тип вирусняк),которая бы подменяла статус в агенте(тупишь перехватывала идентификатор по mra и подменяла его).
как сделать,тупо менять в памяти нет смысла,да??
Последний раз редактировалось RegIon, 30.03.2011 в 11:55.
|
(Offline)
|
|
29.03.2011, 17:13
|
#2
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: Прога для подмены стауса(mra)
Костян, ты же в школе учишься, практикуй своё правописание пожалуйста. В топике пропускаешь буквы и пробелы, а в посту вообще ужас какой-то. Мы тут не сброд неучей и не грамотеев..
Хотя бы поставь плагин на броузер для проверки, ставится обычно очень просто и быстро.
|
(Offline)
|
|
30.03.2011, 10:28
|
#3
|
Дэвелопер
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений (для 1,540 пользователей)
|
Ответ: Прога для подмены стауса(mra)
Википедия на запрос MRA открыла страницу про мейл-агент. И каким же образом ты собираешься перехватывать идентификатор по MRA? И вообще - я ничего не понял. Ставь вопрос конкретно.
__________________
|
(Offline)
|
|
30.03.2011, 10:40
|
#4
|
Знающий
Регистрация: 08.11.2010
Адрес: Москва
Сообщений: 285
Написано 78 полезных сообщений (для 182 пользователей)
|
Ответ: Прога для подмены стауса(mra)
2костян:
Он давно обиделся на тебя .
|
(Offline)
|
|
30.03.2011, 11:56
|
#5
|
Элита
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений (для 1,012 пользователей)
|
Ответ: Прога для подмены стауса(mra)
Википедия на запрос MRA открыла страницу про мейл-агент. И каким же образом ты собираешься перехватывать идентификатор по MRA? И вообще - я ничего не понял. Ставь вопрос конкретно.
|
Вроде mra и протокол.....
|
(Offline)
|
|
30.03.2011, 12:51
|
#6
|
[object Object]
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,358
Написано 2,472 полезных сообщений (для 6,854 пользователей)
|
Ответ: Прога для подмены стауса(mra)
Сообщение от Костян
(тупишь перехватывала идентификатор по mra и подменяла его).
|
Тупишь? Кто тупит? Ты о чём?
Сообщение от Костян
тупо менять в памяти нет смысла,да??
|
Почему же? Есть смысл. Но искать запаришься.
Сообщение от Костян
перехватывала идентификатор по mra и подменяла его
|
По сети чтоль?
Тогда для начала почитай:
http://agent.mail.ru/ru/developers/protocol.html
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
|
(Offline)
|
|
30.03.2011, 17:56
|
#7
|
Дэвелопер
Регистрация: 21.11.2009
Адрес: Киев
Сообщений: 1,699
Написано 657 полезных сообщений (для 1,962 пользователей)
|
Ответ: Прога для подмены стауса(mra)
Сообщение от Leowey
2костян:
Он давно обиделся на тебя .
|
>Он давно обиделся на тебя
>обид елся
|
(Offline)
|
|
30.03.2011, 19:35
|
#8
|
|
Ответ: Прога для подмены стауса(mra)
Сообщение от baton4ik
>Он давно обиделся на тебя
>обиделся
|
все верно, через е
|
|
|
Эти 3 пользователя(ей) сказали Спасибо за это полезное сообщение:
|
|
31.03.2011, 13:52
|
#9
|
Элита
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений (для 1,012 пользователей)
|
Ответ: Прога для подмены стауса(mra)
Почему же? Есть смысл. Но искать запаришься.
|
артмани в зубы и пошел,вот я думаю он(статус) будет фиксированный адрес иметь в памяти (у самого квип,агент лень ставить)..
и еще косяк,а если несколько аккаунтов??То как??
Ха,ещё чему-то учить будут..
|
(Offline)
|
|
31.03.2011, 13:59
|
#10
|
[object Object]
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,358
Написано 2,472 полезных сообщений (для 6,854 пользователей)
|
Ответ: Прога для подмены стауса(mra)
КОМПИЛИРУЙ СПЛОЕТЫ
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
|
(Offline)
|
|
31.03.2011, 14:11
|
#11
|
Элита
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений (для 1,012 пользователей)
|
Ответ: Прога для подмены стауса(mra)
|
(Offline)
|
|
31.03.2011, 16:43
|
#12
|
Дэвелопер
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений (для 1,540 пользователей)
|
Ответ: Прога для подмены стауса(mra)
__________________
|
(Offline)
|
|
01.04.2011, 13:24
|
#13
|
Элита
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений (для 1,012 пользователей)
|
Ответ: Прога для подмены стауса(mra)
Нарыл код для поиска в памяти,не коипилит(с++)
#include <stdio.h> #include <windows.h> #include <tlhelp32.h> #define PROC_NAME "n00b.exe" #define MAX_READ 128
int fMatchCheck (char *mainstr, int mainstrLen, char *checkstr, int checkstrLen) { /* Проверка наличия подстроки в строке. При этом под "строкой" подразумевается просто последовательность байт. */ BOOL fmcret=TRUE; int x,y;
for (x=0; x<mainstrLen; x++) { fmcret=TRUE;
for (y=0; y<checkstrLen; y++) { if (checkstr[y]!=mainstr[x+y]) { fmcret=FALSE; break; } }
if (fmcret) return x+checkstrLen; } return -1; }
char *getMem(char *buff, size_t buffLen, int from, int to) { /* Выделяем у себя память, в которой будем хранить копию данных из памяти чужой программы. */ size_t ourSize = buffLen*2; char *ret = (char*)malloc(ourSize);
memset(ret, 0, ourSize);
memcpy(ret, &buff[from], buffLen-from); memset(&ret[to-from], 0, to-from);
return ret; }
char *delMem(char *buff, size_t buffLen, int from, int to) { /* Освобождаем память. */ size_t ourSize = buffLen*2; char *ret = (char*)malloc(ourSize); int i,x=0;
memset(ret, 0, ourSize);
for (i=0; i<buffLen; i++) { if (!(i>=from&&i<to)) { ret[x]=buff[i]; x++; } }
return ret; }
char *addMem(char *buff, size_t buffLen, char *buffToAdd, size_t addLen, int addFrom) { /* Запись в память. */ size_t ourSize = (buffLen+addLen)*2; char *ret = (char*)malloc(ourSize); int i,x=0;
memset(ret, 0, ourSize);
memcpy(ret, getMem(buff, buffLen, 0, addFrom), addFrom);
x=0; for (i=addFrom; i<addLen+addFrom; i++) { ret[i]=buffToAdd[x]; x++; }
x=0; for (i; i<addFrom+buffLen; i++) { ret[i]=buff[addFrom+x]; x++; }
return ret; }
char *replaceMem(char *buff, size_t buffLen, int from, int to, char *replaceBuff, size_t replaceLen) { /* Заменяем найденную "строку" на свою. */ size_t ourSize = (buffLen)*2; char *ret = (char*)malloc(ourSize);
memset(ret, 0, ourSize);
memcpy(ret, buff, buffLen); // copy 'buff' into 'ret'
ret = delMem(ret, buffLen, from, to); // delete all memory from 'ret' betwen 'from' and 'to' ret = addMem(ret, buffLen-to+from, replaceBuff, replaceLen, from);
return ret; }
DWORD fGetPID( char *szProcessName ) { PROCESSENTRY32 pe = {sizeof(PROCESSENTRY32)}; HANDLE ss; DWORD dwRet = 0;
ss = CreateToolhelp32Snapshot (TH32CS_SNAPPROCESS, 0);
if (ss) { if (Process32First(ss, &pe)) while (Process32Next(ss, &pe)) { if (!strcmp(pe.szExeFile, szProcessName)) { dwRet = pe.th32ProcessID; break; } } CloseHandle( ss ); } return dwRet; }
BOOL DoRtlAdjustPrivilege() { /* Важная функция. Получаем привилегии дебаггера. Именно это позволит нам получить нужную информацию о доступности памяти. */ #define SE_DEBUG_PRIVILEGE 20L #define AdjustCurrentProcess 0 BOOL bPrev = FALSE; LONG (WINAPI *RtlAdjustPrivilege)(DWORD, BOOL, INT, PBOOL); *(FARPROC *)&RtlAdjustPrivilege = GetProcAddress(GetModuleHandle("ntdll.dll"), "RtlAdjustPrivilege"); if(!RtlAdjustPrivilege) return FALSE; RtlAdjustPrivilege(SE_DEBUG_PRIVILEGE, TRUE, AdjustCurrentProcess, &bPrev); return TRUE; }
main() { /*** VARIABLES ***/ HANDLE hProc;
MEMORY_BASIC_INFORMATION mbi; SYSTEM_INFO msi; ZeroMemory(&mbi, sizeof(mbi)); GetSystemInfo(&msi); /* Получаем информацию о памяти в текущей системе. */
DWORD dwRead=0;
char *lpData = (VOID*)GlobalAlloc(GMEM_FIXED, MAX_READ) string lpOrig = "Information" string lpReplacement[] = "habrahabr.ru"; // на что меняем
int x,at; /*****************/
if (!lpData) return -1;
ZeroMemory(lpData, MAX_READ);
// открываем процесс do { hProc = OpenProcess (PROCESS_ALL_ACCESS, FALSE, fGetPID(PROC_NAME)); if (!hProc) { Sleep(500); puts ("Cant open process!\n""Press any key to retry.\n"); getch(); } } while(!hProc);
if(DoRtlAdjustPrivilege()){ /* Привилегии отладчика для работы с памятью. */
puts ("Process opened sucessfully\n" "Scanning memory...\n");
for(LPBYTE lpAddress = (LPBYTE)msi.lpMinimumApplicationAddress; lpAddress <= (LPBYTE)msi.lpMaximumApplicationAddress; lpAddress += mbi.RegionSize){ /* Этот цикл отвечает как раз за то, что наша программа не совершит лишних действий. Память в Windows в процессе делится на "регионы". У каждого региона свой уровень доступа: к какому-то доступ запрещен, какой-то можно только прочитать. Нам нужны регионы доступные для записи. Это позволит в разы ускорить работу поиска по памяти и избежать ошибок записи в память. Именно так работает ArtMoney. */
if(VirtualQueryEx(fGetPID(PROC_NAME), lpAddress, &mbi, sizeof(mbi))){ /* Узнаем о текущем регионе памяти. */
if((mbi.Protect & PAGE_READWRITE) || (mbi.Protect & PAGE_WRITECOPY)){ /* Если он доступен для записи, работаем с ним. */
for (lpAddress;lpAddress<(lpAddress + dwSize); lpAddress+=0x00000100) { /* Проходим по адресам указателей в памяти чужого процесса от начала, до конца региона и проверяем, не в них ли строка поиска. */
dwRead=0; if (ReadProcessMemory (hProc, (LPCVOID)lpAddress, lpData, MAX_READ, &dwRead) == TRUE) { /* Читаем по 128 байт из памяти чужого процесса от начала и проверяем, не в них ли строка поиска. */
if (fMatchCheck(lpData, dwRead, lpOrig, sizeof(lpOrig)-1)!=-1) { /*Нашли, сообщим об успехе и поменяем в чужом процессе искомую строку на нашу.*/ printf ("MEMORY ADDRESS: 0x00%x\n" "DATA:\n", lpAddress); for (x=0;x<dwRead;x++) { printf("%c", lpData[x]); } puts("\n");
at = fMatchCheck (lpData,dwRead,lpOrig,sizeof(lpOrig)-1);
if (at!=-1) { at-=sizeof(lpOrig)-1;
lpData = replaceMem (lpData, dwRead, at, at+sizeof(lpOrig)-1, lpReplacement, /*sizeof(lpReplacement)-1*/sizeof(lpOrig)-1);
puts("REPLACEMENT DATA:"); for (x=0;x<dwRead-sizeof(lpOrig)-1+sizeof(lpReplacement)-1;x++) { printf("%c", lpData[x]); } puts("\n");
puts("Replacing memory..."); if (WriteProcessMemory (hProc, (LPVOID)lpAddress, lpData, /*dwRead-sizeof(lpOrig)-1+sizeof(lpReplacement)-1*/dwRead, &dwRead)) { puts("Success.\n"); } else puts("Error.\n"); } else puts("Error.\n");
}
} }
}else puts("Error.\n"); }else puts("Error.\n"); } }else puts("Error.\n");
// // // // // // Cleanup if (hProc) CloseHandle(hProc); if (lpData) GlobalFree(lpData); ///////////////
puts ("Done. Press any key to quit..."); return getch(); }
|
(Offline)
|
|
01.04.2011, 15:17
|
#14
|
Разработчик
Регистрация: 12.07.2008
Сообщений: 523
Написано 196 полезных сообщений (для 470 пользователей)
|
Ответ: Прога для подмены стауса(mra)
Нарыл код для поиска в памяти,не коипилит(с++)
|
ок...
|
(Offline)
|
|
01.04.2011, 19:53
|
#15
|
Дэвелопер
Регистрация: 21.11.2009
Адрес: Киев
Сообщений: 1,699
Написано 657 полезных сообщений (для 1,962 пользователей)
|
Ответ: Прога для подмены стауса(mra)
Сообщение от Костян
не коипилит
|
Нажми F5
|
(Offline)
|
|
Эти 5 пользователя(ей) сказали Спасибо baton4ik за это полезное сообщение:
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 08:10.
|