![]() |
Работаем с anti-captcha.com на ассемблере
По просьбе некоторых участников форума написал на ассемблере несколько процедур для работы с сервисом anti-captcha.com, спроектировал процедуры так, чтобы они могли в несколько потоков одновременно работать.
Для теста написал программу, которая может распознавать капчи в несколько потоков: http://kaimi.ru/wp-content/uploads/2009/05/ac.png Скачать исходники + exe Подробное описание кода |
мне кажется, лучше бы было сделать dll, в экспорт вывести пару функций и приложить подробное описание, чтобы можно было бы заюзать в любом софте. было бы полезнее :)
|
Цитата:
Описание функций, экспортируемых dll: AntiCaptchaInit - вызывается для инициализации работы с антикапчей, ей не надо передавать параметры, вернет 0 в случае успеха. AntiCaptcha - вызывается для отправки изображения на сервер. Вернет 0 в случае успеха или код ошибки. Параметры: Код:
AntiCaptcha PROC,AntiCaptchaAnswer - вызывается для получения распознанного варианта или статуса распознавания. Вернет 0 в случае успеха или код ошибки. Параметры: Код:
AntiCaptchaAnswer PROC,Коды возвращаемых функциями ошибок: Код:
1 - ошибка при создании сокетаСкачать можно по той же ссылке в первом посте. |
извините за оффтоп но можно сделать автособиратель на http://rublik.ru ?
|
опиши что вообще делает эта программа? для чего она?
|
Есть ресурс такой, anti-captcha.com, достаточно известный, для распознавания капч. У них есть свое api, и я написал несколько процедур для работы с ним. Программа - просто для теста их работы, зато прилагается еще dll, которая может работать с любым языком.
Для чего нужно распознавать капчи - догадайся сам-) Вообще, код с описанием в образовательных целях хорошо пойдет - там мьютексы, потоки, сокеты... |
перечитал стаью в поисках ошибок... вроде ничего кроме непонятного мне цикла с virtualAlloc в самом начале. дааа d_x ты маньяк!!! :D у меня конечно тоже есть программы в ~1000 строк кода на winAPI (помню делал собственную прорисовку всего интерфейса - скин, кнопочки цвет меняют все в общем крута
http://zona-chat.narod.ru/skin.gif exe ) но чтобы такое да на асме вай верх ппц :) теперь научись делать UNICODE версии прог, потомучто все операции со строкам выше win9X ядро венды производит в UNICODE,а функции с дополнением *A (MessageBoxA...) затрачивают время на выделение памяти и конвертирование строк в UNICODE я вот думаю если извращатся то уж по полной ! не юзать invoke, констант, описывать все нужные экспортируемые функции и тд :) изучаю fasm хех разницы между размером exe миимальной winAPI проги в masm32 и VS2008 я не заметил (ну конечно надо с бубном танцевать там долго чтобы получить результат)... дело вкуса! ;) |
2 d_x : я тебя сделаю! :) я накатал ща на masm-е пакетный сниффер в 3,5 кило хехе (правда функциональности в нем пока ноль, но уже уммет скидывать дамп входящего - исходнящего траффика на диск)
вопрос в асме есть указатели? или придется вот таким тупым макаром структуры разбирать mov eax,offset buf mov eax,[eax+2] ??? а то я как бе не знаю ) хех |
Ну я как бы ни с кем не соревнуюсь, я просто ради интереса и практики софт писал, недавно изучив асм.
Цитата:
Насчет структур - можно так (привожу кусок своего кода): Код:
.data? |
ну я имею ввиду нечто вроде
Код:
typedef struct ggтакое можно реализовать на асме? |
А я что постом выше написал в блоке кода?)
|
ну это я тоже знаю, что можно делать структуры данных и туда значения заносить.
но допустим буффер - 50000 байт заголовок пакета 44 unsigned char buffer[50000]; // 50000 выделеные в памяти (.data? buffer db 50000 dup(?)) str_paket *paket; // указатель на структуру пакета paket=(str_paket *)&buffer[0]; // теперь указатель ссылкается на смещение buffer в памяти (offset buffer) и мы можем крута и удобно юзать структуру ниче не перемещая не копируя и не заполняя pkaet->zagolovok будет эквивалентно по offset buffer + 4 pkaet->zagolovok2 offset buffer + 8 там и тд .... эм вопрос все тот же |
Я, видимо, не настолько хорошо знаю си, чтобы найти какое-либо существенное отличие этого кода от того, что я написал. Да и зачем структуре в 44 байта буфер в 50000?
|
лан закроем тему нашу :)
пока нашел вот нечно подобное что я хочу получить Цитата:
простым языком я хочу "наложить" свою структуру на уже имеющиеся данные ... эх бум искать, уже хоть что-то |
Как вариант придумал такое (не очень удобно, но копирования не производится и в масме работает):
Код:
s STRUCT ;описание структуры |
Цитата:
Все что тебе нужно знать - это как работают перфикс rep и команды loads[b,d,w]/stos[b,d,w] или аналогичные movs[b,d,w]. |
2 SmanxX1
это конечно все хорошо, но одна закавыка - данные копируются... мне правда очень понравилась функция SCAS - полезная 2 d_x пока ниче круче констант equ не придумал... например psp_INT32 equ 0 psp_MemSize equ 2 psp_Reserved equ 4 потом lea esi,buffer mov eax,[esi+psp_MemSize] тоесть описывать смещения в структуре... наглядно выходит, но не очень удобно всеравно все сводится к работе с регистрами а туда больше 4 байт запихнуть не получится... а так хоть наглядно а в твоем примере драгоценные байты и такты тратятся на add хм а можно интересно offset buff + offset s.eee оказывается можно!!! mov edi,offset buf + offset s.eee работает!! ) |
Цитата:
|
Цитата:
Цитата:
(ну и что, что полно юзеров с древними компами, нужно двигать прогресс и неи**т D) |
Цитата:
PS: ТС ты мазахист :) Большое спс за ддлку |
2 SmanxX1 мы тут уже разабрались, а задача была не перенести а попытатся на одно и то же смещение повесть 2 разные переменные )
как оказалось в асме это не реально (я читал про union ...), но реально сделать таблицу смещений в виде структуры (как я и хотел изначально). ну практических применений куча - PE заголовок, Секторы диска, заголовки сетевых пакетов и тд и тп. асм мне начинает нравицццааа ы |
Цитата:
Код:
mov ebx, NdisProtoHandle |
подскажите вы использовати платные распознавания для теста программы или же есть бесплатный пакет для тестирования сервиса?
|
| Время: 10:01 |