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

wininet - скачивание картинки

KraZz

(L3) cache
Пользователь
Регистрация
18.06.2009
Сообщения
196
Реакции
7
Вообщем попался мне на глаза длоадер, давно хотел его посмотреть, но все времени не было
Тут на сайте видел даже, по-моему, обзор по реверсу был, но он мне вообще не понравился, так как не отражал истину до конца
Короче как-то так сложилось, что я привык юзать сокеты и wininet воспринимал как попсу и не при каких обстоятельствах не хотел юзать
Но вот сделал поверхностный реверс этого длоадера, увидел у него функцию загрузки
Короче.. примерно такой код:
Код:
DWORD dwSize;
HINTERNET hInternet = InternetOpen("UserAgent", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
if(hInternet)
{
	HINTERNET hUrl = InternetOpenUrl(hInternet, "http://wasm.ru/forum/img/Invision-board/title_cat.gif", NULL, 0, 0, 0);
	if(hUrl)
	{
  DWORD FileSize = InternetSetFilePointer(hUrl, 0, NULL, FILE_END, 0);
  if(FileSize != 0xFFFFFFFF && FileSize >= 10)
  {
    InternetSetFilePointer(hUrl, 0, NULL, FILE_BEGIN, 0);
    FileSize++;
    pbFile = (PBYTE)VirtualAlloc(NULL, FileSize, MEM_COMMIT|MEM_RESERVE, PAGE_READWRITE);
    if(pbFile)
    {
    	do{
      if(!InternetReadFile(hUrl, pbFile, FileSize, &dwSize)) goto LEXIT;
    	}while(dwSize);
[...]
Юзает он этот код, скорее всего из-за его компактности
Но я, к сожалению wininet не юзал и даже не ожидал, что столько может моментально появиться вопросов
В первую очередь погуглил и то, что прочитал, убило наповал, но да ладно оставлю за кадром...

Первый вопрос:
Цитата из статьи
http://www.rsdn.ru/article/inet/wininet.xml - Введение в WinInet
Использует для получения информации функцию HttpQueryInfo с параметром HTTP_QUERY_CONTENT_LENGTH. Я встречался с ситуацией, когда эта функция возвращала ноль, хотя после этого данные читались в полном объёме. Можно было бы использовать функцию InternetQueryDataAvailable, но с ней тоже не всё в порядке. Например, при чтении страницы ASP эта функция выдаёт не размер результирующей страницы, а размер самого скритпа, что, несомненно, является весьма интересной информацией, но совершенно бесполезной для нас. В результате, я не знаю и не могу предложить Вам абсолютно надёжного способа получить точную информацию о размере запрашиваемых данных. Скорее всего, это будет работать, но если Вы предполагаете использовать сервера, которые не можете заранее протестировать, то лучше не полагайтесь на эти функции.
Здесь как мы видим из кода, размер файла получаем с помощью InternetSetFilePointer и FILE_END
Код:
DWORD FileSize = InternetSetFilePointer(hUrl, 0, NULL, FILE_END, 0);
Вот хочу спросить у тех, кто юзал данный код - вариант с InternetSetFilePointer и FILE_END сто процентов рабочий или тоже траблы есть?
Я в принципе решение нашел, но вот ради интереса хочется узнать.

Второй вопрос:
InternetOpenUrl судя по моим тестам, работает совсем не так как мне нужно
Если картинка была ранее скачена через Internet Explorer и если комп в данный момент не имеет подключения к инету и Internet Explorer работает в автономном режиме, картинка будет "скачена" из кэша, а если в Internet Explorer работает НЕ в автономном режиме, то выскакивает мессага предлагая подключиться к инету, которая сразу палит все дело - но да ладно, эт можно тоже пофиксить

Проблема начинается при скачивании картинки, InternetOpenUrl "проверяет" кэш и если есть картинка в кэше, то и читает соответственно ее из кэша и даже не пытается скачать ее из инета притом, что комп имеет подключение к инету и находится в онлайн
Но даже у меня как-то получилось (я даже не понял как), чтобы InternetOpenUrl попыталась обратиться к урлу и там даже было получено несколько пакетов, в которых походу проверялась дата последнего обновления картинки и все, мля.. естественно она одинаковая и произошла загрузка опять из кэша
Вот хочу спросить у тех, кто юзал данный код - как заставить InternetOpenUrl при любых обстоятельствах скачать картинку, даже если дата "обновления" идентична?
ЗЫ: Если картинку качать первый раз, то все замечательно качает...
ЗЫЫ: Код находится в процессе explorer.exe
 
про первый хз, тестов не делал.
про второй смотрим на флаги, ктр можно задать - INTERNET_FLAG_RELOAD, INTERNET_FLAG_PRAGMA_NOCACHE (желательно ещё добавить флаг INTERNET_FLAG_NO_CACHE_WRITE, чтобы не оседало в кеше, в общем все есть в http://msdn.microsoft.com/en-us/library/wi...(v=vs.85).aspx)
 
InternetSetFilePointer имхо нужен если вы хотите организовать докачку при разрыве связи

Код:
repeat
 pInternetReadFile(hURL, @WebBuffer, SizeOf(WebBuffer), WebBufferLen);
 until WebBufferLen = 0;

читаем буфер, пока не дойдет до нуля, и так отпадает нужда в InternetSetFilePointer.

Что касается InternetOpenUrl, тоже сталкивался с этим, мне видятся несколько возможных вариантов развития событий
1. как уже писал higaru, правильно настроить флаги
2. удалять из хэша перед стартом функ скачки
 
InternetSetFilePointer cannot be used reliably if the content length is unknown.
вцелом странное решение юзать такой метод, мож он и будет работать в 99%, но нигде в документации об этом не сказано, а значит и не является надежным тем более в таком ненадежном окружении как сетевое - сделай реализацию резинового буфера и спи спокойно.
 
Да речь-то собственно не обо мне идет, а о том имеет ли моральное право аффтар барыжить таким детским говно-кодом
Я лишь описал количество вопросов, появившихся у меня сразу глядя на код этого длоадера
Мне кажется надо предоставлять народу более детально инфу при реверсе, это должно хотя бы немного повысить качество кода у школоты - ИМХО
Автор длоадера похоже при кодинге руководствовался фразой «работает - да и х#й с ним»
А так да, вот уже есть готовый кодес: (копипаст)
Код:
Автор: http://www.swissdelphicenter.ch
{Forces a download of the requested file, object, or directory 
listing from the origin server, not from the cache}

 function DownloadURL_NOCache(const aUrl: string; var s: String): Boolean;
 var
   hSession: HINTERNET;
   hService: HINTERNET;
   lpBuffer: array[0..1024 + 1] of Char;
   dwBytesRead: DWORD;
 begin
   Result := False;
   s := '';
   // hSession := InternetOpen( 'MyApp', INTERNET_OPEN_TYPE_DIRECT, nil, nil, 0); 
  hSession := InternetOpen('MyApp', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
   try
     if Assigned(hSession) then
     begin
       hService := InternetOpenUrl(hSession, PChar(aUrl), nil, 0, INTERNET_FLAG_RELOAD, 0);
       if Assigned(hService) then
         try
           while True do
           begin
             dwBytesRead := 1024;
             InternetReadFile(hService, @lpBuffer, 1024, dwBytesRead);
             if dwBytesRead = 0 then break;
             lpBuffer[dwBytesRead] := #0;
             s := s + lpBuffer;
           end;
           Result := True;
         finally
           InternetCloseHandle(hService);
         end;
     end;
   finally
     InternetCloseHandle(hSession);
   end;
 end;

 //aufrufen 
var
   s: String;
 begin
  if DownloadURL('http://www.swissdelphicenter.ch/', s) then
    ShowMessage(s);
 end;
Правда непонятно зачем здесь dwBytesRead := 1024; нужно
И положительным признаком правильно скачанного файла является возвращаемое значение True функцией InternetReadFile и в dwBytesRead должен быть равен нулю
Здесь в коде нет проверки на возвращаемое значение функцией InternetReadFile, стало быть, тоже "бага"
Ну и это lpBuffer[dwBytesRead] := #0; тоже естественно - жесть
Но, да ладно,.. мне не понята фраза автора длоадера
https://forum.zloy.bz/showthread.php?t=132429 - dLoader (resident\light)
[ + ] Не дает себя удалить из автозагрузки (принято было решение писаться именно в автозагрузку, чтобы создавать меньше палева)
[ + ] Скрывает все загруженные модули
Че за прикол «принято было решение писаться именно в автозагрузку, чтобы создавать меньше палева»
Да эт сразу палево и создаст, большая часть юзеров при подозрении лезут именно туда, а там помимо лоадера еще и говно-файлы лежат в открытом виде
Я к примеру понимаю фразу «Скрывает все загруженные модули» когда допустим в какой-нибудь директории лежат картинки с расширением bmp и юзер открыв ее видит именно картинку, к примеру, заставки виндовс, но в этой картинке зашит запакованный код модуля от длоадера, эт да называется - скрыл, а когда это все добро в открытом виде лежит в автозагрузке с расширением дат, эт только еще больше палева создаст, а тем более ну никак не скроет, да и достаточно запустить проверку на наличие вирусов и в автозагрузке проверка будет первой и даже смена даты на дату установки винды (ntdll.dll) не спасет
ЗЫ: ИМХО

P. S.
Вообщем даже если бы аффтар мне давал денег, чтобы я поюзал этот длоадер - я все равно не стал бы его юзать
 
KraZz ты просто еще не видел что продают остальные...
Ну да ладно. интересно было бы узнать твое мнение о andromeda loader. несмотря на то, что он написан нашим модером - критика всегда приветствовалась.
 
если передается размер в контент-лен: HttpQueryInfo с параметром HTTP_QUERY_CONTENT_LENGTH
для остального:
Код:
  	while (true) {

    if (!InternetQueryDataAvailable(req,&(rl = 0),0,0)) {
    	DBG("%s(%d) %s(): %s error %p\n",__FILE__,__LINE__,__FUNCTION__,"InternetQueryDataAvailable",DBG_LASTERR);
    	err = get_last_error();
    	break;

    } else if (!rl) {
    	err = ERROR_SUCCESS;
    	break;

    } else if ((err = m_ralloc((void**)&buf,al + rl))) {
    	DBG("%s(%d) %s(): %s error %p\n",__FILE__,__LINE__,__FUNCTION__,"m_ralloc",err);
    	break;

    } else if (!InternetReadFile(req,&buf[al],rl,&rl)) {
    	DBG("%s(%d) %s(): %s error %p\n",__FILE__,__LINE__,__FUNCTION__,"InternetReadFile",DBG_LASTERR);
    	err = get_last_error();
    	break;

    } else {
    	al += rl;
    }
  	}

  	if (err != ERROR_SUCCESS) m_free(buf);
  	else {
    __try {
    	*ret = buf;
    	if (rlen) *rlen = al;
    	err = ERROR_SUCCESS;

    } __except (EXCEPTION_EXECUTE_HANDLER) {
    	DBG("%s(%d) %s(): exception %p\n",__FILE__,__LINE__,__FUNCTION__,DBG_EXCEPTION);
    	err = GetExceptionCode();
    }
  	}
 
Код:
dwBytesRead := 1024;
InternetReadFile(hService, @lpBuffer, 1024, dwBytesRead);
if dwBytesRead = 0 then break;
lpBuffer[dwBytesRead] := #0;
s := s + lpBuffer;

да уж... этот код ваще жесть
а по 1024 читается наверное потому чтобы на медленных или плотно-использующихся соединениях чтобы работал

в целом этот вариант лучше функции UrlDownloadToFile ;)
 
el-, ну мы же вроде порешили, что должен юзаться "резиновый" буфер БЕЗ всяких там InternetSetFilePointer, HttpQueryInfo, InternetQueryDataAvailable.
В MSDN же по всем этим функциям стоят предупреждения о том, что они могут возвращать неверное значение и тем более они еще дополнительно добавят код, а мы как бы исходим из того что размер должен быть как можно меньше. :)
Тем более как выяснилось, что функция InternetSetFilePointer возвращает -1 (0xFFFFFFFF) если установить определенные флаги у InternetOpenUrl в параметре dwFlags
Тут возникает другой вопрос, судя по тестам, InternetOpenUrl делает отстук только в одном случае.., а если Internet Explorer работает в автономном режиме, то и длоадер вообще не делает никаких попыток, подключится к инету, хотя комп находится в онлайн
Короче, проще говоря, допустим, юзер взял локально открыл какой-нибудь html документ и при этом выставил автономный режим в Internet Explorer
Но потом стал юзать к примеру Оперу (так как считает ее мега нах че-то там..)
Далее заходит на какой-нибудь сайт, редирект и попадает на связку, и допустим удачно пробиваецца, но что происходит дальше, а дальше у нас-то автономный режим и судя по коду нет ничего чтобы... "теоретически" естественно отстука не будет
Я так думаю, из-за этого процентов 5-10 произойдет потери траффа... (вот просто интересно проводил кто тесты, учитывая этот "факт")
Можно заюзать следующий порно-код, чтобы решить данную проблему:
Код:
INTERNET_CONNECTED_INFO ci;
DWORD dwSize = sizeof(ci);
InternetQueryOption(NULL, INTERNET_OPTION_CONNECTED_STATE, &ci, &dwSize);
if((ci.dwConnectedState&INTERNET_STATE_CONNECTED) != INTERNET_STATE_CONNECTED)
{
  ci.dwConnectedState = INTERNET_STATE_CONNECTED;
  ci.dwFlags = 0;
  InternetSetOption(NULL, INTERNET_OPTION_CONNECTED_STATE, &ci, sizeof(ci));
}
Но так появляется диалог с вопросом подключиться к инету или работать в автономном режиме, юзер может нажать работать в автономном режиме и естественно лоадер не отстучится (да и еще дополнительно создает палево), а нужно, чтобы сто процентов выключить автономный режим, но при этом, чтобы не было всяких там мессаг создающих палево
Стало быть, возникает третий вопрос
Какой код нужно заюзать чтобы отключить автономный режим и проверить подключен ли комп в данный момент к инету?
К слову сказать, в спае такая мессага выскакивает два раза, а потом несколько минут ждет и опять выскакивает два раза и так далее по кругу.. короче, создавая тем самым палево...
ЗЫ: А вот на соксах таких траблов вообще нет.. и соответственно еще и появляется спорный момент, какой стабильный код меньше в конечном результате получится...
 
отключение
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings]
"GlobalUserOffline"=dword:00000000

правда не тестил, не нужно было.
Впрочем вининет годен в случае если юзается внешняя прокся для разграничения доступа к инету. Возможно имеет смысл делать отстук сначала через обычные сокеты, а потом если не удача, юзать вининет (несмотря на возможные случайные глюки, о которых многие говорили)?
 
Код:
INTERNET_OPTION_IGNORE_OFFLINE
?
Я так думаю, из-за этого процентов 5-10 произойдет потери траффа
слишком пессимистично, автономный режим в ie юзают копейки юзеров
 
Barack пишет:
слишком пессимистично, автономный режим в ie юзают копейки юзеров
Ну, так пусть будет оптимистично, епт.. пусть будет 0.5-1%, ты думаешь это что-то изменит...
Даже если будет 0-0.х#йдесятых - это уже повод апгрейдить код для того, чтобы даже теоретических шансов не было понизить отстук
Он же барыжит не за десять баксов, чтобы можно было сказать: - да ладно х#й с ним, какая цена - такое и качество
Мы вот всегда тычем в сторону нищебродов (aka в прошлом буржуев) что у них качество хорошее
Ну, так естественно у них и будет качество охуенное, если у них есть стандарты - вырастил кривой огурец, будь добр выкинь его - такому товару не место на "евро-рынке"
Нам надо тоже вводить "стандарты", хотя бы минимальные, чтобы повысить качество малвари...
Когда хуями обложишь этих аВтарофф - они начинают хоть что-то делать
Менять надо менталитет, причем не только у кодеров, но и у покупателей - ИМХО
Уже просто достало наблюдать, как народ по незнанию покупает говно, тем самым направляя денежные потоки в канализацию
Нужно посеять страх у разработчиков ПО, что прейдет то время рано или поздно, когда выяснится правда и истина
Хз, может хоть так, их заставим кодить, а не тупо копипастить
Я ведь тему же не просто так создал, просто хочу показать, как надо логически обработать паблик код, чтобы он хоть как-то работал в реально боевых условиях
Но судя по тому, что ты написал про "пессимистично" - начинаю думать, что бесполезная затея, наверное el- прав когда выбирает о чем в реверсе писать.. истена нах не нужна никому, но да ладно че париться - пусть платят за воздух, если им так нравицца...
ЗЫ: я уже представляю какой лоадер был у карабаса %)))

higaru пишет:
Возможно имеет смысл делать отстук сначала через обычные сокеты, а потом если не удача, юзать вининет
Да не, тут лучше юзать одно или другое, соксы же будут делать пинг на "живую", а у него же стоит INTERNET_OPEN_TYPE_PRECONFIG, а это значит, что будет юзаться прокси, если он прописан в настройках Internet Explorer
Но там может быть прописан уже сдохнувший прокси и соответственно отстука НЕ будет и это еще больше прибавляет процентов к потере траффа
Мне вообще кажется что автор просто тупо скопипастил код, к примеру, с того же васма - просто изменил API на базонезависимые и даже не думал о том, че там да как там
Работает как-нибудь и можно уже бежать барыжить, народ откуда там знает че там.. все равно купит, а остальное пох.. потом как-нибудь разберемся, когда купивший найдет багу, можно будет объявить (после фикса) что новая версия и еще больше копий продать...
ЗЫ: проверить подключен ли комп к инету можно с помощью функции InternetGetConnectedState, но вот всегда ли она правильно определяет оффлайн/онлайн - это еще под большим вопросом...

higaru пишет:
Впрочем вининет годен в случае если юзается внешняя прокся для разграничения доступа к инету.
Давай, для примера, возьмем и посмотрим на класс Wininet из исходников Зевса, который находится в wininet.cpp и wininet.h
Код:
bool bAutoProxy; //Совершать попытку подключения с WICF_USE_IE_PROXY, затем без него, для каждой попытки.
Интересный коммент, и в тоже время как в нем много полезной инфы
По-сути, нам автор зевса предлагает сделать две попытки подключиться (метод _Connect параметр dwFlags)
Код:
  //"Создание" интернета.
  HINTERNET hInet = CWA(wininet, InternetOpenA)(pstrUserAgent ? pstrUserAgent : DEFAULT_USER_AGENT,
                                                dwFlags & WICF_USE_IE_PROXY ? INTERNET_OPEN_TYPE_PRECONFIG : INTERNET_OPEN_TYPE_DIRECT,
                                                NULL, NULL, 0);
Первая попытка:
Код:
HINTERNET hInternet = InternetOpen("UserAgent", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
Вторая попытка:
Код:
HINTERNET hInternet = InternetOpen("UserAgent", INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
Вот видно сразу чел думал о том, что может быть потеря траффа и написал код, который может этого не допустить
Но даже этот кодес не может решить всех тех проблем, которые повышают проценты потери траффа
Для примера, возьмем ситуацию, когда explorer.exe запрещен (адской стеной) доступ к инету
Но можно через проксю отстучаться, но там прописан локальный проксик (скажем, популярный в народе HandyCache), а он может позволить слить картинку только один раз, потом когда в следующий раз полезем "обновляцца", он отдаст картинку из кеша...
Короч, наверно тема мало кому будет уже интересна, а менять менталитет - бесполезная затея
Мы же не сможем существам (aka школоте) рождающимся из жопы запретить пладицца - у нас же демократия, епт...
 
KraZz
Мы же не сможем существам (aka школоте) рождающимся из жопы запретить пладицца - у нас же демократия, епт...
Полностью с вами согласен. Судя по вашим постам вы в полной жопе, текста многа, смысла нету. Советуем вам сосредоточится на сути задачи, а не на этой погани.
 
Indy пишет:
Судя по вашим постам вы в полной жопе
О-о-о да, мы "все" знаем, что Инде "умен" и "прекрасен" %)))
Мы же не сможем существам (aka школоте) рождающимся из жопы запретить пладицца - у нас же демократия, епт...
Этот афоризм был написан ради хохмы (ЛОЛа), но никак не для того чтобы кого-то или что-то оскорбить как личность
Indy пишет:
текста многа, смысла нету
Смысл тебе станет понятен, когда ты поднимешь свой зад и попробуешь написать простенький лоадер и потом сделаешь прогруз на 10k траффа, и вот если отстучатся хотя бы 1k, значит поздравляем тебя - это твои первые 10%
Уверяю тебя, ты сразу поймешь, о чем здесь написано и кто такие Ar3s, el-, waahoo и многие другие, которые следят за достоверностью инфы, которую здесь постят на форуме
Не надо думать, что все здесь деревянные и можно так вот просто взять абы что на дамаге написать
Если тебе что-то не понятно - спрашивай, если что сам знаешь, так напиши - поделись знаниями с мемберами (у тебя есть шанс реабилитироваться)
Тема создавалась для тех, кто начинает писать свой первый лоадер на wininet и надеюсь, что будут гуглить и в выдаче на первой странице выскочит эта тема (а дамага славится именно тем, что здесь постов мало, но они все по-делу), и прочтет эту тему и может, найдет ответы на интересующие вопросы или даже ответственнее станет писать код, может, задумается над "чем-то" и т.д.
В этой теме есть полностью все ответы, как написать рабочий код, который будет качать файлы без проблем, достаточно прочитать весь топик стоя и вслух и несколько раз!
Надеюсь, так понятнее стало, о чем здесь столько многА текста...
ЗЫ: Ты лучше реально задумайся над тем, что тебе нужно сделать для того, чтобы проходящие мимо люди не плевали тебе в лицо.
 
