не получается проанализировать код

Discussion in 'WASM.WIN32' started by n1kt0, Nov 8, 2007.

  1. n1kt0

    n1kt0 Забанен

    Blog Posts:
    0
    Joined:
    Jul 18, 2007
    Messages:
    160
    Code (Text):
    1. .586p
    2.         .model  flat
    3.  
    4.  extrn  ExitProcess:PROC
    5.  
    6.         .data
    7.  
    8.  limit  equ     5
    9.  
    10.         db      0
    11.  
    12.  
    13.         .code
    14.  
    15.  test:
    16.         call    delta
    17.  delta:
    18.         pop     ebp
    19.         sub     ebp,offset delta
    20.  
    21.         mov     esi,[esp]
    22.         and     esi,0FFFF0000h
    23.         call    GetK32
    24.  
    25.         push    00000000h
    26.         call    ExitProcess
    27.  
    28.  GetK32:
    29.  
    30.  __1:
    31.         cmp     byte ptr [ebp+K32_Limit],00h
    32.         jz      WeFailed
    33.  
    34.         cmp     word ptr [esi],"ZM"
    35.         jz      CheckPE
    36.  
    37.  __2:
    38.         sub     esi,10000h
    39.         dec     byte ptr [ebp+K32_Limit]
    40.         jmp     __1
    41.  
    42.  
    43.  CheckPE:
    44.         mov     edi,[esi+3Ch]
    45.         add     edi,esi
    46.         cmp     dword ptr [edi],"EP"
    47.         jz      WeGotK32
    48.         jmp     __2
    49.  WeFailed:
    50.         mov     esi,0BFF70000h
    51.  WeGotK32:
    52.         xchg    eax,esi
    53.         ret
    54.  
    55.  K32_Limit      dw      limit
    56.  
    57. end     test
    58.  
    59.  
    60. в отладчике останавливается код на: cmp     byte ptr [ebp+K32_Limit],00h
    61. и все. Думаю сделать так:
    62.  
    63.         .586p
    64.         .model  flat
    65.  
    66.  extrn  ExitProcess:PROC
    67.  
    68.         .data
    69.  
    70.  limit  equ     5
    71.  
    72.         db      0
    73.  
    74.  
    75.         .code
    76.  
    77.  test:
    78. ;        call    delta
    79.  ;delta:
    80.         pop     ebp
    81.  ;       sub     ebp,offset delta
    82.  
    83.         mov     esi,[esp]
    84.         and     esi,0FFFF0000h
    85.         call    GetK32
    86.  
    87.         push    00000000h
    88.         call    ExitProcess
    89.  
    90.  GetK32:
    91.  
    92.  __1:
    93.         cmp     byte ptr [ebp+K32_Limit],00h
    94.         jz      WeFailed
    95.  
    96.         cmp     word ptr [esi],"ZM"
    97.         jz      CheckPE
    98.  
    99.  __2:
    100.         sub     esi,10000h
    101.         dec     byte ptr [ebp+K32_Limit]
    102.         jmp     __1
    103.  
    104.  
    105.  CheckPE:
    106.         mov     edi,[esi+3Ch]
    107.         add     edi,esi
    108.         cmp     dword ptr [edi],"EP"
    109.         jz      WeGotK32
    110.         jmp     __2
    111.  WeFailed:
    112.         mov     esi,0BFF70000h
    113.  WeGotK32:
    114.         xchg    eax,esi
    115.         ret
    116.  
    117.  K32_Limit      dw      limit
    118.  
    119. end     test
    и у нас выталкнется в ebp адресс возврата на кернел
    так что же делать с: cmp byte ptr [ebp+K32_Limit],00h ? [ebp+K32_Limit]=значение регистра+что ?
    у нас получается
    limit equ 5
    K32_Limit dw limit
    это вообще как ?
    но дело в том, что Оля останавливается и ничего не делает.
     
  2. q_q

    q_q New Member

    Blog Posts:
    0
    Joined:
    Oct 5, 2003
    Messages:
    1,706
    n1kt0
    У сегмента кода установлен атрибут доступности на запись?
     
  3. n1kt0

    n1kt0 Забанен

    Blog Posts:
    0
    Joined:
    Jul 18, 2007
    Messages:
    160
    это короче пример: путиводитель по написанию вирусов ring3 --на уровне кодинга
    пример взят без изминений, во сижу и думаю что делать. как открыть сегмент кода доступным для записи ?
     
  4. rain

    rain New Member

    Blog Posts:
    0
    Joined:
    Apr 22, 2006
    Messages:
    976
    статически линкеру, /section:.text,RWE либо динамически VirtualProtect()
     
  5. n1kt0

    n1kt0 Забанен

    Blog Posts:
    0
    Joined:
    Jul 18, 2007
    Messages:
    160
    спасибо
     
  6. q_q

    q_q New Member

    Blog Posts:
    0
    Joined:
    Oct 5, 2003
    Messages:
    1,706
    n1kt0
    это короче пример: путиводитель по написанию вирусов ring3
    Afaik там есть упоминание, что после линковки (tlink не поймет rain'а) использовать pewrsec.
     
  7. n1kt0

    n1kt0 Забанен

    Blog Posts:
    0
    Joined:
    Jul 18, 2007
    Messages:
    160
    где он упомянул ?
     
  8. q_q

    q_q New Member

    Blog Posts:
    0
    Joined:
    Oct 5, 2003
    Messages:
    1,706
    n1kt0
    Если ты ее читал на wasm'е, то в разделе "Пример вируса" в листинге есть
    Code (Text):
    1. ...
    2. ; Компилирование: TASM 5.0 и TLINK 5.0
    3. ;                       tasm32 /ml /m3 aztec,,;
    4. ;                       tlink32 /Tpe /aa /c /v aztec,aztec,,import32.lib,
    5. ;                       pewrsec aztec.exe
    6. ...
    + коментарии к статье посвещаны именно проблеме доступности сегмента кода на запись.