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

[ASSEMBLER] Задаем вопросы (для новичков)
  #1  
Старый 25.05.2007, 17:31
Аватар для !_filin_!
!_filin_!
Участник форума
Регистрация: 07.01.2007
Сообщений: 103
Провел на форуме:
726068

Репутация: 122
Отправить сообщение для !_filin_! с помощью ICQ
По умолчанию [ASSEMBLER] Задаем вопросы (для новичков)

надо в меседжбоксе вывести содержание переменной, как реализовать?

Great: В этой теме задаем простые вопросы по ассемблеру (специально для новичков)

Последний раз редактировалось _Great_; 26.05.2007 в 14:12..
 
Ответить с цитированием

  #2  
Старый 25.05.2007, 17:52
Аватар для А®ТеS
А®ТеS
Участник форума
Регистрация: 25.11.2006
Сообщений: 291
Провел на форуме:
1537850

Репутация: 536
Отправить сообщение для А®ТеS с помощью ICQ
По умолчанию

Элементарно:
Код:
...
.data
msgtext db "Hello, WORLD", 0h
msgcap db "It is ASM!!! =)", 0h
...
.code
start:
INVOKE MessageBoxA, 0 offset msgtext, offset msgcap, 0
end start

Последний раз редактировалось De-visible; 29.04.2008 в 01:25.. Причина: незабываем теги [code][/code]
 
Ответить с цитированием

  #3  
Старый 25.05.2007, 18:00
Аватар для !_filin_!
!_filin_!
Участник форума
Регистрация: 07.01.2007
Сообщений: 103
Провел на форуме:
726068

Репутация: 122
Отправить сообщение для !_filin_! с помощью ICQ
По умолчанию

гг..ты немного...а точнее совсем нетак понял. Значение в переменную заносится во время работы проги, например я от функции получаю число. и его надо вывести на месседж бокс вот примерный код:
...................
Код:
.data
msgtext db "Hello, WORLD", 0h
msgcap db "It is ASM!!! =)", 0h
messedg db ?
...............
Код:
code
start:
mov messedg, 15
INVOKE MessageBoxA, 0 offset msgtext, offset msgcap, 0
end start
Использовал вместо функции MOV, соответственно как на месседж бокс вывести содержание переменной messedg (число 15)

Последний раз редактировалось De-visible; 29.04.2008 в 01:26..
 
Ответить с цитированием

  #4  
Старый 25.05.2007, 21:07
Аватар для da_ff
da_ff
Участник форума
Регистрация: 11.07.2006
Сообщений: 125
Провел на форуме:
413927

Репутация: 71
Отправить сообщение для da_ff с помощью ICQ
По умолчанию

а сзади дописать 0h у messedg? так сказать привести строку к ASCIIZ виду

Последний раз редактировалось da_ff; 25.05.2007 в 21:14..
 
Ответить с цитированием

  #5  
Старый 26.05.2007, 12:02
Аватар для slesh
slesh
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме:
3288241

Репутация: 3349


Отправить сообщение для slesh с помощью ICQ
По умолчанию

Просто так вывести нельзя. так число - это не строка.
Поэтому нужно перевести из числа в строку. Можно сделать это вручную, но лучше юзать API функцию.
Вот код на FASM. Выводит содержимое регистра.
Код:
format PE GUI
entry _start
include 'd:\coding\fasm\include\win32ax.inc'
include 'd:\coding\fasm\include\encoding\win1251.inc'
include 'd:\coding\fasm\include\apia\user32.inc'
section '.data' data readable writeable
formats db "%d",0
zagolovok db "Содержимое регистра",0
temp db 256 dup(?)
section '.code' code readable executable
_start:
mov eax,-1234568
invoke wsprintf,temp,formats,eax
invoke MessageBox,0,temp,zagolovok,MB_OK
invoke ExitProcess,0
section '.idata' import data readable writeable
library kernel32,'KERNEL32.DLL',user32,'USER32.DLL'
include 'd:\coding\fasm\include\apia\kernel32.inc'

