24СʱÈÈÃŰæ¿éÅÅÐаñ    

Znn3bq.jpeg
²é¿´: 561  |  »Ø¸´: 2
µ±Ç°Ö÷ÌâÒѾ­´æµµ¡£

sdlj8051

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

[½»Á÷] ¡¾×ªÌù¡¿²¡¶¾»ù´¡ÏµÁС¾ÒÑËÑÎÞÖØ¸´¡¿

ǰÑÔ:
   ²¡¶¾Ã»ÓÐʲô¿ÉŵÄ,Ò²²¢²»ÏóÏëÏñÖеĸ´ÔÓ,Íæ»ã±àµÄÈËÈç¹ûûÓп´¹ý²¡¶¾?¼òÖ±Êǰ׻îÒ»Ôâ...²¡¶¾¾ÍÏóÊÇË«Èн£,¶ñÒâʹÓÃ¾Í»á´øÀ´¶ñ¹û,ÎÒ±¾È˶ÔÓÚ´ËÀàÐÐΪÉî¶ñÍ´¾ø!ÎÒÃÇÑо¿²»ÊÇΪÁËÆÆ»µ¶øÊÇΪÁËÖª¼ºÖª±Ë,ÁíÍⲡ¶¾ÖÐȷʵҲÓкܶà¸ß³¬µÄ¼¼ÇÉÖµµÃÎÒÃÇѧϰ,Õâ²ÅÊÇÎÒÃǵÄÄ¿µÄËùÔÚ,ÎÒ¾øÃ»ÓнÌËôÈË·¸×ïµÄÒâͼ¶øÇÒ¾ÍÎÒµÄˮƽÀ´½²Ò²Ô¶´ï²»µ½.
   ÔÚÑо¿²¡¶¾Ö®Ç°Óм¸Ïî»ù´¡ÖªÊ¶ÒªÁ˽â:
       1)ring0µÄ»ñÈ¡,¿É²Î¼ûÎÒ·­ÒëµÄһƪring0µÄÎÄÕÂ,ÁíÍâÕâЩ×ÊÁÏinternetÉÏÒ²ºÜ¶à.
       2)SehµÄ֪ʶ,¿É²Î¼ûÎÒдµÄ<>
       3)PE½á¹¹µÄ֪ʶ,ZouDan´óÏÀµÄÂÛÎÄ,IczeLionµÄPE½ÌѧºÍÔØ LUEVELSMEYERµÄ¡¶PEÎļþ¸ñʽ¡·,×îÎªÖØÒª!
       4)Îļþ¶ÁдµÄ»ù±¾ÖªÊ¶,Ö÷ÒªÊÇCreateFileA,ReadFile,WriteFile,CreateFileMapping...µÈÎļþ¶Áд֪ʶ,Èç¹ûÄ㻹²»Á˽â,×îºÃÏÈѧѧwin32ASMµÄ»ù´¡ÖªÊ¶.
       5)PolyEngine...MetaMorphismµÈ»ù±¾¸ÅÄî
       6)anti-debugµÄһЩ¸ÅÄî
       7)ÓйØMBR,FATµÈ֪ʶ,¶ÔÁ˽âһЩÀÏVirusÓÐÓÃ.
      

       ÏÂÃæÎÒÓеÄһЩtips,¿ÉÄÜ»á¶ÔÀí½â²¡¶¾ÓÐËù°ïÖú.ÁíÍâÕâЩ¼¼ÊõÔÚ¼Ó¿ÇÀàÈí¼þÖÐÒ²ºÜ³£¼û.


--------------------------------------------------------------------------------


                               tip1: apiº¯ÊýµØÖ·µÄ»ñÈ¡


