Скачал пример программы для работы через сокс5-прокси.(с wasm'a и скачал - _http://wasm.ru/baixado.php?mode=src&id=241) В ассемблере шарю слабо, но даже при моих скромных познаниях код показался странным. Вот фрагмент (комментарии с префиксом ++ - мои, т.е. как я это понимаю): Код (Text): NonAuthentificate: ;++ Подключение к прокси без аутентификации invoke memset,addr buffer,NULL,BufferSize mov ebx,offset buffer mov al,5 mov [ebx],al inc ebx mov al,1 ; 1 - TCP(CONNECT), 2 - TCP(BIND), 3 - UPD mov [ebx],al add ebx,2 mov al,3 mov [ebx],al inc ebx ;++ В первые четыре байта массива buffer положили числа 5, 1, 0 и 3 соответсвенно push ebx invoke StrLen,addr DestHost pop ebx mov [ebx],al ;++ в пятый байт поместили длину строки strlen(DestHost) inc ebx invoke strcpy,ebx,addr DestHost ; ++ копирнули строку DestHost в массив (buffer + 6) push ebx invoke StrToInt,addr DestPort pop ebx mov [ebx],al ; Порт на конечном узле ; ++ а вот предыдущее действие решительно непонятно. Не инкрементируя указатель, записали в массив мл. байт номера порта. то есть затерли первый байт строки DestHost dec ebx mov [ebx],ah ;++ Странности продолжаются. Передвинули указатель на 1 байт взад и затерли старшим байтом номера порта длину строки strlen(DestHost) add ebx,2 mov edx,offset buffer sub ebx,edx push ebx invoke FillErrorStr,addr ErrorSocketSendStr pop ebx invoke send,m_Socket,offset buffer,ebx,NULL cmp eax,SOCKET_ERROR je close_m_Socket или это все тонкости формирования запросов для сокс5-прокси?))
Green_DiCk Посмотри внимательно на подпрограмму strcpy. После ее завершения EBX указывает на байт после нульсимвола, т.о. AL попадает по этому адресу, а AH вместо нульсимвола. Т.е. после add ebx,2 в буфер будет помещено: 5, 1, 0, 3, длина_строки, строка, порт, а EBX будет указывать на следующий байт.
q_q Точняк... я думал это стандартная ф-ция. а она оказывается в конце файла определена. А вообще есть ли стандартные ф-ции, которые меняют содержимое регистров (помимо eax)? Чтобы в будущем не втыкать так долго и недоуменно. PS Не люблю создавать кучу топиков, так что еще один вопрос: есть у кого компонент (класс, либа, дллка или просто кусок кода (если код, то желательно на С/С++)) для парсинга html кода. то есть у меня есть html-страница, мне нужно выбросить все теги и получить "чистый" текст, форматированный пробелами, табуляцией, переводом строки и т.п. на крайняк сойдет даже не форматированный, то есть просто разделенный пробелами.