Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
x00
15 / 15 / 2
Регистрация: 15.07.2011
Сообщений: 49
1

FASM WinInet

20.05.2012, 17:32. Просмотров 1410. Ответов 1
Метки нет (Все метки)

Решил попробовать написать программу, которая бы выводила первые 1023 (например, просто не знаю как всю страницу вывести байт определенного сайта в MessageBox (сначала пытался в файл, но там ещё больше запары).
Плоский ассемблер начал изучать недавно, около недели назад, поэтому не пинайте за мой быдлокод.
Вот моя попытка, надеюсь на помощь, спасибо :
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
format PE GUI 4.0
include 'include/win32ax.inc'
section '.data' readable writeable
        InternetOpenHandle dd ? 
        InternetOpenUrlHandle dd ?
        Buff db 1024 dup (?) ; тут не уверен
        BytesRead dd ? ; назначении этого параметра тоже непонятно, но мсдн говорит, что надо
section '.code' readable executable
start:
        invoke InternetOpen, 'MicrosoftR Internet Explorer',1, NULL, NULL, 0
        mov [InternetOpenHandle], eax
        cmp eax, 0
        je exit
        invoke InternetOpenUrl, InternetOpenHandle, 'http://google.ru', 0, 0, 0, 0
        mov [InternetOpenUrlHandle], eax
        cmp eax, 0
        je exit
        invoke InternetReadFile, InternetOpenUrlHandle, Buff, 1023, BytesRead
        invoke InternetCloseHandle, InternetOpenUrlHandle
        invoke MessageBox, 0, Buff, 'Запрос к сайту завершён..', MB_OK
        jmp exit
        exit:
                invoke MessageBox, 0, 'Ошибка при попытке соединения с сайтом.', 'Error.', MB_OK
                invoke ExitProcess, 0
section '.idata' import data readable writeable
       library wininet,'wininet.dll',\
               kernel32, 'kernel32.dll' , \
               user32, 'user32.dll'
 
       import kernel32, \
               ExitProcess, 'ExitProcess'
       import user32, \
               MessageBox, 'MessageBoxA'
 
       import wininet,\
               InternetOpen,'InternetOpenA',\
               InternetReadFile,'InternetReadFile',\
               InternetOpenUrl,'InternetOpenUrlA',\
               InternetCloseHandle,'InternetCloseHandle'

Не по теме:

отступы python-стайл c;



Добавлено через 22 часа 52 минуты

Не по теме:

раздел потерял ещё одного ассемблерщика :D
печальность.



Добавлено через 18 часов 39 минут
Много часов чтения буржуев и меня озарило как всё-таки это сделать.
Возможно кому-то пригодится :
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
format PE GUI 4.0
entry start
include 'include/win32ax.inc'
b equ byte
section '.data' readable writeable
        Site db 'http://google.ru/',0
        InternetOpenHandle dd ?
        InternetOpenUrlHandle dd ?
        Buff rb 1024
        BytesRead dd ?
section '.code' code readable executable
start:
        invoke InternetOpen, 'MicrosoftR Internet Explorer',0, 0, 0, 0
        mov [InternetOpenHandle], eax
        cmp eax, 0
        je exit
        invoke InternetOpenUrl, eax, Site, 0, 0, 0, 0
        mov [InternetOpenUrlHandle], eax
        cmp eax, 0
        je exit
        invoke InternetReadFile, eax, Buff, 1023, BytesRead
        cmp eax, 0
        je exit
        mov eax, [BytesRead]
        mov b[Buff+eax], 0
        invoke MessageBox, 0, Buff, 'Запрос к сайту завершён..', MB_OK
        jmp closeAll
        exit:
                invoke MessageBox, 0, 'Ошибка при попытке соединения с сайтом.', 'Error.', MB_OK
                invoke InternetCloseHandle, [InternetOpenHandle]
                invoke InternetCloseHandle, [InternetOpenUrlHandle]
                invoke ExitProcess, 0
        closeAll:
                invoke InternetCloseHandle, [InternetOpenHandle]
                invoke InternetCloseHandle, [InternetOpenUrlHandle]
section '.idata' import data readable writeable
       library wininet,'wininet.dll',\
               kernel32, 'kernel32.dll' , \
               user32, 'user32.dll'
 
       import kernel32, \
               ExitProcess, 'ExitProcess'
       import user32, \
               MessageBox, 'MessageBoxA'
 
       import wininet,\
               InternetOpen,'InternetOpenA',\
               InternetReadFile,'InternetReadFile',\
               InternetOpenUrl,'InternetOpenUrlA',\
               InternetCloseHandle,'InternetCloseHandle'
Добавлено через 19 минут
Прикрутил запись в файл, но до сих пор не понимаю как узнать полный размер страницы, наверное стоит почитать мсдн.
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
include 'include/win32ax.inc'
b equ byte
section '.data' readable writeable
        FileName db 'cyberforum.txt', 0 ; Файл в который будет записанно содержимое страницы
        Site db 'http://ip-whois.net/ip.php',0
        InternetOpenHandle dd ?
        InternetOpenUrlHandle dd ?
        Buff rb 6001 ; Переменная, где будет храниться содержимое страницы, 6001 просто так выбрал :)
        FileHandle dd ?
        BytesRead dd ?