ÕâÊÇÒ»¸öÀÏÌâÄ¿ÁË,Èç¹ûÎÒÃDz»ÓÃÈκÎÒýÈë¿â,ÄÜ·ñÔÚ³ÌÐòÖе÷ÓÃapiº¯Êý?µ±È»¿ÉÒÔ!·½·¨Óкܶà,Äã¿ÉÄÜÔç¾ÍÖªµÀÁË,Èç¹ûÄãÒѾ­Á˽âÁË,¾Í´Ë´òס,ÕâÊÇΪ»¹²»Á˽âÕâÒ»¼¼Êõ¶øÐ´.ÁíÍâÕâÒ²ÊDz¡¶¾±ØÓõļ¼ÇÉÖ®Ò»,Èç¹ûÄã¶Ô²¡¶¾¼¼Êõ¸ÐÐËȤ,½Ó×Å¿´ÏÂÈ¥.

ÕâÀï¼ÙÉèÄãÁ˽âPEµÄ»ù±¾½á¹¹,Èç¹û»¹²»¶®,ÕÒµã×ÊÁÏÀ´¿´¿´,µ½´¦¶¼ÊÇßÏ.

ÔÚ¼¸ºõÿ¸ö²¡¶¾µÄ¿ªÍ·¶¼ÓÃÏÂÃæµÄÓï¾ä:
       call    delta
delta:  
       pop     ebp                             
       sub     ebp,offset delta               
       mov     dword ptr [ebp+offset appBase],ebp
      
ÈÃÎÒÃÇ¿¼ÂÇһϳÌÐòµÄÖ´ÐÐÇé¿ö,Èç¹ûÏÂÃæµÄ´úÂëÓɱàÒëÆ÷×Ô¶¯±àÒëÁ¬½Ó,ÄÇô³ÌÐòÖ´ÐеĻùÖ·Ò»°ãÊÇ400000h,Èç¹ûÊÇÔÚNtÏÂÖ´ÐÐ,ÄÇô»ùÖ·¿ÉÄܲ»Í¬,±ÈÈç´Ó100000h¿ªÊ¼,²»Óõ£ÐÄ,²Ù×÷ϵͳµÄLoader»á×Ô¶¯ÎªÄãÖØ¶¨Î».µ«ÊÇÕâÀïÍ£ÏÂÀ´ÈÃÎÒÃÇ¿´Ò»ÏÂ,Èç¹ûÄãÏëÒª°ÑÕâ¶Î´úÂ븽¼Óµ½ÆäËû³ÌÐòµÄºóÃæ²¢ÏëÈÃÆäÕýÈ·Ö´Ðеϰ,¾Í²»ÊÇÄÇô¼òµ¥ÁË,ÒòΪÄãµÄ´úÂë¿ÉÄÜÒª´Ó555588h´¦¿ªÊ¼Ö´ÐÐ,¶øÔÚûÓеõ½ËÞÖ÷³ÌÐòÐí¿ÉµÄÇé¿öÏÂÆÚÍû²Ù×÷ϵͳ×Ô¶¯ÎªÄãÐÞÕýÆ«ÒÆ´íÎóÊDz»¿ÉÄܵÄ,¼ÈÈ»Óзdz£µÄÄ¿µÄ,¾ÍµÃ·ÑµãÁ¦Æø,×Ô¼º¸ã¶¨Öض¨Î».¶øÉÏÃæµÄ´úÂë¾ÍÊÇÊ×Ïȵõ½eipÖ¸Õë,Ò²ÊÇdeltaÔÚ³ÌÐòÖ´ÐÐʱµÄʵ¼ÊÆ«ÒÆ,È»ºó¼õµô´úÂëÍ·µ½deltaµÄÆ«ÒÆ´Ó¶øµÃµ½ÄãµÄ´úÂëµÄÕæÕý»ùÖ·,ºóÃæ¶ÔÓÚÆ«ÒƵIJÙ×÷¶¼Ó¦ÒÔÕâ¸öÕæÕýµÄÆ«ÒÆÎª×¼.Õâ¾ÍÊÇÄãÉÏÃæ¿´µ½µÄ.Èç¹û²»Ã÷°×,¾Í×ÐϸÏëÒ»ÏÂ,nothing difficult!ÏÂÃæµÄÀý×ÓÑÝʾÁËÕâÒ»µã,²¢Ã»ÓÐÈ«²¿Öض¨Î»,ÒòΪÕâÖ»ÊǼ¼ÊõÑÝʾ.

