Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|

19.06.2009, 19:49
|
|
Флудер
Регистрация: 27.04.2009
Сообщений: 4,294,967,295
Провел на форуме: 32025
Репутация:
2
|
|
спасибо за помощь  незнаю как такой дуб как я сдал на 4, вообщем экзамен комплитед )) про модификацию надо было вообщем рассказать про "lea" и регистры модификаторы, ну еще что то я не стал уточнять 
|
|
|

22.08.2009, 16:48
|
|
Новичок
Регистрация: 24.07.2009
Сообщений: 24
Провел на форуме: 71052
Репутация:
5
|
|
Привет всем. Изучаю асм (компилятор fasm), буду иногда задавать здесь ламерские вопросы
Итак 1 из них:
Допустим есть ip. Нужно его обработать функцией inet_addr:
invoke inet_addr, ip_addr
Как теперь результат поместить в другую переменную?
mov [ip], eax
не получается - компилятор говорит, что размеры приемника и источника не совпадают. как я понял в таких случаях переменную ip нужно задавать так:
ip dd ?
правильно?
|
|
|

22.08.2009, 17:16
|
|
Новичок
Регистрация: 24.07.2009
Сообщений: 24
Провел на форуме: 71052
Репутация:
5
|
|
Вопрос 2:
Спустя некоторое время программа вываливается с ошибкой 11010 (нехватка ресурсов). Собственно программа в бесконечном цикле посылает icmp-пакеты  ))
Код:
.sendicmp:
invoke IcmpSendEcho, [handle], [addr], 0, 0, 0, reply, 100, timeout
cmp eax, 0
je .error
invoke Sleep, sleep
jmp .sendicmp
константа sleep = 3000 (мс). может следует увеличить слип? до 10к? 15к? больше?
естественно в реальном проекте ошибка вываливаться не будет.
Еще кто работал с icmpsendecho: что не так?  значение ReplySize я взял от "балды"
в msdn написано, что это должна быть сумма размеров структуры ICMP_ECHO_REPLY и поля RequestSize. Последний у меня равен нулю, а размер структуры - sizeof.ICMP_ECHO_REPLY. Или я не прав?
теперь еще 1 вопрос - как можно сделать авторестарт после завершения программы с ошибкой?
спасибо.
Последний раз редактировалось e4key; 22.08.2009 в 20:22..
|
|
|

22.08.2009, 20:40
|
|
Новичок
Регистрация: 24.07.2009
Сообщений: 24
Провел на форуме: 71052
Репутация:
5
|
|
Еще раз привет всем:
Код:
format PE GUI 4.0
entry main
include 'win32a.inc'
section '.data' data readable writeable
ip db '127.0.0.1', 0
wdata WSADATA
saddr sockaddr_in AF_INET, 80, ip
sock dd ?
hello db 'GET http://localhost/hello.php HTTP/1.0', 10, 13
db 'Host: localhost', 0
section '.code' code readable executable
main:
invoke WSAStartup, 0101h, wdata
invoke socket, AF_INET, SOCK_STREAM, 6
mov [sock], eax
invoke connect, [sock], saddr, sizeof.sockaddr_in
invoke send, [sock], hello, 57, 0
invoke closesocket, [sock]
invoke ExitProcess, 0
section '.idata' import data readable
library kernel32, 'kernel32.dll',\
user32, 'user32.dll',\
wsock32, 'wsock32.dll'
include 'api\kernel32.inc'
include 'api\user32.inc'
include 'api\wsock32.inc'
В hello.php находится код чего-то, что напоминает счетчик посещений (при каждом обращении к странице прибавляет к значению счетчика еденицу).
Но почему то указанный код не работает
Еще раз заранее спасибо всем тем, кто ответит.
|
|
|

22.08.2009, 21:24
|
|
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме: 3288241
Репутация:
3349
|
|
HTTP запросы должна заканчиваться 2-мя crlf
так что типа
hello db 'GET http://localhost/hello.php HTTP/1.0', 10, 13
db 'Host: localhost', 13,10,13,10,0
ну и соответственно перерасчитай длинну посылаемых данных в
invoke send, [sock], hello, 57, 0
лучше заюзай типа
invoke lstrlenA, hello
invoke send, [sock], hello, eax, 0
|
|
|

