ip-generator

Тема в разделе "WASM.ASSEMBLER", создана пользователем Flasher, 23 мар 2005.

  1. Flasher

    Flasher Member

    Публикаций:
    0
    Регистрация:
    31 янв 2004
    Сообщения:
    640
    Здравствуйте!

    Нужно написать ip-генератор не используя api-функций, тоесть генерить и прямыком в mov sin.sin_addr,eax, без wsprintfA/inet_addr.



    Решил начать с исходника inet_addr, но как оказалось, там юзается atodw, можно-ли как-нить обходиться без этой функции ?


    Код (Text):
    1. _inet_addr proc wdIP:dword
    2.      local byte1:byte
    3.      local byte2:byte
    4.      local byte3:byte
    5.      local byte4:byte
    6.      local sa:dword
    7.        mov ecx,wdIP
    8.        lea edx,byte1
    9.        @@:push edx
    10.        mov esi,ecx
    11.        xor eax,eax
    12.        _l:lodsb
    13.        cmp al,'0'
    14.        jl _n
    15.        jmp _l
    16.        _n:dec esi
    17.        mov byte ptr [esi],0
    18.        push eax
    19.        mov sa,esi
    20.        invoke atodw,ecx
    21.        pop ebx
    22.        mov byte ptr [esi],bl
    23.        pop edx
    24.        mov byte ptr [edx],al
    25.        dec edx
    26.        mov ecx,sa
    27.        mov al,byte ptr [ecx]
    28.        inc ecx
    29.        cmp al,'.'
    30.        je @B
    31.        mov ah,byte4
    32.        mov al,byte3
    33.        shl eax,16
    34.        mov ah,byte2
    35.        mov al,byte1
    36.        ret
    37. _inet_addr endp
    38.  


    Спасибо!
     
  2. bober

    bober New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2005
    Сообщения:
    153
    Если просто(без правил) генерить то используй любой генератор DWORD_дов, в чем проблема? 127.0.0.1 == 0100007fh. Используй bswap для полученния нетбайт.
     
  3. Flasher

    Flasher Member

    Публикаций:
    0
    Регистрация:
    31 янв 2004
    Сообщения:
    640
    Не совсем понял.

    вот генератор:
    Код (Text):
    1.      _rand proc;<((((((((((((((((((((((((((()
    2.        push edx                           ;()
    3.        push ecx                           ;()
    4.        mov ecx,eax                        ;()
    5.        xor edx,edx                        ;()
    6.        db 0fh,031h                        ;()
    7.        inc eax                            ;()
    8.        imul eax,eax,08088405h             ;()
    9.        mul eax                            ;()
    10.        mul ecx                            ;()
    11.        mov eax,edx                        ;()
    12.        pop ecx                            ;()
    13.        pop edx                            ;()
    14.        ret                                ;()
    15.      _rand endp;<((((((((((((((((((((((((((()




    как собрать 4 случайных числа чтоб потом пропустить через bswap ?
     
  4. bober

    bober New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2005
    Сообщения:
    153
    Генератор - это такая хреновина которая что-то создает, любо по опредиленным правилам либо как попало. (Я так понаю это слово). Так вот если у тебя нет никаких правил

    то сделай вот так:



    call _rand

    mov sin.sin_addr, eax



    Че непонятно то???