ÏÖÔڻص½±¾ÎĵÄÕýʽÄÚÈÝ,ÒªÏë»ñµÃapiµÄµØÖ·,µÃÊ×ÏÈ»ñµÃÖîÈçkernel32.dll,user32.dllµÄ»ùÖ·,È»ºóÔÙÕÒµ½ÕæÕýµÄº¯ÊýµØÖ·.ÈçºÎ»ñµÃ»ùÖ·ºÍº¯ÊýµØÖ·ÄØÄØ?Óм¸ÖÖ·½·¨
       1)ËÑѰËÞÖ÷µÄÒýÈë±í»ñµÃGetModuleHandleAº¯ÊýºÍGetProcAddressµÄµØÖ·,È»ºóͨ¹ýËû·µ»ØÏµÍ³dllµÄ»ùÖ·.ÒòΪºÜ¶à³ÌÐò¶¼ÒªÊ¹ÓÃÕâÁ½¸öº¯Êý,Òò´ËÔÚijЩÇé¿öÏÂÊÇ¿ÉÐеÄ,Èç¹ûËÞÖ÷ûÓÐʹÓÃGetProcAddress,ÄÇÄã¾Í²»µÃ²»ËÑѰExport±íÁË.
       2)Ö±½Ó»ñµÃkernel32.dllµÄ»ùÖ·,È»ºóÔÙËÑѰExport±í»ñµÃGetProcAddressºÍLoadLibraryAµÄµØÖ·,È»ºóÎÒÃǾÍÄܵõ½ÈκÎÏëµ÷Óõĺ¯ÊýµØÖ·.

       3)Ó²±àÂëµ÷Óú¯Êý,±ÈÈçÔÚ9XÏÂGetModuleHandleAµÄµØÖ·Ò»°ãÊÇBFF7****.

µÚÒ»Öֺ͵ÚÈýÖÖ·½·¨´æÔÚ¼æÈÝÐÔµÄÎÊÌâ,¼ÙÈçËÞÖ÷ûÓе÷ÓÃGetModuleHandleA,ÄÇôÄã¾Í²»ÄÜ»ñµÃ»ùÖ·,±ðµÄ¾Í¸ü±ðÏëÁË...Ó²±àÂëÎÊÌâ¸ü´ó,²Ù×÷ϵͳ²»Í¬Ôò²»ÄÜÔËÐÐÁË,±ÈÈç9XÏ¿ÉÄÜÔÚÓÐЩ¼ÆËã»úÉÏÕý³£,µ«¿Ï¶¨²»ÄÜÔÚNt/2KÏÂÔËÐÐ...

µÚ¶þÖÖ·½·¨¼æÈÝÐԱȽϺÃ,Òò´Ë×÷ÒÔ½éÉÜ.

       Ò»µã±³¾°:ÔÚPE Loader×°ÈëÎÒÃǵijÌÐòÆô¶¯ºó¶ÑÕ»¶¥µÄµØÖ·ÊÇÊdzÌÐòµÄ·µ»ØµØÖ·,¿Ï¶¨ÔÚKernelÖÐ!

       Òò´ËÎÒÃÇ¿ÉÒԵõ½Õâ¸öµØÖ·,È»ºóÏòµÍµØÖ·Ëõ¼õÑéÖ¤Ò»Ö±µ½ÕÒµ½Ä£¿éµÄÆðʼµØÖ·,ÑéÖ¤Ìõ¼þΪPEÍ·²»ÄÜ´óÓÚ4096bytes,PE headerµÄImageBaseÖµÓ¦¸ÃºÍµ±Ç°Ö¸ÕëÏàµÈ,ºÙºÙ,¼òµ¥°É,¶øÇÒ¼æÈÝÐÔ»¹²»´í.

       Òª»ñµÃApiµÄµØÖ·Ê×ÏÈÒª»ñµÃGetModuleHandle,LoadLibraryA,GetProcAddressµÄµØÖ·,ÕâÊÇͨ¹ýËÑË÷Export±íÀ´ÊµÏÖµÄ,¾ßÌåÔ­Àí¾ÍÊÇPE Export±íµÄ½á¹¹,Èç¹ûÁ˽âÁËPE½á¹¹¾ÍºÜ¼òµ¥ÁË.ÏÂÃæÎÒ¼ÓÁ˵ã×¢ÊÍ,ûÓÐÓÅ»¯´úÂë,ÊÇΪÁ˱ãÓÚÀí½â.

       ºÃ,ÕâÒ»²¿·Ö½áÊøÁË!

