[ Assembler ] — начинающим: задаем вопросы

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by !_filin_!, 25 May 2007.

  1. taha

    taha Elder - Старейшина

    Joined:
    20 Aug 2006
    Messages:
    399
    Likes Received:
    330
    Reputations:
    251
    Code:
    include 'include\win32ax.inc'
    .code
     Buffer db 0x74
    
    start:
      stdcall [GetCurrentProcessId]
    
      stdcall [OpenProcess],0x0028,TRUE,eax
    
      push NULL                ; pBytesWritten = NULL
      push 1                   ; BytesToWrite  = 1
      push Buffer              ; [Buffer]      = 0x74
      push WriteHere           ; Address of WriteHere
      push eax                 ; hProcess
      call [WriteProcessMemory]
    
    WriteHere:  JMP WriteHere
    
    .end start
    push Buffer ; [Buffer] = 0x74
    push eax ; hProcess


    Работало, пока не завопил нод и не удалил файл =\\ епанутый какой то =\\
     
    2 people like this.
  2. Jes

    Jes Elder - Старейшина

    Joined:
    16 Apr 2007
    Messages:
    370
    Likes Received:
    391
    Reputations:
    34
    как такая 'конструкция' в фасме выглядит?
    Code:
    code1 label byte
    	db 68h 
    	Hooker1 dd 0
    	db 0c3h
     
    1 person likes this.
  3. GlOFF

    GlOFF Elder - Старейшина

    Joined:
    8 May 2006
    Messages:
    689
    Likes Received:
    484
    Reputations:
    4
    Если я правильно понел вопрос :)
     
    1 person likes this.
  4. Jes

    Jes Elder - Старейшина

    Joined:
    16 Apr 2007
    Messages:
    370
    Likes Received:
    391
    Reputations:
    34
    в Hooker1 запишется адрес обработчика ,
    чтобы затем WriteProcessMemory,-1,[EntryAdress], code1 (без offset прим фасм) ,code1_size,0
    а фасм такую директиву (code1 label byte) не принимает :/
     
    #264 Jes, 30 Apr 2008
    Last edited: 30 Apr 2008
    4 people like this.
  5. desTiny

    desTiny Elder - Старейшина

    Joined:
    4 Feb 2007
    Messages:
    1,006
    Likes Received:
    444
    Reputations:
    94
    а зачем тебе тут label?
    code1:
    db 68h
    Hooker1:
    dd 0
    db 0C3h


    а дальше культурно как-нибудь так:
    mov byte [code1], 0c3h
    jmp code1
     
    1 person likes this.
  6. GlOFF

    GlOFF Elder - Старейшина

    Joined:
    8 May 2006
    Messages:
    689
    Likes Received:
    484
    Reputations:
    4
    Тем более аверов и файеров привлекать вызовом WriteProcessMemory. :)
    Лишние подозрения
     
    1 person likes this.
  7. desTiny

    desTiny Elder - Старейшина

    Joined:
    4 Feb 2007
    Messages:
    1,006
    Likes Received:
    444
    Reputations:
    94
    Да, кстати, на всякий случай: вот так делать вроде бы нельзя (раньше нелбзя было точно, сейчас, скорее всего, тоже - давненько я таким не занимался :) ):

    Code:
    push code2
    mov byte[code1], 0C3h
    code1:
      push 0
      ret
    code2:
      ...
    
    будет ошибка.

    Надо так:
    Code:
    push code2
    mov byte[code1], 0C3h
    jmp code1
    code1:
      push 0
      ret
    code2:
      ...
    
    Ибо у прцессора есть очередь команд, которая сбрасывается только при некоторых командах, например jmp.
     
    1 person likes this.
  8. GlOFF

    GlOFF Elder - Старейшина

    Joined:
    8 May 2006
    Messages:
    689
    Likes Received:
    484
    Reputations:
    4
    desTiny Да от препроцесора зависит. на masm думаю и первый вариант будет норм...
     
    #268 GlOFF, 30 Apr 2008
    Last edited: 30 Apr 2008
    1 person likes this.
  9. taha

    taha Elder - Старейшина

    Joined:
    20 Aug 2006
    Messages:
    399
    Likes Received:
    330
    Reputations:
    251
    Не знаю как раньше, но сейчас
    Code:
    format PE GUI 4.0
    entry start
    
    include 'win32ax.inc'
    
    section '.text' readable writable executable
    start:
       push code2
       mov byte[code1], 0C3h
    code1:
       push 0
       ret
    code2:
       nop
    
    Работает нормально!
    Code:
    00401000 >  68 0F104000     push testmod.0040100F
    00401005    C605 0C104000 C>mov byte ptr ds:[40100C],0C3
    0040100C    6A 00           push 0
    0040100E    C3              retn
    0040100F    90              nop
    00401010    0000            add byte ptr ds:[eax],al
    
     
  10. ZET36

    ZET36 Elder - Старейшина

    Joined:
    8 Oct 2007
    Messages:
    250
    Likes Received:
    49
    Reputations:
    0
    Подскажите пожайлусто где найти список Api функций с как можно подробным описанием и примерами для начинающих
     
  11. taha

    taha Elder - Старейшина

    Joined:
    20 Aug 2006
    Messages:
    399
    Likes Received:
    330
    Reputations:
    251
    http://msdn.microsoft.com/en-us/library/aa383723(VS.85).aspx
     
    1 person likes this.
  12. ZET36

    ZET36 Elder - Старейшина

    Joined:
    8 Oct 2007
    Messages:
    250
    Likes Received:
    49
    Reputations:
    0
    Можно привести в пример исходник который открывает файл и выводит его содержимое. Мне для примера что бы узнать как обращаться с функциями.
     
  13. taha

    taha Elder - Старейшина

    Joined:
    20 Aug 2006
    Messages:
    399
    Likes Received:
    330
    Reputations:
    251
    http://wasm.ru/article.php?article=1001012
    http://wasm.ru/article.php?article=1001013

    на сколько помню не выводит, но работа с файлами показана
     
    2 people like this.
  14. KIR@PRO

    KIR@PRO from Exception

    Joined:
    26 Dec 2007
    Messages:
    826
    Likes Received:
    291
    Reputations:
    359
    может ктонибудь сказать как написать загрузочник для винды.... по виду допустим такой де как у windows xp но всегда с меню.....

    и если ктонить даст ссылочки по загрузочникам и их написанию буду очень благодарен...))))
     
    _________________________
  15. _Great_

    _Great_ Elder - Старейшина

    Joined:
    27 Dec 2005
    Messages:
    2,032
    Likes Received:
    1,119
    Reputations:
    1,139
    взять и написать. перейти в защищенный режим, загрузить ядро в память, Hal, ветки реестра нужные, загрузочные драйвера и проинициализировать все это дело
     
    1 person likes this.
  16. KIR@PRO

    KIR@PRO from Exception

    Joined:
    26 Dec 2007
    Messages:
    826
    Likes Received:
    291
    Reputations:
    359
    _Great_ ммм это я понимаю я про код говорю...!!!!! ты думаешь еслиб я знал как написать код и не знал как это все идет поп порядку(то что ты обьяснил) я бы стал здесь спрашивать?
     
    _________________________
  17. _Great_

    _Great_ Elder - Старейшина

    Joined:
    27 Dec 2005
    Messages:
    2,032
    Likes Received:
    1,119
    Reputations:
    1,139
    ты долбанулся такое самому писать?
    эта тема вопросы для новичков.. ты с какой башни упал

    ЗЫ. ты в первом посте всетаки спросил как написать, а не написать за тебя. или ты так часто меняешь свои слова?
     
    1 person likes this.
  18. KIR@PRO

    KIR@PRO from Exception

    Joined:
    26 Dec 2007
    Messages:
    826
    Likes Received:
    291
    Reputations:
    359
    ага все понятно....
     
    _________________________
  19. NorB

    NorB Elder - Старейшина

    Joined:
    20 Jul 2007
    Messages:
    109
    Likes Received:
    12
    Reputations:
    -2
    Code:
    push	ax
      	push	dx
    
      	lea 	dx, Str
    	mov	ah,0ah
    	int	21h
    
    	pop	dx
    	pop	ax
    эт кусок для ввода строки.. подскажите как узнать количество введенных символов мне, и занести в регистр ето число символов?((( очень прошу просто как узнать длину строки, на тасме.
     
    #279 NorB, 9 May 2008
    Last edited by a moderator: 16 May 2008
  20. Jes

    Jes Elder - Старейшина

    Joined:
    16 Apr 2007
    Messages:
    370
    Likes Received:
    391
    Reputations:
    34
    в статье 'От зеленого к Красному' в примере сплайсинга на масме дан код остановки потоков , перевел в фасм , при call из DllMain функция запуска потоков вылетает с ошибкой ( 0xcКучанулей142) , а при вызова из вне (тестового приложения) всё работает отлично (хотя приложение однопоточное и перехват устанавливается даже без остановки потоков ... но всетаки хотелось бы чтоб правильно работало :/ )...

     
    3 people like this.