section '.code' code readable executable
start:
        invoke InternetOpen, 'MicrosoftR Internet Explorer',0, 0, 0, 0
        mov [InternetOpenHandle], eax
        cmp eax, 0
        je exit
        invoke InternetOpenUrl, eax, Site, 0, 0, 0, 0
        mov [InternetOpenUrlHandle], eax
        cmp eax, 0
        je exit
        invoke InternetReadFile, eax, Buff, 6000, BytesRead
        cmp eax, 0
        je exit
        mov eax, [BytesRead]
        mov b[Buff+eax], 0
        invoke CreateFile, FileName, GENERIC_WRITE, FILE_SHARE_WRITE,\
                                        0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL,\
                                        0, 0
        mov [FileHandle], eax
        invoke lstrlen, Buff ; Определение размера переменной
        invoke WriteFile, [FileHandle], Buff,eax, 0, 0  ; Запись в файл
        jmp closeAll
        exit:
                invoke MessageBox, 0, 'Ошибка при попытке соединения с сайтом.', 'Error.', MB_OK
                invoke InternetCloseHandle, [InternetOpenHandle]
                invoke InternetCloseHandle, [InternetOpenUrlHandle]
                invoke ExitProcess, 0
        closeAll:
                invoke InternetCloseHandle, [InternetOpenHandle]
                invoke InternetCloseHandle, [InternetOpenUrlHandle]
                invoke ExitProcess, 0
section '.idata' import data readable writeable
       library wininet,'wininet.dll',\
               kernel32, 'kernel32.dll' , \
               user32, 'user32.dll'
 
       import kernel32, \
               CreateFile, 'CreateFileA',\
               WriteFile, 'WriteFile',\
               lstrlen, 'lstrlenA',\
               ExitProcess, 'ExitProcess'
       import user32, \
               MessageBox, 'MessageBoxA'
 
       import wininet,\
               InternetOpen,'InternetOpenA',\
               InternetReadFile,'InternetReadFile',\
               InternetOpenUrl,'InternetOpenUrlA',\
               InternetCloseHandle,'InternetCloseHandle'
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.05.2012, 17:32
Ответы с готовыми решениями:

fasm
org 100h mov cl,0 mov ch,255 cikl: mov ah,0eh shl ch,1 jc perivod mov al, '0' jmp label2...

Константы (fasm)
Как мне зделать такое? const.inc: ; секцию инклюда не знаю как обозначить... invoke...

ИГРА FASM
Помогите пожалуйста напишите мне игру на FASM. Надо очень. Игра OpenGL. Спасибо заранее тому, кто...

прерывание в fasm
Я создал программу вывода на экран веке кода клавиши. С помощью int 16h .но за into 16h скрывается...

ShellExecuteEx(fasm)
Превед! Изучаю лениво msdn api через флат ассемблер. Очередной раз ступор из-за структур, так как...

1
programmisto
92 / 137 / 0
Регистрация: 15.04.2012
Сообщений: 1,032
21.05.2012, 05:59 2
То же интересно, как получить размер грузимой страницы.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.05.2012, 05:59

WriteFile в FASM
Плз подскажите как пользоваться с функцией WriteFile в FASM. Файл создал с помощью CreateFile, но...

WinApi и fasm
Есть ли толковая документации по использованию winapi в fasm'e ?

компилятор fasm
Просьба,пожалуйста прокомментируйте,что делает компилятор в двух случаях создания исполняемых...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru