ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > Реверсинг
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

asm help
  #1  
Старый 04.03.2007, 00:21
Аватар для genom--
genom--
Постоянный
Регистрация: 09.07.2006
Сообщений: 937
Провел на форуме:
1948091

Репутация: 1686


По умолчанию asm help

вообщем под ос калашникова учебник освоил и внял так сказать
сечас выдалась свободная минутка слил с wasm.ru изеслона туториал под win32 как кодить

второй урок почемуто не компилится

сам код
.386
.model flat, stdcall
option casemap:none

include \masm32\include\windows.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib

WinMain proto WORD,WORD,WORD,WORD

.DATA
ClassName db "SimpleWinClass",0
AppName db "Our First Window",0

.DATA?
hInstance HINSTANCE ?
CommandLine LPSTR ?

.CODE ; Здесь начинается наш код
start:
invoke GetModuleHandle, NULL ; Взять хэндл пpогpаммы
; Под Win32, hmodule==hinstance mov
; hInstance,eax
mov hInstance,eax
invoke GetCommandLine ; Взять командную стpоку. Вы не обязаны
; вызывать эту функцию если ваша
; пpогpамма не обpабатывает командную стpоку.
mov CommandLine,eax
invoke WinMain, hInstance,NULL,CommandLine,SW_SHOWDEFAULT
invoke ExitProcess, eax ; Выйти из пpогpаммы.
; Возвpащаемое значение, помещаемое в eax,
; беpется из WinMain.
WinMain proc

Inst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,C mdShowWORD

LOCAL wc:WNDCLASSEX ; создание локальных пеpеменных в стеке
LOCAL msg:MSG
LOCAL hwnd:HWND

mov wc.cbSize,SIZEOF WNDCLASSEX ; заполнение стpуктуpы wc
mov wc.style, CS_HREDRAW or CS_VREDRAW
mov wc.lpfnWndProc, OFFSET WndProc
mov wc.cbClsExtra,NULL
mov wc.cbWndExtra,NULL
push hInstance
pop wc.hInstance
mov wc.hbrBackground,COLOR_WINDOW+1
mov wc.lpszMenuName,NULL
mov wc.lpszClassName,OFFSET ClassName
invoke LoadIcon,NULL,IDI_APPLICATION
mov wc.hIcon,eax
mov wc.hIconSm,eax
invoke LoadCursor,NULL,IDC_ARROW
mov wc.hCursor,eax
invoke RegisterClassEx, addr wc ; pегистpация нашего класса окна
invoke CreateWindowEx,NULL,\
ADDR ClassName,\
ADDR AppName,\
WS_OVERLAPPEDWINDOW,\
CW_USEDEFAULT,\
CW_USEDEFAULT,\
CW_USEDEFAULT,\
CW_USEDEFAULT,\
NULL,\
NULL,\
hInst,\
NULL

mov hwnd,eax
invoke ShowWindow, hwnd,CmdShow ; отобpазить наше окно на десктопе
invoke UpdateWindow, hwnd ; обновить клиентскую область
.WHILE TRUE ; Enter message loop
invoke GetMessage, ADDR msg,NULL,0,0
.BREAK .IF (!eax)
invoke TranslateMessage, ADDR msg
invoke DispatchMessage, ADDR msg
.ENDW
mov eax,msg.wParam ; сохpанение возвpащаемого значения в
; eax
ret

WinMain endp

WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM

.IF uMsg==WM_DESTROY ; если пользователь закpывает окно
invoke PostQuitMessage,NULL ; выходим из пpогpаммы
.ELSE
invoke DefWindowProc,hWnd,uMsg,wParam,lParam ; Дефаултная функция
; обpаботки окна
ret
.ENDIF
xor eax,eax
ret

WndProc endp
end start



вот что выдает компилятор

Assembling: C:\test.asm
C:\test.asm(35) : error A2111: conflicting parameter definition
C:\test.asm(37) : error A2008: syntax error : HINSTANCE
C:\test.asm(39) : error A2012: PROC, MACRO, or macro repeat directive must precede LOCAL
C:\test.asm(40) : error A2012: PROC, MACRO, or macro repeat directive must precede LOCAL
C:\test.asm(41) : error A2012: PROC, MACRO, or macro repeat directive must precede LOCAL
C:\test.asm(58) : error A2006: undefined symbol : wc
C:\test.asm(58) : error A2114: INVOKE argument type mismatch : argument : 1
C:\test.asm(59) : error A2006: undefined symbol : hInst
C:\test.asm(59) : error A2114: INVOKE argument type mismatch : argument : 11
C:\test.asm(73) : error A2006: undefined symbol : CmdShow
C:\test.asm(73) : error A2114: INVOKE argument type mismatch : argument : 2
C:\test.asm(73) : error A2006: undefined symbol : hwnd
C:\test.asm(73) : error A2114: INVOKE argument type mismatch : argument : 1
C:\test.asm(74) : error A2006: undefined symbol : hwnd
C:\test.asm(74) : error A2114: INVOKE argument type mismatch : argument : 1
C:\test.asm(76) : error A2006: undefined symbol : msg
C:\test.asm(76) : error A2114: INVOKE argument type mismatch : argument : 1
C:\test.asm(78) : error A2006: undefined symbol : msg
C:\test.asm(78) : error A2114: INVOKE argument type mismatch : argument : 1
C:\test.asm(79) : error A2006: undefined symbol : msg
C:\test.asm(79) : error A2114: INVOKE argument type mismatch : argument : 1
C:\test.asm(43) : error A2006: undefined symbol : wc
C:\test.asm(44) : error A2006: undefined symbol : wc
C:\test.asm(45) : error A2006: undefined symbol : wc
C:\test.asm(46) : error A2006: undefined symbol : wc
C:\test.asm(47) : error A2006: undefined symbol : wc
C:\test.asm(49) : error A2006: undefined symbol : wc
C:\test.asm(50) : error A2006: undefined symbol : wc
C:\test.asm(51) : error A2006: undefined symbol : wc
C:\test.asm(52) : error A2006: undefined symbol : wc
C:\test.asm(54) : error A2006: undefined symbol : wc
C:\test.asm(55) : error A2006: undefined symbol : wc
C:\test.asm(57) : error A2006: undefined symbol : wc
C:\test.asm(72) : error A2006: undefined symbol : hwnd
C:\test.asm(82) : error A2006: undefined symbol : msg
’®¬ ў гбва®©б⢥ C *Ґ Ё¬ҐҐв ¬ҐвЄЁ.
‘ҐаЁ©*л© *®¬Ґа ⮬*: 3438-BA06

‘®¤Ґа¦Ё¬®Ґ Ї*ЇЄЁ C:\

03.03.2007 21:43 2я667 test.asm
1 д*©«®ў 2я667 Ў*©в
0 Ї*Ї®Є 437я686я272 Ў*©в бў®Ў®¤*®

какя то лажа при вызове winmain

что не так у него пока сам понять еще не в состоянии
 
Ответить с цитированием

  #2  
Старый 04.03.2007, 02:13
Аватар для hidden
hidden
Постоянный
Регистрация: 23.04.2006
Сообщений: 622
Провел на форуме:
5887054

Репутация: 1292


По умолчанию

Там допущена всего одна ошибка, произащедшая скорее всего во время того как ты копипастил код
Ты её найдёшь без проблем, если сравнишь этот сорец с практически любым другим из примеров
 
Ответить с цитированием

  #3  
Старый 04.03.2007, 03:01
Аватар для taha
taha
Постоянный
Регистрация: 20.08.2006
Сообщений: 327
Провел на форуме:
2472378

Репутация: 1077
По умолчанию

В след раз, ставь тег "CODE" (у меня стоко ошибок было)
а опечатка то всего одна

Код:
.386
.model flat, stdcall
option casemap:none

include C:\masm32\include\windows.inc
include C:\masm32\include\user32.inc
include C:\masm32\include\kernel32.inc
includelib C:\masm32\lib\user32.lib
includelib C:\masm32\lib\kernel32.lib

WinMain proto :DWORD,:DWORD,:DWORD,:DWORD

.DATA
ClassName db "SimpleWinClass",0
AppName db "Our First Window",0