ÕâÊÇÒ»¸öÀý×Ó,ûÓÐÓÃÈκÎÔ¤ÒýÈ뺯Êý,¼ÓÁËÒ»Ìõinvoke InitCommonControlsÊÇΪÁËÔÚ2KÏÂÒ²ÄÜÕý³£ÔËÐÐ,·ñÔò²»ÄÜÔÚ2Kϲ»¼ÓÔØ!
³ÌÐòµÃµ½MessageBoxAµÄµØÖ·È»ºóÏÔʾһ¸öÏûÏ¢¿ò,Ä¿µÄÔÚÓÚÑÝʾ,ÖØÒª²¿·Ö¼ÓÁË×¢ÊÍ,ºÜºÃÃ÷°×.
×¢ÒâÁ¬½Óʱ¼ÓÈë/section:.text,RWEÑ¡Ïî¡£
.586
.model flat, stdcall
option casemap :none   ; case sensitive
include c:\hd\hd.h
include c:\hd\mac.h

;;--------------

GetApiA         proto    WORD,WORD

;;--------------
.CODE
appBase         dd ?
k32Base         dd ?

lpApiAddrs      label   near
               dd      offset sGetModuleHandle
               dd      offset sGetProcAddress
               dd      offset sExitProcess
               dd      offset sLoadLibrary
               dd      0

sGetModuleHandle       db "GetModuleHandleA",0
sGetProcAddress        db "GetProcAddress",0
sExitProcess           db "ExitProcess",0
sLoadLibrary           db "LoadLibraryA",0

sMessageBoxA           db "MessageBoxA",0


aGetModuleHandle                dd 0
aGetProcAddress                 dd 0
aExitProcess                    dd 0
aLoadLibrary                    dd 0
aMessageBoxA                    dd 0

u32                     db "User32.dll",0
k32                     db "Kernel32.dll",0

sztit                   db "By Hume,2002",0
szMsg0                  db "Hey,Hope U enjoy it!",0
;;-----------------------------------------

__Start:
       invokeInitCommonControls
      
       call    delta
delta:  
       pop     ebp                             ;µÃµ½deltaµØÖ·
       sub     ebp,offset delta                ;ÒòΪÔÚÆäËû³ÌÐòÖлùÖ·¿ÉÄܲ»ÊÇĬÈϵÄËùÒÔÐèÒªÖØ¶¨Î»
       mov     dword ptr [ebp+offset appBase],ebp     ;ºÇºÇ×ÐϸÏëÏë
      
mov     ecx,[esp]                       ;·µ»ØµØÖ·
       xor     edx,edx
getK32Base:
       dec     ecx                             ;Öð×ֽڱȽÏÑéÖ¤
       mov     dx,word  ptr [ecx+IMAGE_DOS_HEADER.e_lfanew]   ;¾ÍÊÇecx+3ch
       test    dx,0f000h                       ;Dos Header+stub²»¿ÉÄÜÌ«´ó,³¬¹ý4096byte
       jnz     getK32Base                      ;¼ÓËÙ¼ìÑé
       cmp     ecx,dword ptr [ecx+edx+IMAGE_NT_HEADERS.OptionalHeader.ImageBase]
       jnz     getK32Base                      ;¿´Image_BaseÖµÊÇ·ñµÈÓÚecx¼´Ä£¿éÆðʼֵ,
       mov     [ebp+offset k32Base],ecx        ;Èç¹ûÊÇ,¾ÍÈÏΪÕÒµ½kernel32µÄBaseÖµ
      
       lea     edi,[ebp+offset aGetModuleHandle]
       lea     esi,[ebp+offset lpApiAddrs]
