ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.

13.09.2008, 15:53
|
|
Постоянный
Регистрация: 25.05.2007
Сообщений: 448
Провел на форуме: 4226446
Репутация:
1564
|
|
2ntldr
Код:
BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call,
LPVOID lpReserved )
{
if(ul_reason_for_call == DLL_PROCESS_ATTACH )
{
intercept();
}
return 1;
}
void main(void) { //<<- хммм
}
; *А зачем еще одна main?
|
|
|

13.09.2008, 17:05
|
|
Постоянный
Регистрация: 05.05.2006
Сообщений: 743
Провел на форуме: 2982851
Репутация:
107
|
|
Как отоброзить файлы в текущем каталоге?Пытаюсь делать так
Код:
TSearchRec sr;
char path[1024];
strcpy(path,GetCurrentDir().c_str());
strcat(path,"\\*.*");
for(;;)
{
if(FindFirst(AnsiString(path),faAnyFile, sr) == 0)
{ShowMessage(sr.Name);}
else{FindClose(sr);break;}
}
но оно мне только точки бесконечно выплевывает  Как правильно надо?
___________________________________________
Упс.Извиняюсь затупил  .Надобыло так
Код:
TSearchRec sr;
char path[1024];
strcpy(path,GetCurrentDir().c_str());
strcat(path,"\\*.*");
FindFirst(AnsiString(path),faAnyFile, sr);
for(;;)
{
if(FindNext(sr) == 0)
{ShowMessage(sr.Name);}
else{FindClose(sr);break;}
}
Последний раз редактировалось _nic; 13.09.2008 в 17:07..
|
|
|

13.09.2008, 17:24
|
|
Познающий
Регистрация: 08.08.2008
Сообщений: 55
Провел на форуме: 369629
Репутация:
54
|
|
разве в этом случае ты первый файл не пропускаешь?
|
|
|

13.09.2008, 18:43
|
|
Постоянный
Регистрация: 05.05.2006
Сообщений: 743
Провел на форуме: 2982851
Репутация:
107
|
|
Сообщение от FrMn
разве в этом случае ты первый файл не пропускаешь?
Это тот который "." ? Мне это не критично 
|
|
|

13.09.2008, 20:35
|
|
Постоянный
Регистрация: 25.05.2007
Сообщений: 448
Провел на форуме: 4226446
Репутация:
1564
|
|
2ntldr. Перед тем, как переписывать начало функции надо разрешить запись по адресу месадбокса с помощью функции VirtualProtect
http://msdn.microsoft.com/en-us/library/aa366898(VS.85).aspx
Установи защиту в PAGE_EXECUTE_READWRITE
не увидела с начала, что функи нет
И еще при выгрузке либы неплохо было бы байты восстанавливать в начале функции.
if (ul_reason_for_call == DLL_PROCESS_DETACH){
// код снятия перехвата
}
Последний раз редактировалось 0x0c0de; 13.09.2008 в 20:44..
|
|
|

13.09.2008, 21:18
|
|
Постоянный
Регистрация: 04.12.2007
Сообщений: 424
Провел на форуме: 2364957
Репутация:
479
|
|
Добавил:
PHP код:
if(ul_reason_for_call == DLL_PROCESS_DETACH )
{
hookoff();
}
...
PHP код:
void hookoff(void) {
WriteProcessMemory(GetCurrentProcess(), (void*)adrmesbox, (void*)&buf, 6, &written);
}
Изменил:
PHP код:
void intercept(void) {
DWORD oldf;
int prot;
adrmesbox = (DWORD)GetProcAddress(GetModuleHandleA("user32.dll"),"MessageBoxA");
if(adrmesbox == 0)
{
MessageBoxA(NULL, "MessageBoxA не найден", "ошибка", 0);
return;
}
prot = VirtualProtect((void*)adrmesbox,6,PAGE_EXECUTE_READWRITE,&oldf);
if (!prot) {
ExitProcess(0);
}
jump.op_push = 0x68;
jump.arg = (DWORD)&intMesbox;
jump.op_push = 0xC3;
ReadProcessMemory(GetCurrentProcess(), (void*)adrmesbox, (void*)buf, 6, &written);
WriteProcessMemory(GetCurrentProcess(), (void*)adrmesbox, (void*)&jump, 6, &written);
}
|
|
|

13.09.2008, 21:48
|
|
Познающий
Регистрация: 08.08.2008
Сообщений: 55
Провел на форуме: 369629
Репутация:
54
|
|
проверь что возвращают Read(Write)ProcessMemory, можт исчо привилегею потипу SeDebugPrivilege получить?
|
|
|

13.09.2008, 22:07
|
|
Постоянный
Регистрация: 25.05.2007
Сообщений: 448
Провел на форуме: 4226446
Репутация:
1564
|
|
2ntldr
Ненене. мего глючный код.
Надо так
Код:
jump.op_push = 0x68;
jump.arg = (DWORD)&intMesbox;
jump.op_ret = 0xC3;
А вы сначала написали
Код:
jump.op_push = 0x68;
jump.arg = (DWORD)&intMesbox;
jump.op_push = 0xC3;
Разница налицо. Теперь все пашет, проверила под отладчиком
|
|
|

13.09.2008, 22:35
|
|
Постоянный
Регистрация: 04.12.2007
Сообщений: 424
Провел на форуме: 2364957
Репутация:
479
|
|
Спасибо большое) ошибка оказалась глупее чем все думали. пока что проверить возможности нет, тк свет вырубили, но уверен, чтоьпроблема решена.
|
|
|

15.09.2008, 12:14
|
|
Постоянный
Регистрация: 05.05.2006
Сообщений: 743
Провел на форуме: 2982851
Репутация:
107
|
|
Есть обычное простенькое серверное приложение принимающее через сокет и выводящее в бесконечном цикле с определенным условием выхода текст.Со всеми пложенными bind,listen,accept.Оно расчитано на подключение одного клиента.Допустим если я захочу добавить в цикл условие выхода с возвратом ожидания на listen,допустим я туда буду возвращатся с помощью goto .Собственно вопрос куда ставить метку на listen?И что при этом надо в памяти очистить что бы можно было повторно подключится?
|
|
|
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|