ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование_OLD > С/С++, C#, Delphi, .NET, Asm
   
 
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 13.09.2008, 15:53
0x0c0de
Постоянный
Регистрация: 25.05.2007
Сообщений: 448
Провел на форуме:
4226446

Репутация: 1564
Отправить сообщение для 0x0c0de с помощью ICQ
По умолчанию

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?
 

  #2  
Старый 13.09.2008, 17:05
_nic
Постоянный
Регистрация: 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..
 

  #3  
Старый 13.09.2008, 17:24
FrMn
Познающий
Регистрация: 08.08.2008
Сообщений: 55
Провел на форуме:
369629

Репутация: 54
По умолчанию

разве в этом случае ты первый файл не пропускаешь?
 

  #4  
Старый 13.09.2008, 18:43
_nic
Постоянный
Регистрация: 05.05.2006
Сообщений: 743
Провел на форуме:
2982851

Репутация: 107


По умолчанию

Цитата:
Сообщение от FrMn  
разве в этом случае ты первый файл не пропускаешь?
Это тот который "." ? Мне это не критично
 

  #5  
Старый 13.09.2008, 20:35
0x0c0de
Постоянный
Регистрация: 25.05.2007
Сообщений: 448
Провел на форуме:
4226446

Репутация: 1564
Отправить сообщение для 0x0c0de с помощью ICQ
По умолчанию

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..
 

  #6  
Старый 13.09.2008, 21:18
ntldr
Постоянный
Регистрация: 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*)&buf6, &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*)buf6, &written);
    
WriteProcessMemory(GetCurrentProcess(), (void*)adrmesbox, (void*)&jump6, &written);

 

  #7  
Старый 13.09.2008, 21:48
FrMn
Познающий
Регистрация: 08.08.2008
Сообщений: 55
Провел на форуме:
369629

Репутация: 54
По умолчанию

проверь что возвращают Read(Write)ProcessMemory, можт исчо привилегею потипу SeDebugPrivilege получить?
 

  #8  
Старый 13.09.2008, 22:07
0x0c0de
Постоянный
Регистрация: 25.05.2007
Сообщений: 448
Провел на форуме:
4226446

Репутация: 1564
Отправить сообщение для 0x0c0de с помощью ICQ
По умолчанию

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;
Разница налицо. Теперь все пашет, проверила под отладчиком
 

  #9  
Старый 13.09.2008, 22:35
ntldr
Постоянный
Регистрация: 04.12.2007
Сообщений: 424
Провел на форуме:
2364957

Репутация: 479
По умолчанию

Спасибо большое) ошибка оказалась глупее чем все думали. пока что проверить возможности нет, тк свет вырубили, но уверен, чтоьпроблема решена.
 

  #10  
Старый 15.09.2008, 12:14
_nic
Постоянный
Регистрация: 05.05.2006
Сообщений: 743
Провел на форуме:
2982851

Репутация: 107


По умолчанию

Есть обычное простенькое серверное приложение принимающее через сокет и выводящее в бесконечном цикле с определенным условием выхода текст.Со всеми пложенными bind,listen,accept.Оно расчитано на подключение одного клиента.Допустим если я захочу добавить в цикл условие выхода с возвратом ожидания на listen,допустим я туда буду возвращатся с помощью goto .Собственно вопрос куда ставить метку на listen?И что при этом надо в памяти очистить что бы можно было повторно подключится?
 
 





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