²é¿´: 218  |  »Ø¸´: 0
µ±Ç°Ö÷ÌâÒѾ­´æµµ¡£

sdlj8051

½ð³æ (ÖøÃûдÊÖ)

[½»Á÷] ¡¾×ªÌû¡¿Çý¶¯¿Ç±àд×ܽá

Çý¶¯¿Ç±àд×ܽá

Author:  PolyMeta
Email:   PolyMeta@whitecell.org
Homepage:http://www.whitecell.org
Date:    2006-05-27


    ¿Ç×÷ΪһÖÖÖ÷ÒªµÄÈí¼þ±£»¤Êֶδó¸Å¿ÉÒÔ·ÖΪѹËõ¿ÇºÍ¼ÓÃÜ¿ÇÁ½Àà¡£¶øÏÖÔÚ
Á÷ÐеļӿdzÌÐòÎÞÂÛÊÇѹËõµÄ»¹ÊǼÓÃܵļ¸ºõ¶¼ÊÇÕë¶ÔÓ¦Óòã³ÌÐòµÄ£¬¶ÔÓÚÇý¶¯
³ÌÐòµÄ±£»¤¿ÇÔò¼¸ºõÊǿհס£±ÊÕßÖ»ÔÚһЩ¹úÍâ¼ÓÃܹ·µÄÇý¶¯Öмû¹ýÀàËÆÓ¦Óòã
µÄ±£»¤¿Ç¡£±¾ÆªÎÄÕÂÖ÷Òª½éÉÜÇý¶¯¼Ó¿Ç³ÌÐòÓëÓ¦Óòã¼Ó¿Ç³ÌÐòÔÚ±àдÉϵÄÇø±ðÒÔ
¼°Ò»Ð©×¢ÒâÊÂÏî¡£

1.УÑéºÍµÄ¼ÆËã

    Çý¶¯³ÌÐò±»¼Ó¿Çºó±ØÐëÖØÐ½øÐÐУÑéºÍµÄ¼ÆË㣬·ñÔò¼Ó¿ÇºóµÄÇý¶¯¼ÓÔØ»á
ʧ°Ü

;*****************¼ÆËãpeÎļþУÑéºÍ*********************

CalcPECheckSum PROC lpBaseAddrWORD,dwFileSizeWORD
  LOCAL  CheckSumWORD
  pushad
  mov    ecx,dwFileSize
        inc    ecx
        shr    ecx,1
        xor    eax,eax
        clc
        mov    esi,lpBaseAddr
    cal_checksum:
        adc    ax,word ptr [esi]
  inc    esi
  inc    esi
        loop   cal_checksum
        mov    ebx,dwFileSize
        add    eax,ebx
        mov    CheckSum,eax
        popad
        mov    eax,CheckSum
  ret
CalcPECheckSum endp

;*******************************************************
   
2.ԭʼIATµÄ´¦Àí

    ÓÉÓÚÔ­Çý¶¯³ÌÐò±»¼ÓÉÏÁËÎÒÃǵÄÍâ¿Ç£¬ËùÒÔÔ­Çý¶¯³ÌÐòµÄIAT±íµÄÌîд¹¤×÷
ÒªÓÉÎÒÃǵÄÍâ¿Ç³ÌÐòÀ´Íê³É¡£Ó¦Óòã¿ÇÒ»°ãͨ¹ýGetModuleHandleºÍGetProcAdd
ressÁ½¸öAPIÀ´Íê³ÉÕâ¸ö¹¤×÷£¬»òÕß×Ô¼ºÊµÏÖÕâÁ½¸öAPIµÄ¹¦ÄÜ¡£¶øÇý¶¯¿ÇÊÇÒª
ËæÇý¶¯³ÌÐòÒ»Æð±»¼ÓÔØµ½Äں˵±ÖÐÈ¥µÄ£¬µ«ÄÚºËÀïûÓÐÕâÁ½¸öº¯Êý£¬ÐèÒªÎÒÃÇ
×Ô¼º¶ÔÕâÁ½¸öº¯Êý×öÄں˵ÄʵÏÖ¡£µ±È»Ò²¿ÉÒÔÓÃMmGetSystemRoutineAddressº¯
Êý£¬²»¹ýËüÖ»Äܵõ½ntoskrnl.exeºÍhal.dllÁ½¸öÄ£¿éµÄº¯Êý£¬¶ÔÓÚÆäËüÄ£¿éÔò
ÎÞÄÜΪÁ¦ÁË£¬Ó°Ïì¿ÇµÄͨÓÃÐÔ¡£

    ¿ÇµÄGetModuleHandleº¯Êý¿ÉÒÔͨ¹ý±éÀúPsLoadedModuleListÁ´±íÀ´ÊµÏÖ£¬