.DATA?
hInstance HINSTANCE ?
CommandLine LPSTR ?

.CODE ; Здесь начинается наш код
start:
invoke GetModuleHandle, NULL ; Взять хэндл пpогpаммы
; Под Win32, hmodule==hinstance mov
; hInstance,eax
mov hInstance,eax
invoke GetCommandLine ; Взять командную стpоку. Вы не обязаны
; вызывать эту функцию если ваша
; пpогpамма не обpабатывает командную стpоку.
mov CommandLine,eax
invoke WinMain, hInstance,NULL,CommandLine,SW_SHOWDEFAULT
invoke ExitProcess, eax ; Выйти из пpогpаммы.
; Возвpащаемое значение, помещаемое в eax,
; беpется из WinMain.
WinMain proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:DWORD

LOCAL wc:WNDCLASSEX ; создание локальных пеpеменных в стеке
LOCAL msg:MSG
LOCAL hwnd:HWND

mov wc.cbSize,SIZEOF WNDCLASSEX ; заполнение стpуктуpы wc
mov wc.style, CS_HREDRAW or CS_VREDRAW
mov wc.lpfnWndProc, OFFSET WndProc
mov wc.cbClsExtra,NULL
mov wc.cbWndExtra,NULL
push hInstance
pop wc.hInstance
mov wc.hbrBackground,COLOR_WINDOW+1
mov wc.lpszMenuName,NULL
mov wc.lpszClassName,OFFSET ClassName
invoke LoadIcon,NULL,IDI_APPLICATION
mov wc.hIcon,eax
mov wc.hIconSm,eax
invoke LoadCursor,NULL,IDC_ARROW
mov wc.hCursor,eax
invoke RegisterClassEx, addr wc ; pегистpация нашего класса окна
invoke CreateWindowEx,NULL,\
ADDR ClassName,\
ADDR AppName,\
WS_OVERLAPPEDWINDOW,\
CW_USEDEFAULT,\
CW_USEDEFAULT,\
CW_USEDEFAULT,\
CW_USEDEFAULT,\
NULL,\
NULL,\
hInst,\
NULL

mov hwnd,eax
invoke ShowWindow, hwnd,CmdShow ; отобpазить наше окно на десктопе
invoke UpdateWindow, hwnd ; обновить клиентскую область
.WHILE TRUE ; Enter message loop
invoke GetMessage, ADDR msg,NULL,0,0
.BREAK .IF (!eax)
invoke TranslateMessage, ADDR msg
invoke DispatchMessage, ADDR msg
.ENDW
mov eax,msg.wParam ; сохpанение возвpащаемого значения в
; eax
ret

WinMain endp

WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM

.IF uMsg==WM_DESTROY ; если пользователь закpывает окно
invoke PostQuitMessage,NULL ; выходим из пpогpаммы
.ELSE
invoke DefWindowProc,hWnd,uMsg,wParam,lParam ; Дефаултная функция
; обpаботки окна
ret
.ENDIF
xor eax,eax
ret

WndProc endp
end start

Последний раз редактировалось TAHA; 04.03.2007 в 03:14..
 
Ответить с цитированием

  #4  
Старый 04.03.2007, 04:38
Аватар для KEZ
KEZ
Banned
Регистрация: 18.05.2005
Сообщений: 1,981
Провел на форуме:
1941233

Репутация: 2726


По умолчанию

незнаю... я не читаю посты я просто так пишу

а вот упрёк masm
Цитата:
Inst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,C mdShowWORD
нахуя они придумали "типы" HINSTANCE, LPSTR, DWORD ?
помоему смысл понимания ассемблерного кода - достучаться до задней точки мозга дабы обьяснить что все это dd, dword - 4байта (в 32-б с-мах)

ну пусть ещё сделают LPCTSTR2 которая будет dword
и SUPERPUPERTYPE который будет значит также dword
и MY_KAK_BI_DWORD который тоже dword


upd ваш хэк форум смайлики не в тему ставит ...

Последний раз редактировалось KEZ; 04.03.2007 в 04:44..
 
Ответить с цитированием

  #5  
