| ²é¿´: 218 | »Ø¸´: 0 | |||
| µ±Ç°Ö÷ÌâÒѾ´æµµ¡£ | |||
sdlj8051½ð³æ (ÖøÃûдÊÖ)
|
[½»Á÷]
¡¾×ªÌû¡¿Çý¶¯¿Ç±àд×ܽá
|
||
|
Çý¶¯¿Ç±àд×ܽá Author: PolyMeta Email: PolyMeta@whitecell.org Homepage:http://www.whitecell.org Date: 2006-05-27 ¿Ç×÷ΪһÖÖÖ÷ÒªµÄÈí¼þ±£»¤Êֶδó¸Å¿ÉÒÔ·ÖΪѹËõ¿ÇºÍ¼ÓÃÜ¿ÇÁ½Àà¡£¶øÏÖÔÚ Á÷ÐеļӿdzÌÐòÎÞÂÛÊÇѹËõµÄ»¹ÊǼÓÃܵļ¸ºõ¶¼ÊÇÕë¶ÔÓ¦Óòã³ÌÐòµÄ£¬¶ÔÓÚÇý¶¯ ³ÌÐòµÄ±£»¤¿ÇÔò¼¸ºõÊǿհס£±ÊÕßÖ»ÔÚһЩ¹úÍâ¼ÓÃܹ·µÄÇý¶¯Öмû¹ýÀàËÆÓ¦Óò㠵ı£»¤¿Ç¡£±¾ÆªÎÄÕÂÖ÷Òª½éÉÜÇý¶¯¼Ó¿Ç³ÌÐòÓëÓ¦Óòã¼Ó¿Ç³ÌÐòÔÚ±àдÉϵÄÇø±ðÒÔ ¼°Ò»Ð©×¢ÒâÊÂÏî¡£ 1.УÑéºÍµÄ¼ÆËã Çý¶¯³ÌÐò±»¼Ó¿Çºó±ØÐëÖØÐ½øÐÐУÑéºÍµÄ¼ÆË㣬·ñÔò¼Ó¿ÇºóµÄÇý¶¯¼ÓÔØ»á ʧ°Ü ;*****************¼ÆËãpeÎļþУÑéºÍ********************* CalcPECheckSum PROC lpBaseAddr WORD,dwFileSize WORDLOCAL CheckSum WORDpushad 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 ] |
» ²ÂÄãϲ»¶
²ÄÁÏÓ뻯¹¤328·Öµ÷¼Á
ÒѾÓÐ3È˻ظ´
279·ÖÇóµ÷¼Á Ò»Ö¾Ô¸211
ÒѾÓÐ20È˻ظ´
293Çóµ÷¼Á
ÒѾÓÐ3È˻ظ´
Ò»Ö¾Ô¸»ª¶«Àí¹¤´óѧ081700£¬³õÊÔ·ÖÊý271
ÒѾÓÐ6È˻ظ´
085404µç×ÓÐÅÏ¢284·ÖÇóµ÷¼Á
ÒѾÓÐ3È˻ظ´
306Çó0703µ÷¼ÁÒ»Ö¾Ô¸»ªÖÐʦ·¶
ÒѾÓÐ9È˻ظ´
Ò»Ö¾Ô¸¼ª´ó»¯Ñ§322Çóµ÷¼Á
ÒѾÓÐ6È˻ظ´
Çóµ÷¼Á
ÒѾÓÐ5È˻ظ´
344Çóµ÷¼Á
ÒѾÓÐ3È˻ظ´
Ò»Ö¾Ô¸¹þ¹¤´ó£¬085400£¬320£¬Çóµ÷¼Á
ÒѾÓÐ3È˻ظ´













WORD,dwFileSize
»Ø¸´´ËÂ¥