Последний раз редактировалось slesh; 26.05.2007 в 12:07..
 
Ответить с цитированием

  #6  
Старый 04.07.2008, 06:02
Аватар для *CHEL*
*CHEL*
Новичок
Регистрация: 03.07.2008
Сообщений: 7
Провел на форуме:
21070

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

Цитата:
Сообщение от slesh  
Просто так вывести нельзя. так число - это не строка.
Поэтому нужно перевести из числа в строку. Можно сделать это вручную, но лучше юзать API функцию.
Вот код на FASM. Выводит содержимое регистра.
Код:
format PE GUI
entry _start
include 'd:\coding\fasm\include\win32ax.inc'
include 'd:\coding\fasm\include\encoding\win1251.inc'
include 'd:\coding\fasm\include\apia\user32.inc'
section '.data' data readable writeable
formats db "%d",0
zagolovok db "Содержимое регистра",0
temp db 256 dup(?)
section '.code' code readable executable
_start:
mov eax,-1234568
invoke wsprintf,temp,formats,eax
invoke MessageBox,0,temp,zagolovok,MB_OK
invoke ExitProcess,0
section '.idata' import data readable writeable
library kernel32,'KERNEL32.DLL',user32,'USER32.DLL'
include 'd:\coding\fasm\include\apia\kernel32.inc'
wsprintf сишная функция и ответственность за выравнивание стека не несёт.
Вызывающая программа сама должна его выравнивать (add esp,PushedSize где PushedSize колво байт, переданных через стек проге).

В FASM'e для вызова сишных функций существует макрос cinvoke
 
Ответить с цитированием

  #7  
Старый 26.05.2007, 14:57
Аватар для Xserg
Xserg
Участник форума
Регистрация: 09.12.2006
Сообщений: 135
Провел на форуме:
426226

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

Решил тоже ассемблер поизучать.
Пишется таким способом тяжело, зато инжектится в чужой процесс элементарно.
IMНO зачем тогда ассемблер нужен.

INVOKE wvsprintf,offset outst,offset inst,var1,var2, .....
h ttp://msdn2.microsoft.com/en-us/library/ms647551.aspx
Преобразует содержание переменной(ых) в строку.

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

kernel32 EQU edx
user32 EQU ebx
CallFunc MACRO reg,zText:VARARG
     LOCAL m1
           call m1
           db zText,0
           m1:
      push reg
      call ebp
      call eax
             ENDM
cText MACRO zText:VARARG
      LOCAL m1
          call m1
          db zText,0
          m1:
        ENDM
;----------------------------------------------
       .code
start:
  mov edx,[esp]       
  call sfind_kern_b