lop_get:
       lodsd
       cmp     eax,0
       jz      End_Get
       push    eax
       push    dword ptr [ebp+offset k32Base]
       callGetApiA                         ;»ñÈ¡APIµØÖ·        
       stosd
       jmp     lop_get
End_Get:
       push    offset u32
       call    dword ptr [ebp+offset aLoadLibrary]     ;ÔÚ³ÌÐò¿Õ¼ä¼ÓÔØUser32.dll
      
       lea     EDX,[EBP+OFFSET sMessageBoxA]
       push    edx
       push    eax
       mov     eax,dword ptr [ebp+aGetProcAddress]     ;ÓÃGetProcAddress»ñµÃMessageBoxAµÄµØÖ·
       call    eax                                     ;µ÷ÓÃGetProcAddress

       push    40h+1000h                               ;style
       push    offset sztit                            ;title
       push    offset  szMsg0                          ;ÏûÏ¢ÄÚÈÝ
       push    0
       call    eax                                     ;Ò»¸öÏûÏ¢¿ò²úÉúÁË...ºÙºÙ
                                                       ;ÓÐÀíÓÉΪ´Ë¸ßÐ˰É,ÒòΪÎÒÃÇûÓÐÔ¤ÏÈÒýÈë
@@:                                                     ;ÕâЩº¯Êý
       push    0
       call    [ebp+aExitProcess]
      
;-----------------------------------------
K32_api_retrieve        proc    BaseWORD ,sApiWORD

       push    edx                     ;±£´æedx   
       xor     eax,eax                 ;´Ëʱesi=sApi
Next_Api:                               ;edi=AddressOfNames
       mov     esi,sApi
       xor     edx,edx
       dec     edx
Match_Api_name:
       mov     bl,byte  ptr [esi]
       inc     esi
       cmp     bl,0
       jz      foundit

       inc     edx

       push    eax
       mov     eax,[edi+eax*4]         ;AddressOfNamesµÄÖ¸Õë,µÝÔö
       add     eax,Base                ;×¢ÒâÊÇRVA,Ò»¶¨Òª¼ÓBaseÖµ
       cmp     bl,byte  ptr [eax+edx]  ;Öð×Ö·û±È½Ï  
       pop     eax
       jz      Match_Api_name          ;¼ÌÐøËÑѰ
       inc     eax                     ;²»Æ¥Åä,ÏÂÒ»¸öapi
       loop    Next_Api
       jmp     no_exist                ;ÈôÈ«²¿ËÑÍê,¼´Î´´æÔÚ
foundit:
       pop     edx                     ;edx=AddressOfNameOrdinals
       shl     eax,1                   ;*2µÃµ½AddressOfNameOrdinalsµÄÖ¸Õë
       movzx   eax,word  ptr [edx+eax] ;eax·µ»ØÖ¸ÏòAddressOfFunctionsµÄÖ¸Õë
       ret
no_exist:
       pop     edx
       xor     eax,eax
       ret
K32_api_retrieve        endp
;-----------------------------------------

GetApiA         proc    BaseWORD,sApiWORD
       local    ADDRofFunWORD
       pushad
       mov     edi,Base
       add     edi,IMAGE_DOS_HEADER.e_lfanew
       mov     edi,[edi]                       ;ÏÖÔÚedi=off PE_HEADER
       add     edi,Base                        ;µÃµ½IMAGE_NT_HEADERSµÄÆ«ÒÆ                        

       mov     ebx,edi
       mov     edi,[edi+IMAGE_NT_HEADERS.OptionalHeader.DataDirectory.VirtualAddress]
       add     edi,Base                        ;µÃµ½edi=IMAGE_EXPORT_DIRECTORYÈë¿Ú
      
       mov     eax,[edi+1ch]                   ;AddressOfFunctionsµÄµØÖ·
       add     eax,Base
       mov     ADDRofFun,eax
                                               ;ecx=NumberOfNames
       mov     ecx,[edi+18h]                  
       mov     edx,[edi+24h]                  
       add     edx,Base                        ;edx=AddressOfNameOrdinals

       mov     edi,[edi+20h]
       add     edi,Base                        ;edi=AddressOfNames
       invokeK32_api_retrieve,Base,sApi
       mov     ebx,ADDRofFun
       shl     eax,2                           ;Òª*4²ÅµÃµ½Æ«ÒÆ
       add     eax,ebx
       mov     eax,[eax]
       add     eax,Base                        ;¼ÓÉÏBase!
       mov     [esp+7*4],eax                   ;eax·µ»ØapiµØÖ·
       popad
       ret