¹ØÓÚ±éÀúÕâ¸öÁ´±íµÄ·½·¨¿ÉÒÔ²ÎÕÕFutoµÄ´úÂ룬ͨ¹ýDRIVEROBJECTµÄDriverSec
tion³ÉÔ±À´Íê³É£¬¶øÇý¶¯¶ÔÏó¿ÉÒÔ´Ó¶ÑÕ»µ±ÖÐÕÒµ½¡£

    ¿ÇµÄGetProcAddressº¯ÊýµÄʵÏ־ͺܼòµ¥ÁË£¬ÄÚºËÄ£¿é±¾ÉíÒ²ÊÇPEÎļþ£¬
Ö±½Ó±éÀúÒ»ÏÂPEµÄµ¼³ö±í¾ÍokÁË¡£

    »¹ÓÐÒ»µãÐèҪעÒâµÄ¾ÍÊÇUNICODEµÄת»»£¬PEÎļþÀïÃæµÄ×Ö·û´®ÊÇÒÔASCII
·½Ê½´æ´¢µÄ£¬¶øÄÚºËÀïµÄ×Ö·û´®¶à°ëÊÇÓÃUNICODE·½Ê½´æ·ÅµÄ£¬ÕâµãÐèҪעÒâ¡£

3.½Ú±íµÄ´¦Àí

    ÔÚ¸ø³ÌÐò¼Ó¿ÇµÄʱºòÒ»°ã¶¼ÒªÌí¼Óнڣ¬ÓÃÓÚ´æ·Å¿ÇµÄ´úÂ룬ӦÓòã³ÌÐò
µÄ½Ú±íµÄ×îºóÒ»ÏîºÍµÚÒ»¸ö½ÚÖ®¼äÒ»°ãÊÇÓÐÒ»¸öºÜ´óµÄ¿Õ¼ä¿ÉÒÔÓÃÀ´Ìí¼ÓеÄ
½Ú±íÏîµÄ£¬µ«Ò»°ãÇé¿öÏÂÇý¶¯³ÌÐò½Ú±íµÄ×îºóÒ»ÏîºóÃæ½ô½ÓמÍÊǵÚÒ»¸ö½Ú£¬
¸ù±¾Ã»ÓÐ×ã¹»µÄ0x28´óСµÄ¿Õ¼ä´æ·ÅеĽڱíÏî¡£½â¾öµÄ·½·¨ÓÐÁ½ÖÖ£¬µÚÒ»ÖÖ
½«ËùÓеĽÚÏòºóÒÆ¶¯£¬¶øµÚ¶þÖÖ·½·¨ÔòÊǽ«PEÍ·ÕûÌåÏòÇ°ÒÆ¶¯¸²¸Çµô²¿·ÖÎÞÓÃ
µÄdosÍ·£¬Áô³ö×ã¹»µÄ¿Õ¼ä´æ·ÅеĽڱíÏî¡£

    ÁíÍâÒ»µãÐèҪעÒâµÄÊÇ£¬¼Ó¿ÇºóµÄÇý¶¯³ÌÐòµÄÿһ¸ö½Ú±íÏî±ØÐëÂú×ãÈçÏÂ
Á½¸ö¹«Ê½£¬²ÅÄܱ»ÏµÍ³Õý³£¼ÓÔØ

    1) VirtualAddress == PointerToRawData
    2) SizeOfRawData >= VirtualSize

    ÖÁÓÚΪʲô£¬±ÊÕßҲû¸ãÇå³þ£¬ÕâÖ»ÊDZÊÕßͨ¹ý·ÖÎöÇý¶¯¼ÓÔØ´úÂ뼰ʵÑé
µÄ½á¹û£¬ÄÄλÈÊÐÖÖªµÀ»¹Çë´Í½Ì

4.ÖØ¶¨Î»±íµÄ´¦Àí

    ÓÉÓÚÇý¶¯³ÌÐòÊÇÒª±»¼ÓÔØµ½Äں˿ռäÖУ¬ËùÒÔÍâ¿Ç±ØÐëʵÏÖÔ­À´ÓÉϵͳÍê