KraZz
Рулит только матчасть. Если её нет, то барыжество - стягивание кода унылого с гугла етц., это лол. О каких прогрузах вы говорите, если руткиты не пишите. Я уже вышел с того возраста/уровня когда мог писать трояны унылые. Так что не нужно обобщать, сплойт на конал! :)
 
to TS:
Тема полезная и мало кто из начинающих понимает, что кроется под этими обертками из wininet.dll, но в большенстве случаев так и есть - "работает и х#й с ним". Лично я юзаю сокеты, для проверки подключения и высвечивания своего IP делаю коннект на гугловские днс сервера.
Indy
матчастью пугайте на васме сброд. совершенно не обязательно знать, что такое руткит для того, чтобы программировать сетевые функции.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Весьма интересная тема.

По поводу длоадера - имхо, это еще не самый худший продукт на рынке. Я представляю, что бы написал KraZz в этой теме, если исследовал бы какой-то g-bot или т.п. "малвару".
Хотя баги в нем были, помните же наверное, сколько ругани было в темах на эксплоите, по поводу того, что после апдейта умирает половина ботнета, а кодеры ничего не фиксят.

По поводу вининет - может либа и глючная, но что взять взамен? Некоторые советуют winhttp, но про него мало что известно (может там также есть какие-то подводные камни). А насчет чистых сокетов - я понимаю, что это "тру", но они сложные. И ес-но что многие выбирают уже готовые либы, особенно для тривиальных задач вида скачать картинку/отправить гет/пост запрос.