GetApiA         endp

;-----------------------------------------

END__Start
;------------------------------------------End all


--------------------------------------------------------------------------------

±ê Ìâ:¿´¿´ÎҵĴúÂë
·¢ÐÅÈË:wowocock ¡¡
ʱ ¼ä:2002/08/22 08:55pm
ÏêϸÐÅÏ¢:

¿´¿´ÎҵĴúÂë
;ÊÊÓÃϵͳWin9x/me/2k/xp/nt
.586p
.model flat, stdcall
option casemap :none   ; case sensitive
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
includelib \masm32\lib\kernel32.lib
include \masm32\include\user32.inc
includelib \masm32\lib\user32.lib

GetApiAddress PROTO WORD,:BYTE

.data
Kernel32Addrdd ?
ExportKernel dd ?

GetProcAddr dd ?
GetModuleHandleAddr dd ?
LoadLibraryAddr dd ?
ExitProcessAddr dd ?

aGetProcAddr db "GetProcAddress",0
GetProcAddLen equ $-aGetProcAddr-1

aGetModuleHandle db "GetModuleHandle",0
GetModuleHandleLen equ $-aGetModuleHandle-1

aLoadLibrary db "LoadLibrary",0
LoadLibraryLen equ $-aLoadLibrary-1

aExitProcess db "ExitProcess",0
ExitProcessLen equ $-aExitProcess-1

szTitle db "Test",0
temp1 db "   Kernel32.dll Address is:%8x:",0dh,0ah
       db " GetProcAddress Address is:%8x:",0dh,0ah
db "GetModuleHandle Address is:%8x",0dh,0ah
db "    LoadLibrary Address is:%8x",0dh,0ah
db "    ExitProcess Address is:%8x",0
temp2 db 256 dup(?)
.code

Start:
mov   eax,[esp] ;//È¡Kernel32·µ»ØµØÖ·
and   ax,0f000h
mov   esi,eax   ;//µÃµ½Kernel.PELoader´úÂëλÖÃ(²»¾«È·)
LoopFindKernel32:
sub   esi,1000h
cmp   word ptr[esi],'ZM' ;//ËÑË÷EXEÎļþÍ·
jnz   short LoopFindKernel32
GetPeHeader:
movzx edi,word ptr[esi+3ch]
add   edi,esi
cmp   word ptr[edi],'EP' ;//È·ÈÏÊÇ·ñPEÎļþÍ·
jnz   short LoopFindKernel32      ;esi->kernel32,edi->kernel32 PE HEADER
;//////////////////////////////////////////////////ÈÎÎñ£º²éÕÒGetProcAddressº¯ÊýµØÖ·
mov Kernel32Addr,esi

GetPeExportTable:
mov   ebp,[edi+78h];4+14h+60h
add   ebp,Kernel32Addr      ;//µÃµ½Êä³öº¯Êý±í
mov   ExportKernel,ebp

push GetProcAddLen
push offset aGetProcAddr
call GetApiAddress
mov  GetProcAddr,eax

push GetModuleHandleLen
push offset aGetModuleHandle
call GetApiAddress
mov  GetModuleHandleAddr,eax

push LoadLibraryLen
push offset aLoadLibrary
call GetApiAddress
mov  LoadLibraryAddr,eax