³ÉµÄÔ­Çý¶¯³ÌÐòµÄÖØ¶¨Î»¹¤×÷¡£Ô­Çý¶¯³ÌÐòµÄÖØ¶¨Î»±íµÄ´¦Àí·½·¨¸úÓ¦Óòã D
LL ÎļþµÄ´¦Àí·½·¨ÍêȫһÑù,´úÂëÈçÏ£º

      mov  eax,dword ptr [ebp+OriginalRelocateAddr]
  add  eax,dword ptr [ebp+ModuleHandle]
  mov  ecx,dword ptr [ebp+OriginalRelocateSize]
  mov  ebx,eax
  mov  esi,dword ptr [ebp+ModuleHandle]
  sub  esi,dword ptr [ebp+OriginalBaseAddr] ;esi=diff
  
  NextRelocateBlock:
  .if ecx == 0
    jmp FixAllRelocate
  .endif
  assume ebx : ptr IMAGE_BASE_RELOCATION
  push ecx
  mov  ecx,dword ptr [ebx].SizeOfBlock
  sub  ecx,sizeof IMAGE_BASE_RELOCATION
  shr  ecx,1
  mov  eax,ebx
  add  eax,sizeof IMAGE_BASE_RELOCATION
    NextRelocateEntry:
    xor edi,edi
    mov di,word ptr [eax]
    shr edi,12
    .if edi == IMAGE_REL_BASED_HIGHLOW
      movzx edi,word ptr [eax]
      and edi,0fffh
      add edi,dword ptr [ebx].VirtualAddress
      add edi,dword ptr [ebp+ModuleHandle]
      add dword ptr [edi],esi
    .endif
    add eax,2
    loop NextRelocateEntry
  pop  ecx
  sub  ecx,dword ptr [ebx].SizeOfBlock
  add  ebx,dword ptr [ebx].SizeOfBlock
  jmp NextRelocateBlock
  FixAllRelocate:

    ÐèҪעÒâµÄÒ»µã£ºÇý¶¯³ÌÐò±»¼Ó¿Çºó±ØÐëÒªÓÐÖØ¶¨Î»±í£¬·ñÔòÇý¶¯¼ÓÔØ»áʧ
°Ü£¬½â¾öµÄ·½·¨ÐèÒª×Ô¼º¹¹ÔìÒ»¸ö¼ÙµÄÖØ¶¨Î»±íÀ´Ì滻ԭʼµÄÖØ¶¨Î»±í¡£
   
    ÁíÍ⣬ÓÉÓÚÇý¶¯¿ÇµÄÌØÊâÐÔ£¬shellµÄ±àдºÍÇý¶¯³ÌÐòµÄ±àÐ´Ã»Ê²Ã´Çø±ð£¬
ÉÔÓдíÎó¾Í»áÀ¶ÆÁ¡£

    дÕâÆªÎÄÕµÄÖ÷ҪĿµÄÊǶԱÊÕßÔÚ±àдÇý¶¯¼Ó¿Ç³ÌÐòµÄ¹ý³ÌÖÐËùÓöµ½µÄһЩ
ÎÊÌâ¼°Æä½â¾ö·½·¨µÄ×ܽᣬ±ÜÃâÒÔºóÍüÁË£¬Í¬Ê±Ò²¸øÏëдÇý¶¯¿ÇµÄÐÖµÜÃÇÒ»µãÎÒ
µÄÐĵã¬ÉÙ×ßһЩÍä·¡£

[ Last edited by »ÃÓ°ÎÞºÛ on 2006-11-11 at 07:31 ]
»Ø¸´´ËÂ¥