; edx kernel32.dll ModuleHandle 
; ebx User32.dll   ModuleHandle 
; ebp = GetProcAddress(GetModuleHandle('kernel32.dll),'GetProcAddress');
  push kernel32 ;--1
cText  'user32.dll'
    CallFunc kernel32,'LoadLibraryA' 
     mov user32,eax
  pop kernel32  ;--1
;--------------------------------------------------
CallFunc kernel32,'GetCurrentProcessId' 
;--------------------------------------------------
; INVOKE wvsprintf,offset outst,offset inst,var1,var2, .....
; http://msdn2.microsoft.com/en-us/library/ms647551.aspx
;-------------------
    mov ecx,10 
m1:  push 0
loop m1   ;10*4+
    mov ecx,esp ;offset outst
    push ebp ;--1
    push ebx ;--2
    push eax ;ProcessId var1
    push esp ;var1
cText 'It is MASM!!! =)%#8IX',0 ;//offset inst
    push ecx ;offset outst
    CallFunc user32,'wvsprintfA' 
    add esp,4 ; var1 dellete
    pop ebx ;--2
    pop ebp ;--1
    mov ecx,esp ;offset outst
;---------------------------------------------------     
;-- MessageBox ----------------------------------
      push 0
cText 'ProcessId'
      push ecx ;offset outst
      push 0
      CallFunc user32,'MessageBoxA'
add esp,10*4 ;10*4-
ret                                                    ; exit proocess
;-------------------------------------------    
;-- No comments -- Не отлажено ------
sfind_kern_b: ;edx base
sfind_kern_bs:
  and edx,0ffff0000h
 cmp word ptr [edx],05A4Dh
jz sfind_kern_b1
  sub edx,1000h
  jmp sfind_kern_bs
sfind_kern_b1:
  mov eax,[edx+3ch]
  mov ebx,edx
  add ebx,eax
 cmp word ptr[ebx],04550h
jz sfind_kern_b2
  sub edx,1000h
  jmp sfind_kern_bs
GPA db 'GetProcAddress',0
sfind_kern_b2:
  mov esi,offset GPA
  mov ebx,EDX
  add ebx,03Ch
  mov eax,[ebx]
  mov ebx,EDX
  add ebx,eax
  add ebx,160h-0e8h
  mov ecx,EDX
  add ecx,[ebx]
  add ecx,12 ; adr export
  mov ebx,EDX
  add ebx,[ecx] 
  mov edi,ebx
  xor eax,eax 
sadrxor:
  push edi
  push esi
sgpa_fefe:
  pop edi
  pop esi
     inc esi 
  push esi
  push edi
   mov ecx,0Fh
   repe cmpsb  
   cmp ecx,0
  jz sgpa_fef
  mov cl,0
  cmp [esi],cl  
  jnz sgpa_fefe
  inc eax
  jmp  sgpa_fefe
 sgpa_fef:
  pop edi
  pop esi
  push eax
  mov ebx,EDX
  add ebx,03Ch
  mov eax,[ebx]
  mov ebx,EDX
  add ebx,eax
  add ebx,160h-0e8h
  mov ecx,EDX
  add ecx,[ebx]
  pop ebx  
  dec ebx
  MOV EAX,[ECX+24h]
  add eax,edx
  MOV bx,[eax+ebx*2]
  MOV EAX,[ECX+1ch]
  add eax,edx
  MOV EAX,[eax+ebx*4]
  add eax,edx
  mov ebp,eax
ret
end start
Как бы все это попроще писать?
Особенно переменные в стеке.
 
Ответить с цитированием

  #8  
Старый 26.05.2007, 15:05
Аватар для tclover
tclover
Banned
Регистрация: 13.12.2005
Сообщений: 1,091
Провел на форуме:
9751364

Репутация: 1847


По умолчанию

Мне нужна таблица системных вызовов линукс, чтобы с регистрами и все дела =\
Есть у кого?
 
Ответить с цитированием

  #9  
Старый 26.05.2007, 16:42
Аватар для _Great_
_Great_
Флудер
Регистрация: 27.12.2005
Сообщений: 2,372
Провел на форуме:
5339610

Репутация: 4360


Отправить сообщение для _Great_ с помощью ICQ
По умолчанию

Тискаем гугл

второй линк: http://www.die.net/doc/linux/man/man2/syscalls.2.html
читай-не хочу
 
Ответить с цитированием

  #10  
Старый 26.05.2007, 17:37
Аватар для slesh
slesh
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме:
3288241

Репутация: 3349


Отправить сообщение для slesh с помощью ICQ
По умолчанию

2 da_ff. Типа сумничал?
Можно и сделать деление, но это только в тех случаях когда пишешь под DOS. потому что там нет API функций. Если нужно под дос, то могу выложить примерчик!
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопросы для новичков! (faq) PEPSICOLA С/С++, C#, Delphi, .NET, Asm 92 14.05.2010 17:59
Обзор программ для очистки жёсткого диска v1ru$ Soft - Windows 21 17.01.2010 21:07
ОС с нуля z01b С/С++, C#, Delphi, .NET, Asm 36 03.07.2008 15:30
Лучший софт для Linux _-Ramos-_ Soft - *nix 11 15.01.2008 12:08
Взлом Unix а silveran *nix 4 21.12.2005 22:46



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


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




ANTICHAT.XYZ