Старый 04.03.2007, 04:47
Аватар для taha
taha
Постоянный
Регистрация: 20.08.2006
Сообщений: 327
Провел на форуме:
2472378

Репутация: 1077
По умолчанию

Цитата:
нахуя они придумали "типы" Hinstance, Lpstr, Dword ?
сам не знаю))) может максимально к си хотели приблизить, там еще больше, мне не понятных типов, и звёздочек, рюшечек всяких

скорее всего для простоты понимания, чтоб сразу было видно, hInstance - хэндл

Последний раз редактировалось TAHA; 04.03.2007 в 04:49..
 
Ответить с цитированием

  #6  
Старый 04.03.2007, 04:59
Аватар для hidden
hidden
Постоянный
Регистрация: 23.04.2006
Сообщений: 622
Провел на форуме:
5887054

Репутация: 1292


По умолчанию

Цитата:
Сообщение от KEZ  
нахуя они придумали "типы" HINSTANCE, LPSTR, DWORD ?
помоему смысл понимания ассемблерного кода - достучаться до задней точки мозга дабы обьяснить что все это dd, dword - 4байта (в 32-б с-мах)

ну пусть ещё сделают LPCTSTR2 которая будет dword
и SUPERPUPERTYPE который будет значит также dword
и MY_KAK_BI_DWORD который тоже dword
Поэтому я и нелюблю masm'ом и С++, помимо этих типов ещё это обьявление функций зараннее, тоже чушь ИМХО, но если человеку нравится мучить себя этой дрянью, почему бы и не помочь Пусть сам сделает свой выбор.
 
Ответить с цитированием

  #7  
Старый 04.03.2007, 05:58
Аватар для KEZ
KEZ
Banned
Регистрация: 18.05.2005
Сообщений: 1,981
Провел на форуме:
1941233

Репутация: 2726


По умолчанию

пускай в си плюс плюс все останется - там это как раз очень к месту и удобно потому что это все-таки язык и там не нужно видеть самую суть. ассемблер же втупую набор заранее известных инструкций.
 
Ответить с цитированием

  #8  
Старый 04.03.2007, 06:07
Аватар для hidden
hidden
Постоянный
Регистрация: 23.04.2006
Сообщений: 622
Провел на форуме:
5887054

Репутация: 1292


По умолчанию

Тот же самый пример, зачем в c++ HINSTANCE, LPSTR, DWORD они ведь всё-равно значат одно и тоже, но не дают подставить одно в другое без изменения типа, в чём тогда смысл?
Вот Perl вот это язык, никаких типов и никакой сути.
 
Ответить с цитированием

  #9  
Старый 04.03.2007, 06:15
Аватар для KEZ
KEZ
Banned
Регистрация: 18.05.2005
Сообщений: 1,981
Провел на форуме:
1941233

Репутация: 2726


По умолчанию

Дело как раз в том что там они не значат одно и тоже.
С-код - это схема. Схема приложения. Части этой схема работают с разными данными, соответственно разных типов. Тип LPSTR - указатель на строку, а DWORD - положительное 4-байтное значение. Хоть указатель тоже четырехбайтный, нужно знать где передать указатель, где хенлд, а где просто число. Если кодер начинает использовать для разработки "напрямую" ассемблер - он соглашается использовать один тип (реальный, настоящий, тут у нас dword) для описания того что раньше делал кучей других, описаных в Win SDK. Так нафига же ему обратно впихивать то что он только что согласился забыть, чтобы успешно кодить на асм?
 
Ответить с цитированием

  #10  
Старый 04.03.2007, 21:19
Аватар для genom--
genom--
Постоянный
Регистрация: 09.07.2006
Сообщений: 937
Провел на форуме:
1948091

Репутация: 1686


По умолчанию

всем спасибо ------- с++ я не знаю и знать нихочу а вот асм иногда накатывает пытаюсь учить =)
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Local Root Exploits 3er0 *nix 25 12.02.2007 15:00
asm + girl = ? blackybr Болталка 3 28.01.2007 14:49
Asm Bill С/С++, C#, Delphi, .NET, Asm 9 16.04.2006 19:47
Программирование, как оно есть... Mertvii-Listopad Статьи 0 20.03.2006 01:22



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