push ExitProcessLen
push offset aExitProcess
call GetApiAddress
mov  ExitProcessAddr,eax
invoke wsprintf,addr temp2,addr temp1,Kernel32Addr,GetProcAddr,GetModuleHandleAddr,LoadLibraryAddr,ExitProcessAddr
invoke MessageBoxA,0,addr temp2,addr szTitle,0
push 0
call dword ptr[ExitProcessAddr]

GetApiAddress proc AddressOfName:dword,ApiLength:byte
push ebx
push esi
push edi
mov  edi,ExportKernel
assume edi:ptr IMAGE_EXPORT_DIRECTORY
GetExportNameList:  
mov   ebx,[edi].AddressOfNames ;//µÃµ½Êä³öº¯ÊýÃû±í
add   ebx,Kernel32Addr     ;ebx->AddressOfNames(º¯ÊýÃû×ÖµÄÖ¸ÕëµØÖ·).
xor   eax,eax      ;//º¯ÊýÐòºÅ¼ÆÊý
mov   edx,Kernel32Addr      ;//ÔÝ´æKernel32Ä£¿é¾ä±ú;edx->kernel32
push edi   ;±£´æEDI

LoopFindApiStr:
add   ebx,04      
inc   eax          ;//Ôö¼Óº¯Êý¼ÆÊý
mov   edi,[ebx]
add   edi,edx      ;//µÃµ½Ò»¸öApiº¯ÊýÃû×Ö·û´®.edi->º¯ÊýÃû
StrGetProcAddress:
mov esi,AddressOfName          ;//µÃµ½ApiÃû×Ö×Ö·û´®
cmpsd                   ;±È½Ïǰ4¸ö×Ö·ûÊÇ·ñÏàµÈ
jnz   short LoopFindApiStr  ;eax=º¯ÊýÃûµÄINDEX   
xor   ecx,ecx
mov   cl, ApiLength
sub   cl,4        ;//±È½ÏÊ£ÓàµÄGetProcAddress´®
cld
Goon:
cmpsb
jnz   short LoopFindApiStr  ;eax=º¯ÊýÃûµÄINDEX
loop Goon

pop edi ;»Ö¸´EDI
mov   esi,edx
movebx,[edi].AddressOfNameOrdinals
addebx,esi     ;//È¡º¯ÊýÐòºÅµØÖ·Áбí,ebx->AddresssOfNameOrdinals
movzx ecx,word ptr [ebx+eax*2]
mov   ebx,[edi].AddressOfFunctions
add   ebx,esi      ;//µÃµ½Kernel32º¯ÊýµØÖ·Áбí
mov   ebx,[ebx+ecx*4]
add   ebx,esi      ;//¼ÆËãGetProcAddressº¯ÊýµØÖ·
mov   eax,ebx      ;eax=APIº¯ÊýµØÖ·,esi=Kernel32.dll hModule
pop edi
pop esi
pop ebx
ret
GetApiAddress endp
end Start

[ Last edited by »ÃÓ°ÎÞºÛ on 2007-7-30 at 07:57 ]
»Ø¸´´ËÂ¥
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

gph-rabbit

½ð³æ (СÓÐÃûÆø)

0.5

лл£¬Ñ§Ï°¡£
2Â¥2006-12-29 01:18:46
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

maxinluo