Сокеты хороши для профессионалов. Если же человек не особо специалист, и начнет писать свою реализацию вининет на сокетах - то имхо, он потеряет гораздо больше ботов, чем если бы использовал тот самый вининет (за счет каких-то нюансов, которые в более высокоуровневых либах учитывать не надо, про асинхронные сокеты я вообще молчу).
Разве что использовать "опенсорсные" либы на сокетах, и при нужде, пробовать там что-то менять под себя (вида для Масма, для Си/С++ наверное есть также много таких либ). Но они увеличивают размер кода.
 
Смысл тебе станет понятен, когда ты поднимешь свой зад и попробуешь написать простенький лоадер
Лоадер у него может и есть, но Инде не любит скрипты, а значит и админку для ботов не может написать :)
Не надо думать, что все здесь деревянные и можно так вот просто взять абы что на дамаге написать
А инде так комфортнее живется в своем выдуманном уютном, закрытом, внутреннем мирке.
С точки зрения психологии и человеческих качеств у него полнейший бардак,там ценности меньше чем у
средней адекватности школьника, но ценим и уважаем мы его не за это, а за кодесы,передовые идеи, глубокие исследования
оси и проблем вирусологии, меня меньше всего интересуют его психологические проблемы - с удовольствием покурю его соседние топики,
пусть у него практической базы мало, но его инфа представляет собой немалую ценность, а все его идеи можно уже допилить
поближе к реалиям.
Он же барыжит не за десять баксов, чтобы можно было сказать: - да ладно х#й с ним, какая цена - такое и качество
Мы вот всегда тычем в сторону нищебродов (aka в прошлом буржуев) что у них качество хорошее
Ну, так естественно у них и будет качество охуенное, если у них есть стандарты - вырастил кривой огурец, будь добр выкинь его - такому товару не место на "евро-рынке"
Нам надо тоже вводить "стандарты", хотя бы минимальные, чтобы повысить качество малвари...
Вы не с Молдавии случайно ? Там люди за тыщу баксов почку свою продадут )
За 5-10 баксов никто не будет ничего делать, проще тогда пойти уборщицей в белорусию работать,
что-то мне подсказывает, что цены у вашего сервиса явно не копеечные и вы явно не за бакс в час работаете, и
вам также хочется поменять свои дедовские жигули на что-то более солидное )
Зачем учить школьника писать малварь, а тем более повышать ее стандарты - рынок и тесты всех рассудят, гуан и так почти
никто не покупает, т.к. люди ориентируются по отстуку и живучести ботов, и тогда когда длоадер попсовел
во всю - уже у многих он вызывал презрение на то время.
с выходом новых осей (8 и после нее) с новыми защитными примочками порог вхождения для школьника и даже для студента
краснодипломника напорядок увеличиться, остануться только самые сильные - остальные пойдут на пенсию по
проф непригодности или перейдут кодить малварь под андройд, ну или кредитные калькуляторы писать.
Лучше дайте пособие как правильно огурцы выращивать, а то в натуре какую-то хреноту продают )
Все ваши коммунистические идеи опять провалятся ,как с рдп бэкконектом вчастности.
Никто не будет расшаривать свои хэккерские наработки/фрэймворки, чтобы школьник качественнее писал малварь :)
Не ну будут, но не в таком явном виде , чтобы школота сделала копипаст и вставила в своего бота ,
мне нравиться как инде дает материал - тем кому нужно разберется, никто не будет тыкать носом школьника,
что и как делать.
Нормальные качественные наработки стоят денег ибо в них заложен труд, время, тесты и проч.
и никто вам так просто не даст их - опять та же история с бэкконектом,просто ваша мотивация очень
пугает - расшарить школьникам и прочее на зло грибодемону, бред и все. Не стоит хаку и малварингу обучать, усовершенствовать как-то и т.д. -
это то с чего рано или поздно прийдется уходить ;)
Для примера, возьмем ситуацию, когда explorer.exe запрещен (адской стеной) доступ к инету
Но можно через проксю отстучаться, но там прописан локальный проксик (скажем, популярный в народе HandyCache),
а он может позволить слить картинку только один раз, потом когда в следующий раз полезем "обновляцца",
он отдаст картинку из кеша...
поверьте в норм продуктах это уже давно все учтено также басик, нтлм авторизация , медленные соединения и многое др. ;)
По поводу вининет - может либа и глючная, но что взять взамен?
боюсь батенька что не либа глючная :)
Сокеты хороши для профессионалов. Если же человек не особо специалист, и начнет писать свою реализацию вининет
согласен , и заявления тип вининет попса, а я трухек пишу на сокетах - тоже фигня.
тем самым направляя денежные потоки
завидно ? :D
 


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