22.08.2009, 21:28
|
|
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме: 3288241
Репутация:
3349
|
|
может чтото ты чтото напутал? Но код
mov [ip], eax
ip dd ?
спокойно компилится в FASM
|
|
|

22.08.2009, 21:33
|
|
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме: 3288241
Репутация:
3349
|
|
насчет пинга вот код который я юзал -
Код:
; необходимые структуры
struct IP_OPTION_INFORMATION
Ttl db 0
Tos db 0
Flags db 0
OptionsSize db 0
OptionsData dd 0
ends
struct ICMP_ECHO_REPLY
Address dd 0
Status dd 0
RoundTripTime dd 0
DataSize dw 0
Reserved dw 0
Data dd 0
Options IP_OPTION_INFORMATION
PingBuf db 32 dup (0)
ends
struct TInAddr
b1 db 0
b2 db 0
b3 db 0
b4 db 0
ends
Optionss IP_OPTION_INFORMATION
InAddr TInAddr
Reply ICMP_ECHO_REPLY
PingBuf db 32 dup (0)
proc Ping InetAddress,ttl ; пингование передается адрес сервера и ТТЛ
invoke IcmpCreateFile ;
cmp eax,INVALID_HANDLE_VALUE ; если не удалось создать "ICMP файл"
je exitp
mov [handle],eax ;сохраним дискриптор
invoke gethostbyname,[InetAddress] ; попытка отпределяни IP адреса
cmp eax,0 ; если не удалось
je exitp ; то
mov eax,[eax+0ch] ; заполение необходимой струкуры
mov eax,[eax]
mov cl,[eax]
mov [InAddr.b1],cl
mov cl,[eax+1]
mov [InAddr.b2],cl
mov cl,[eax+2]
mov [InAddr.b3],cl
mov cl,[eax+3]
mov [InAddr.b4],cl
mov eax,PingBuf
mov [Reply.Data],eax
mov [Reply.DataSize],32
mov al,byte [ttl]
mov [Optionss.Ttl],al
mov eax,[InAddr]
invoke IcmpSendEcho,[handle],eax,PingBuf,32,Optionss,Reply,92,3000 ; пинг
cmp eax,0
je exitp
mov eax,1
ret
exitp:
xor eax,eax
ret
endp
|
|
|

22.08.2009, 22:57
|
|
Новичок
Регистрация: 24.07.2009
Сообщений: 24
Провел на форуме: 71052
Репутация:
5
|
|
slesh, спасибо огромное за ответы
HTTP запросы должна заканчиваться 2-мя crlf
так что типа
hello db 'GET http://localhost/hello.php HTTP/1.0', 10, 13
db 'Host: localhost', 13,10,13,10,0
ну и соответственно перерасчитай длинну посылаемых данных в
invoke send, [sock], hello, 57, 0
лучше заюзай типа
invoke lstrlenA, hello
invoke send, [sock], hello, eax, 0
Так всеравно не вышло  Кстати собственно через lstrlen и было, только не отсылал и посчитал и поставил конкретное значение
при запуске данная программа просто висит в процессах, никаких пакетов, ничего не отсылвается. может лучше сделать через wininet?
может чтото ты чтото напутал? Но код
mov [ip], eax
ip dd ?
спокойно компилится в FASM
действительно
насчет icmp - он и этот код отлично пингует, но вываливается через некоторое время с ошибкой.
|
|
|

22.08.2009, 23:07
|
|
Новичок
Регистрация: 24.07.2009
Сообщений: 24
Провел на форуме: 71052
Репутация:
5
|
|
а что в твоем коде должно содержаться в PingBuf? или это просто пустой буфер в 32 байта?
|
|
|

22.08.2009, 23:27
|
|
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме: 3288241
Репутация:
3349
|
|
PingBuf - это просто буфер для данных которые идут в нагрузку с пингом. В ответ должны приходить этиже данные для того чтобы проверить корректность работы.
насчет того что прога висит в процессах итд итп. то советую тебе поглядеть как ты реализовал заполнение addr для connect
погляди исходники моего спам бота - он в разделе избранное валяется вроде. написан полностью на FASM и там была функция для посылки HTTP запроса на сервак и корректное получение ответа.
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|