ºÃ£¬·Ç³£ÏêϸµÄ²ÄÁÏ
3Â¥2007-07-28 16:40:34
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû
Ïà¹Ø°æ¿éÌø×ª ÎÒÒª¶©ÔÄÂ¥Ö÷ sdlj8051 µÄÖ÷Ìâ¸üÐÂ
×î¾ßÈËÆøÈÈÌûÍÆ¼ö [²é¿´È«²¿] ×÷Õß »Ø/¿´ ×îºó·¢±í
[¿¼ÑÐ] Ò»Ö¾Ô¸°²´óÉúÎïѧ07³õÊÔ322¡¢±¾¿Æ¶þ±¾¡¢µ÷¼ÁÇóÖú +8 Àî¶àÃ×lee. 2026-04-12 9/450 2026-04-12 20:18 by bljnqdcc
[¿¼ÑÐ] 307Çóµ÷¼Á +10 tzq94092 2026-04-10 10/500 2026-04-12 08:18 by wise999
[¿¼ÑÐ] һ־Ըн®´óѧ085401£¬314·Ö +4 ßÇßÇßÇßÇ9 2026-04-05 4/200 2026-04-12 02:21 by Çï¶¹²ËÑ¿
[¿¼ÑÐ] ¼ÆËã»ú22408 281·Ö£¬Çóµ÷¼Á +7 17715607211 2026-04-06 7/350 2026-04-12 00:43 by xuxiang
[¿¼ÑÐ] 271Çóµ÷¼Á +20 2261744733 2026-04-11 22/1100 2026-04-11 23:14 by labixiaoqiao
[¿¼ÑÐ] ±¾ÈËÅ®º¢ +7 ºðºð£¬ 2026-04-10 9/450 2026-04-11 14:45 by ACS Nano¡ª¡ª
[¿¼ÑÐ] 298Çóµ÷¼Á +5 ²ÐºÉÐÂÁø 2026-04-07 5/250 2026-04-11 11:02 by ×ÏêØ×ÏÆå
[¿¼ÑÐ] 342µç×ÓÐÅϢר˶Çóµ÷¼Á +9 ÄãÈÃÎÒÔõôÀóÖ¦ 2026-04-10 10/500 2026-04-11 08:33 by zhq0425
[¿¼ÑÐ] µ÷¼Á »¯Ñ§ 307 +21 73372112 2026-04-09 23/1150 2026-04-10 23:53 by wj165256
[¿¼ÑÐ] µ÷¼Á +12 ¾í¾í¾íÐIJË_ 2026-04-09 13/650 2026-04-10 22:36 by Ftglcn90
[¿¼ÑÐ] 263ÄÜÔ´¶¯Á¦×¨Ë¶Çóµ÷¼Á +3 ¼Ó´óºÅ·¹ºÐ´ü 2026-04-10 3/150 2026-04-10 22:23 by 286640313
[¿¼ÑÐ] 083200 305·Ö Çó¶þÂÖµ÷¼Á ²»½ÓÊÜ¿çרҵ +9 Claireyyyy 2026-04-09 10/500 2026-04-10 21:21 by Claireyyyy
[¿¼ÑÐ] 309Çóµ÷¼Á +14 wdhw 2026-04-10 15/750 2026-04-10 21:06 by zhouxiaoyu
[¿¼ÑÐ] 362Çóµ÷¼Á +10 ÎÒÒª¿¼´ó 2026-04-06 14/700 2026-04-10 17:00 by luoyongfeng
[¿¼ÑÐ] 085800 ÄÜÔ´¶¯Á¦Çóµ÷¼Á +6 °¢biu°¡°¡°¡°¡°¡ 2026-04-10 6/300 2026-04-10 15:03 by hemengdong
[¿¼ÑÐ] ¿¼Ñе÷¼Á-²ÄÁÏÀà-284 +28 Ïë»»ÊÖ»ú²»Ïë½âÊ 2026-04-08 28/1400 2026-04-09 20:08 by µ¹Êý321?
[¿¼ÑÐ] 263·ÖBÇøÇóµ÷¼Á +6 Àînihao 2026-04-08 6/300 2026-04-08 09:38 by ÄÏ¿ªÐ¡ôë
[¿¼ÑÐ] Çóµ÷¼Á +15 ÐܶþÏëÉϰ¶ 2026-04-06 15/750 2026-04-08 04:53 by Î޼ʵIJÝÔ­
[¿¼ÑÐ] 328Çóµ÷¼Á +4 ghhh88888 2026-04-06 5/250 2026-04-07 14:45 by ghhh88888
[¿¼ÑÐ] ²ÄÁϵ÷¼Á +5 СÁõͬѧ߹߹ 2026-04-06 5/250 2026-04-06 18:34 by sherry_1901
ÐÅÏ¢Ìáʾ
ÇëÌî´¦ÀíÒâ¼û