» ²ÂÄãϲ»¶

ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû
Ïà¹Ø°æ¿éÌø×ª ÎÒÒª¶©ÔÄÂ¥Ö÷ sdlj8051 µÄÖ÷Ìâ¸üÐÂ
×î¾ßÈËÆøÈÈÌûÍÆ¼ö [²é¿´È«²¿] ×÷Õß »Ø/¿´ ×îºó·¢±í
[¿¼ÑÐ] 279·ÖÇóµ÷¼Á Ò»Ö¾Ô¸211 +18 chaojifeixia 2026-03-19 20/1000 2026-03-24 10:34 by dolphin_ycj
[¿¼ÑÐ] 335·Ö | ²ÄÁÏÓ뻯¹¤×¨Ë¶ | GPA 4.07 | ÓпÆÑо­Àú +4 cccchenso 2026-03-23 4/200 2026-03-23 23:00 by Ðìckkk
[¿¼ÑÐ] ²ÄÁÏ/ũҵרҵ£¬07/08¿ªÍ·¾ù¿É£¬¹ýÏß¾ÍÐÐ +3 ºÇßíŶ»í 2026-03-23 4/200 2026-03-23 22:30 by Íô£¡£¿£¡
[¿¼ÑÐ] 327Çóµ÷¼Á +5 prayer13 2026-03-23 5/250 2026-03-23 22:11 by ÐÇ¿ÕÐÇÔÂ
[¿¼ÑÐ] 070300»¯Ñ§Çóµ÷¼Á +8 Ô·¶¹¶¹ 2026-03-20 8/400 2026-03-23 20:57 by baobaoye
[¿¼ÑÐ] 336»¯¹¤µ÷¼Á +4 Íõ´ó̹1 2026-03-23 5/250 2026-03-23 18:32 by allen-yin
[¿¼ÑÐ] ÉϺ£µçÁ¦´óѧ²ÄÁÏ·À»¤ÓëвÄÁÏÖØµãʵÑéÊÒÕÐÊÕµ÷¼ÁÑо¿Éú£¨²ÄÁÏ¡¢»¯Ñ§¡¢µç»¯Ñ§£¬»·¾³£© +3 ÎÒ°®Ñ§µç³Ø 2026-03-23 3/150 2026-03-23 17:16 by AZMK
[¿¼ÑÐ] Ò»Ö¾Ô¸ÄϾ©Àí¹¤´óѧ085701×ÊÔ´Óë»·¾³302·ÖÇóµ÷¼Á +5 ¿ûè÷ÎÀ¶Ó 2026-03-18 7/350 2026-03-23 16:26 by lingjue
[¿¼ÑÐ] 08¹¤Ñ§µ÷¼Á +7 Óû§573181 2026-03-20 11/550 2026-03-23 15:47 by ÎÒ°®Ñ§Ï°Ñ§Ï°Ê¹Î
[¿¼ÑÐ] 298Çóµ÷¼Á +8 Éϰ¶6666@ 2026-03-20 8/400 2026-03-23 11:02 by laoshidan
[¿¼ÑÐ] Ò»Ö¾Ô¸ÖÐÄÏ»¯Ñ§£¨0703£©×Ü·Ö337Çóµ÷¼Á +9 niko- 2026-03-19 10/500 2026-03-22 16:08 by ColorlessPI
[¿¼ÑÐ] 285Çóµ÷¼Á +6 ytter 2026-03-22 6/300 2026-03-22 12:09 by ÐÇ¿ÕÐÇÔÂ
[¿¼ÑÐ] 286·ÖÈ˹¤ÖÇÄÜרҵÇëÇóµ÷¼ÁÔ¸Òâ¿ç¿¼£¡ +4 lemonzzn 2026-03-17 8/400 2026-03-21 22:49 by lemonzzn
[¿¼ÑÐ] ¹ãÎ÷´óѧ²ÄÁϵ¼Ê¦ÍƼö +3 ÏÄÏÄÏÄСÕý 2026-03-17 5/250 2026-03-21 22:20 by ½ðê»ML
[¿¼ÑÐ] »¯Ñ§µ÷¼Á +5 yzysaa 2026-03-21 5/250 2026-03-21 22:12 by peike
[¿¼ÑÐ] 0703»¯Ñ§297Çóµ÷¼Á +3 Daisy¡î 2026-03-20 3/150 2026-03-21 17:45 by ColorlessPI
[¿¼ÑÐ] Äϲý´óѧ²ÄÁÏר˶311·ÖÇóµ÷¼Á +6 77chaselx 2026-03-20 6/300 2026-03-21 07:24 by JourneyLucky
[¿¼ÑÐ] ³õʼ318·ÖÇóµ÷¼Á£¨Óй¤×÷¾­Ñ飩 +3 1911236844 2026-03-17 3/150 2026-03-21 02:33 by JourneyLucky
[¿¼ÑÐ] Ò»Ö¾Ô¸ ÄϾ©º½¿Õº½Ìì´óѧ´óѧ £¬080500²ÄÁÏ¿ÆÑ§Ó빤³Ìѧ˶ +5 @taotao 2026-03-20 5/250 2026-03-20 20:16 by JourneyLucky
[˶²©¼ÒÔ°] ºþ±±¹¤Òµ´óѧ ÉúÃü¿ÆÑ§Ó뽡¿µÑ§Ôº-¿ÎÌâ×éÕÐÊÕ2026¼¶Ê³Æ·/ÉúÎï·½Ïò˶ʿ +3 1ϲ´º8 2026-03-17 5/250 2026-03-17 17:18 by ber´¨cool×Ó
ÐÅÏ¢Ìáʾ
ÇëÌî´¦ÀíÒâ¼û