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

Znn3bq.jpeg
ÉÇÍ·´óѧº£Ñó¿ÆÑ§½ÓÊܵ÷¼Á
²é¿´: 498  |  »Ø¸´: 1
µ±Ç°Ö÷ÌâÒѾ­´æµµ¡£

sdlj8051

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

[½»Á÷] »ã±àring3ÏÂʵÏÖHOOK API[תÌù]

»ã±àring3ÏÂʵÏÖHOOK API(¶þ´ÎÐ޸İæ)

¡¾ÎÄÕ±êÌâ¡¿»ã±àring3ÏÂʵÏÖHOOK API
¡¾ÎÄÕÂ×÷Õß¡¿nohacks(·Ç°²È«,hacker0058)
¡¾×÷ÕßÖ÷Ò³¡¿hacker0058.ys168.com
¡¾ÎÄÕ³ö´¦¡¿¿´Ñ©ÂÛ̳(bbs.pediy.com)

===========================[ »ã±àring3ÏÂʵÏÖHOOK API ]=======================

                                                 Author: nohacks
                                                 Emil: kker.cn@163.com
                                                 Version: 1.1
                                                 Date: 7.18.2006
                                                

=====[ 1. ÄÚÈÝ ]=============================================

1. ÄÚÈÝ
2. ½éÉÜ
  2.1 ʲô½ÐHook API?
  2.2 API HookµÄÓ¦ÓýéÉÜ
  2.3 API HookµÄÔ­Ôò
3. ¹Ò¹³·½·¨
  3.1 ¸ÄдIATµ¼Èë±í·¨
  3.2 ¸ÄдÄÚ´æµØÖ·JMP·¨
4. »ã±àʵÏÖ
  4.1. ´úÂë
  4.2. ·ÖÎö
5. ½áÊøÓï


=====[ 2. ½éÉÜ ]================================================

   ÕâÆªÎÄÕÂÊÇÓйØÔÚOS WindowsϹҹ³APIº¯ÊýµÄ·½·¨¡£ËùÓÐÀý×Ó¶¼ÔÚ»ùÓÚNT¼¼ÊõµÄWindows°æ±¾NT4.0

¼°ÒÔÉÏÓÐЧ(Windows NT 4.0, Windows 2000, Windows XP)¡£¿ÉÄÜÔÚÆäËüWindowsϵͳҲ»áÓÐЧ¡£

   ÄãÓ¦¸Ã±È½ÏÊìϤWindowsϵĽø³Ì¡¢»ã±àÆ÷¡¢ºÍһЩAPIº¯Êý£¬²ÅÄÜÃ÷°×ÕâÆªÎÄÕÂÀïµÄÄÚÈÝ¡£


=====[2.1 ʲô½ÐHook API?]=================================
   
   ËùνHook¾ÍÊǹ³×ÓµÄÒâ˼£¬¶øAPIÊÇÖ¸Windows¿ª·Å¸ø³ÌÐòÔ±µÄ±à³Ì½Ó¿Ú£¬Ê¹µÃÔÚÓû§¼¶±ðÏ¿É

ÒÔ¶Ô²Ù×÷ϵͳ½øÐпØÖÆ£¬Ò²¾ÍÊÇÒ»°ãµÄÓ¦ÓóÌÐò¶¼ÐèÒªµ÷ÓÃAPIÀ´Íê³ÉijЩ¹¦ÄÜ£¬Hook APIµÄÒâ˼

¾ÍÊÇÔÚÕâЩӦÓóÌÐòµ÷ÓÃÕæÕýµÄϵͳAPIǰ¿ÉÒÔÏȱ»½Ø»ñ£¬´Ó¶ø½øÐÐһЩ´¦ÀíÔÙµ÷ÓÃÕæÕýµÄAPIÀ´Íê

³É¹¦ÄÜ¡£

====[2.2 API HookµÄÓ¦ÓýéÉÜ]=================================
   
   API Hook¼¼ÊõÓ¦Óù㷺,³£ÓÃÓÚÆÁĻȡ´Ê,ÍøÂç·À»ðǽ,²¡¶¾Ä¾Âí,¼Ó¿ÇÈí¼þ,´®¿ÚºìÍâͨѶ,ÓÎÏ·Íâ

¹Ò,internetͨÐŵÈÁìÓòAPI HOOKµÄÖÐÎÄÒâ˼¾ÍÊǹ³×¡API,¶ÔAPI½øÐÐÔ¤´¦Àí,ÏÈÖ´ÐÐÎÒÃǵĺ¯Êý,Àý

ÈçÎÒÃÇÓÃAPI Hook¼¼Êõ¹Ò½ÓExitWindowsEx APIº¯Êý,ʹ¹Ø»úʧЧ,¹Ò½ÓZwOpenProcessº¯Êý(Èç:ÀÏÍõµÄ

EncryptPE),Òþ²Ø½ø³ÌµÈµÈ......

====[2.3 API HookµÄÔ­Ôò]=====================================
   
   HOOK APIÓÐÒ»¸öÔ­Ôò£¬Õâ¸öÔ­Ôò¾ÍÊÇ£º±»HOOKµÄAPIµÄÔ­Óй¦Äܲ»ÄÜÊܵ½ÈκÎÓ°Ïì¡£¾ÍÏóÒ½Éú¾ÈÈË,

Èç¹û°Ñ²¡ÈËÉíÌåÀïµÄ²¡¶¾É±ËÀÁË£¬²¡ÈËÒ²ËÀÁË£¬ÄÇôÕâ¸ö¡°¾ÈÈË¡±¾ÍûÓÐÈκÎÒâÒåÁË¡£Èç¹ûÄãHOOK API

Ö®ºó£¬ÄãµÄÄ¿µÄ´ïµ½ÁË£¬µ«APIµÄÔ­Óй¦ÄÜʧЧÁË£¬ÕâÑù²»ÊÇHOOK£¬¶øÊÇREPLACE£¬²Ù×÷ϵͳµÄÕý³£¹¦ÄÜ

¾Í»áÊܵ½Ó°Ï죬ÉõÖÁ»á±ÀÀ£¡£

====[ 3. ¹Ò¹³·½·¨ ]==============================================

×ܵÄÀ´Ëµ,³£ÓõĹҹ³API·½·¨ÓÐÒÔÏÂÁ½ÖÖ:

3.1 ¸ÄдIATµ¼Èë±í·¨

   Ð޸ĿÉÖ´ÐÐÎļþµÄIAT±í£¨¼´ÊäÈë±í£©ÒòΪÔڸñíÖмǼÁËËùÓе÷ÓÃAPIµÄº¯ÊýµØÖ·£¬ÔòÖ»Ð轫ÕâЩ

µØÖ·¸ÄΪ×Ô¼ºº¯ÊýµÄµØÖ·¼´¿É£¬µ«ÊÇÕâÑùÓÐÒ»¸ö¾ÖÏÞ£¬ÒòΪÓеijÌÐò»á¼Ó¿Ç£¬ÕâÑù»áÒþ²ØÕæÊµµÄIAT±í

£¬´Ó¶øÊ¹¸Ã·½·¨Ê§Ð§¡£

3.2 ¸ÄдÄÚ´æµØÖ·JMP·¨

    Ö±½ÓÌø×ª£¬¸Ä±äAPIº¯ÊýµÄÈë¿Ú»ò³ö¿ÚµÄ¼¸¸ö×Ö½Ú£¬Ê¹³ÌÐòÌø×ªµ½×Ô¼ºµÄº¯Êý,¸Ã·½·¨²»ÊܳÌÐò¼Ó¿Ç

µÄÏÞÖÆ¡£ÕâÖÖ¼¼Êõ,˵ÆðÀ´Ò²²»¸´ÔÓ£¬¾ÍÊǸıä³ÌÐòÁ÷³ÌµÄ¼¼Êõ¡£ÔÚCPUµÄÖ¸ÁîÀÓм¸ÌõÖ¸Áî¿ÉÒԸıä

³ÌÐòµÄÁ÷³Ì£ºJMP£¬CALL£¬INT£¬RET£¬RETF£¬IRETµÈÖ¸Áî¡£ÀíÂÛÉÏÖ»Òª¸Ä±äAPIÈë¿ÚºÍ³ö¿ÚµÄÈκλúÆ÷Âë

£¬¶¼¿ÉÒÔHOOK,ÏÂÃæÎÒ?£ÓõĸÄдAPIÈë¿ÚµãµÄ·½·¨:
   
    ÒòΪ¹¤×÷ÔÚRing3ģʽÏÂ,ÎÒÃDz»ÄÜÖ±½ÓÐÞ¸ÄÎïÀíÄÚ´æ,Ö»ÄÜÒ»¸öÒ»¸ö´ò¿ªÐÞ¸Ä,µ«¾ßÌåµÄ·½·¨ÓÖ·Ö³É

ºÃ¼¸ÖÖ,ÎÒ¸ø´ó¼Ò½éÉܼ¸ÖÖ²Ù×÷˼·:

  <1>Ê×ÏȸÄдAPIÊ××Ö½Ú,ҪʵÏÖÔ­APIµÄ¹¦ÄÜÐèÒªµ÷ÓÃAPIʱÏÈ»¹Ô­±»Ð޸ĵÄ×Ö½Ú,È»ºóÔÙµ÷ÓÃÔ­API,µ÷

ÓÃÍêºóÔٸĻØÀ´,ÕâÑùʵÏÖÓеãÂé·³,µ«×î¼òµ¥,´ÓÀíÂÛÉÏ˵ÓЩHOOKµÄ¿ÉÄÜ,ÒòΪÎÒÃÇÏÈ»¹Ô­ÁËAPI,Èç¹û

ÔÚÕâ֮ǰ³ÌÐòµ÷ÓÃÁËAPI,¾ÍÓпÉÄÜÌÓ¹ýHOOKµÄ¿ÉÄÜ!

  (2)°Ñ±»¸²¸ÇµÄ»ã±à´úÂë±£´æÆðÀ´,ÔÚÌæ´úº¯ÊýÀïÄ£Äâ±»±»¸²¸ÇµÄ¹¦ÄÜ,È»ºóµ÷ÓÃÔ­º¯Êý(Ô­µØÖ·+±»¸²

¸Ç³¤¶È).µ«ÕâÑù»á²úÉúÒ»¸öÎÊÌâ,²»Í¬µÄ»ã±àÖ¸Á¶ÈÊDz»Ò»ÑùµÄ(±ÈÈç˵ÎÒÃÇдÈëµÄJMPÖ¸ÁîÕ¼ÓÃ5¸ö×Ö

½Ú,¶øÎÒÃÇдÈëµÄÕâ5¸ö×Ö½ÚÕ¼ÓõÄλÖò»Ò»¶¨ÕýºÃÊÇÒ»¸ö»ò¶à¸öÍêÕûµÄÖ¸Áî,ÓпÉÄÜÐèÒª±£´æ7¸ö×Ö½Ú,

²Å²»ÄÜ´òÂÒ³ÌÐòÔ­ÓеŦÄÜ,ÐèÒª±àдһ¸öÅÓ´óµÄÅжÏÌåϵÀ´ÅжÏÖ¸Á¶È,ÍøÉÏÒѾ­ÓÐÕâÑùµÄ»ã±à³ÌÐò

(Z0MBiEдµÄLDE32),·Ç³£µÄ¸´ÔÓ!

  (3)°Ñ±»HOOKµÄº¯Êý±¸·ÝÒ»ÏÂ,µ÷ÓÃʱÔÚÌæ´úº¯ÊýÀïµ÷Óñ¸·Ýº¯Êý.ΪÁ˱ÜÃâÂé·³,¿ÉÒÔÖ±½Ó±¸·ÝÕû¸ö

DLLȱµã¾ÍÊÇÌ«ÎþÉüÄÚ´æ,Ò»°ã²»ÍƼöʹÓÃÕâÖÖ·½·¨!


=====[ 4. »ã±àʵÏÖ ]==============================================

±¾ÎľÍÊǽ¨Á¢ÔÚµÚ2ÖÖ·½·¨Ö®ÉϵÄ!±¾×ÅÏÈÒ׺óÄѵÄÔ­Ôò,½ñÌìÎÒÃÇÏÈÀ´ËµËµËüµÄµÚ1ÖÖ²Ù×÷˼·.
  
  ÎÒÃÇÄÃAPIº¯ÊýExitWindowsExÀ´ËµÃ÷,ÏÂÃæÊÇÎÒÔÚODÀïÀ¹ÏµÄExitWindowsExÔ­Èë¿Ú²¿·Ö

     77D59E2D            $  8BFF          mov edi,edi  
     77D59E2F            .  55            push ebp
     77D59E30            .  8BEC          mov ebp,esp
     77D59E32            .  83EC 18       sub esp,18
      ......

  Èç¹ûÎÒÃǰÑExitWindowsExµÄÈë¿Úµã¸ÄΪÏÂÃæµÄ,»á³öÏÖʲôÇé¿ö?

    77D59E2D               B8 00400000   mov eax,4000
    77D59E32               FFE0          jmp eax
    ......


  ÎÒÃÇ¿ÉÏë¶øÖª,³ÌÐòÖ´Ðе½77D59E32´¦¾Í»á¸Ä±äÁ÷³ÌÌøµ½00400000µÄµØ·½


  Èç¹ûÎÒÃǵÄ00400000´¦ÊÇÕâÑùµÄ×Ó³Ì:

=======================
MyAPI proc  bsWORD  ,dwReservedWORD  ;ºÍExitWindowsExÒ»Ñù´ø2¸ö²ÎÊý                 

;×öÄãÏë×öµÄÊÂ

......

;ÕâÀï·ÅAPIÈë¿Úµã¸Ä»ØÔ­»úÆ÷ÂëµÄ´úÂë

;Èç¹ûÄãÊDZ¸·ÝµÄÕû¸öDLL,¾ÍÖ±½Óµ÷Óñ¸·ÝAPI,²»ÓøÄÀ´¸ÄÈ¥ÁË,²»»áÓЩ¹´APIµÄ¿ÉÄÜ!

invoke ExitWindowsEx,bs,dwReserved
                          
;ÕâÀï·ÅHOOK APIµÄ´úÂë
  
.endif

mov eax,TRUE

ret
=======================

   ÕâÀïµÄMyAPIÊǺÍExitWindowsEx²ÎÊýÒ»ÑùµÄµÄ×Ó³Ì,ÒòΪ³ÌÐòÊÇÔÚAPIµÄÈë¿Ú²¿·ÖÌø×ªµÄ,¸ù¾Ý

stdcallÔ¼¶¨(²ÎÊýÊý¾Ý´ÓÓÒÏò×óÒÀ´Îѹջ£¬»Ö¸´¶ÑÕ»µÄ¹¤×÷½»Óɱ»µ÷ÓÃÕß),´Ëʱ¶ÑÕ»»¹Ã»Óлָ´,ÎÒÃÇ

ÔÚ×Ó³ÌÀïÈ¡³öµÄ²ÎÊýÊý¾ÝÒÀÈ»ÓÐЧ,ÎÒÃÇ¿ÉÒÔÔÚÕâÀïÖ´ÐÐ×Ô¼ºµÄ´úÂë,Äã¿ÉÒÔ¾ö¶¨ÊÇ·ñ¼ÌÐø°´Ô­²ÎÊý»ò¸Ä

±ä²ÎÊýºóÔÙµ÷ÓÃÔ­API,Ò²¿ÉÒÔʲô¶¼²»×ö,µ±È»ÔÚµ÷ÓÃ֮ǰ,ÎÒÃÇÒªÏÈ»¹Ô­ÎÒÃÇÐ޸ĹýµÄAPI(¿ÉÒÔÊÂÏÈÓÃ

APIº¯ÊýReadProcessMemory¶Á³öÔ­APIµÄǰ¼¸¸ö×Ö½Ú±¸·ÝÖ®),µ÷ÓÃÍêºóÔٸĻØÀ´¼ÌÐøHOOK API,²»¹ýÕâÖÖ

·½·¨ÓЩAPIµÄ¿ÉÄÜ(Ô­ÒòÇ°ÃæÒѾ­ËµÁË),ÄãÈç¹û¾õµÃÕâ¸ö·½·¨²»Í×,ÒòΪһ°ãϵͳDLL¶¼²»´ó,Äã¿ÉÒÔ±¸

·ÝÕû¸öDLL.

ÏÂÃæÎÒ¾ÍÁгöring3ÏÂHOOK APIµÄ¼¸¸ö²½Ö裺

1.µÃµ½Òª¹Ò¹´APIµÄÈë¿Úµã

2.ÐÞ¸ÄAPIµÄÈë¿ÚµãËùÔÚÒ³µÄÒ³Ãæ±£»¤Îª¿É¶Áдģʽ

3.ÓÃReadProcessMemory¶Á³öAPIµÄÈë¿Úµã¿ªÊ¼µÄ¼¸×Ö½Ú±¸·Ý

4.ÓÃWriteProcessMemoryÐÞ¸ÄAPIµÄÈë¿ÚµãÏóÕâÑùµÄÐÎʽ:
  
  mov eax,4000
  
  jmp eax

ÆäÖеÄ4000ÒªÓúÍÔ­API²ÎÊýÒ»ÑùµÄ×Ó³ÌÐòµØÖ·´úÌæ


  ÔÚÕâ¸ö×Ó³ÌÐòÀïÎÒÃǾö¶¨ÓÃʲô²ÎÊýÔÙµ÷ÓÃÔ­API,²»¹ýµ÷ÓÃ֮ǰҪÓñ¸·ÝµÄǰ8×ֽڸĻØÀ´

µ÷ÓÃÖ®ºóÔÚ¹Ò¹´,Èç´Ë·´¸´.

[ Last edited by sdlj8051 on 2007-1-13 at 20:22 ]
»Ø¸´´ËÂ¥

» ²ÂÄãϲ»¶

ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

sdlj8051

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

=====[ 4.1. ´úÂë ]==============================================

  Ç°ÃæËù½²µÄÊDZ¾½ø³Ì¹Ò¹´,ÎÒÃÇÒª¹Ò¹´ËùÓнø³Ì,¿ÉÒÔÓÃÈ«¾Ö¹´×Ó,ÐèÒªµ¥¶ÀµÄÒ»¸öDLL,ÎÒÃÇ¿É

ÒÔÔÚDLLµÄDLL_PROCESS_ATTACHʼþÀïÀ´HOOK API

=================================hookdll.dll==========================
.486
.model flat,stdcall   ;²ÎÊýµÄ´«µÝÔ¼¶¨ÊÇstdcall(´ÓÓÒµ½×󣬻ָ´¶ÑÕ»µÄ¹¤×÷½»Óɱ»µ÷ÓÃÕß)
option casemap:none
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


HOOKAPI struct
a  byte ?
PMyapi DWORD ?   
d BYTE ?  
e BYTE ?
HOOKAPI ends


;×Ó³ÌÐòÉùÃ÷
WriteApi proto :DWORD ,:DWORD,:DWORD,:DWORD
MyAPI proto  :DWORD  ,:DWORD
GetApi proto  :DWORD,:DWORD


;Òѳõʼ»¯Êý¾Ý
.data
hInstance dd 0
WProcess dd 0
hacker HOOKAPI <>
CommandLine LPSTR ?

Papi1 DWORD ?
Myapi1 DWORD ?
ApiBak1 db 10 dup(?)
DllName1  db "user32.dll",0      
ApiName1  db "ExitWindowsEx",0
mdb db "ÏÂÃæµÄ³ÌÐòÏë¹Ø±Õ¼ÆËã»ú,Òª±£³Ö×èÖ¹Âð?",0


;δ³õʼ»¯Êý¾Ý

.data?
hHook dd ?
hWnd dd ?

;³ÌÐò´úÂë¶Î

.code

DllEntry proc hInst:HINSTANCE, reason:DWORD, reserved1:DWORD
   
  
.if reason==DLL_PROCESS_ATTACH     ;µ±DLL¼ÓÔØÊ±²úÉú´Ëʼþ
        push hInst
        pop hInstance

invoke GetCommandLine   
mov CommandLine,eax                                         ;È¡³ÌÐòÃüÁîÐÐ

;³õʼ»¯

mov hacker.a,0B8h     ;mov eax,
;mov hacker.d PMyapi  ;0x000000
mov hacker.d,0FFh     ;jmp
mov hacker.e, 0E0h    ;eax


invoke   GetCurrentProcess                                   ;È¡½ø³Ìα¾ä±ú

mov WProcess ,eax
   
invoke GetApi,addr DllName1,addr ApiName1                    ;È¡APIµØÖ·
  
mov Papi1,eax                                               ;±£´æAPIµØÖ·

invoke ReadProcessMemory,WProcess,Papi1,addr ApiBak1,8,NULL  ;±¸·ÝÔ­APIµÄǰ8×Ö½Ú

mov hacker.PMyapi,offset MyAPI   ;0x0000,ÕâÀïÉèÖÃÌæ´úAPIµÄº¯ÊýµØÖ·

invoke WriteApi,WProcess,Papi1, addr hacker ,size HOOKAPI    ;HOOK API

.endif

.if  reason==DLL_PROCESS_DETACH

invoke WriteApi,WProcess,Papi1, addr ApiBak1 ,8               ;»¹Ô­API

.endif

mov  eax,TRUE
    ret
DllEntry Endp

GetMsgProc proc nCode:DWORD,wParam:DWORD,lParam:DWORD
    invoke CallNextHookEx,hHook,nCode,wParam,lParam
     mov eax,TRUE
     
      ret
GetMsgProc endp

InstallHook proc
   
    invoke SetWindowsHookEx,WH_GETMESSAGE,addr GetMsgProc,hInstance,NULL
    mov hHook,eax
    ret
InstallHook endp

UninstallHook proc
    invoke UnhookWindowsHookEx,hHook
   invoke WriteApi,WProcess,Papi1, addr ApiBak1 ,8
  ret
UninstallHook endp

GetApi proc DllNameAddress:DWORD,ApiNameAddress:DWORD

invoke  GetModuleHandle,DllNameAddress     ;È¡DLLÄ£¿é¾ä±ú
   
  .if eax==NULL
  
  invoke LoadLibrary ,DllNameAddress    ;¼ÓÔØDLL
  
   .endif
  
invoke GetProcAddress,eax,ApiNameAddress  ;È¡APIµØÖ·
   

mov eax,eax
  
ret

GetApi endp


;============================ÏÂÃæÊǺËÐIJ¿·Ö=========================


WriteApi proc Process:DWORD ,Papi:DWORD,Ptype:DWORD,Psize:DWORD

LOCAL mbi:MEMORY_BASIC_INFORMATION
LOCAL msize:DWORD


;·µ»ØÒ³ÃæÐéÄâÐÅÏ¢
invoke VirtualQueryEx,Process, Papi,addr mbi,SIZEOF MEMORY_BASIC_INFORMATION

;ÐÞ¸ÄΪ¿É¶Áдģʽ

invoke VirtualProtectEx,Process, mbi.BaseAddress,8h,PAGE_EXECUTE_READWRITE,addr

mbi.Protect

;¿ªÊ¼Ð´ÄÚ´æ

invoke  WriteProcessMemory,Process, Papi, Ptype,Psize ,NULL

PUSH eax

;¸Ä»ØÖ»¶Áģʽ

invoke VirtualProtectEx,Process,mbi.BaseAddress,8h,PAGE_EXECUTE_READ,addr mbi.Protect

pop eax

ret

WriteApi endp



;Ìæ´úµÄAPI,²ÎÊýÒªºÍÔ­À´Ò»Ñù

MyAPI proc  bs:DWORD  ,dwReserved:DWORD                     

invoke MessageBox, NULL,  CommandLine, addr mdb, MB_YESNO      ;µ¯³öÐÅÏ¢¿òÑ¡ÔñÊÇ·ñ×èÖ¹

.if eax==7                                                   ;Èç¹ûÑ¡Ôñ·ñ

invoke WriteApi,WProcess,Papi1, addr ApiBak1 ,8              ;ÏÈ»¹Ô­API

invoke ExitWindowsEx,bs,dwReserved                           ;ÔÙµ÷ÓÃAPI

invoke WriteApi,WProcess,Papi1, addr hacker ,sizeof HOOKAPI  ;µ÷ÓÃÍêºóÔٸĻØÀ´
  
.endif

mov eax,TRUE
ret

MyAPI endp

End DllEntry


===============================hookdll.def=============================

LIBRARY hookdll
EXPORTS InstallHook
EXPORTS UninstallHook


=====[ 4.2. ·ÖÎö ]==============================================

HOOKAPI struct
a  byte ?
PMyapi DWORD ?   
d BYTE ?  
e BYTE ?
HOOKAPI ends


   ÎªÁ˱ãÓÚÀí½âºÍʹÓÃ,ÎÒ¶¨ÒåÁËÒ»¸ö½á¹¹:Õâ¸ö½á¹¹ÓÐ4¸ö³ÉÔ±,µÚÒ»¸ö³ÉÔ±a,ÊǸö×Ö½ÚÐÍ,ÎÒÓÃÀ´·Å

0B8h(mov eax),PMyapiÒ»¸öÕûÊýÐÍ,ÓÃÀ´·ÅÎÒÃǵÄÌæ´úAPIº¯ÊýµÄµØÖ·(0X000),µÚ3¸öºÍµÚ4¸ö³ÉÔ±ÎÒ·Ö±ð

ÓÃÀ´·ÅJMPºÍEAX(jmp eax)ÄÇôÁ¬ÆðÀ´¾ÍÊÇ mov,0X0000 ; jmp eax  


.if reason==DLL_PROCESS_ATTACH     
        push hInst
        pop hInstance

invoke GetCommandLine   
mov CommandLine,eax                                         

;³õʼ»¯

mov hacker.a,0B8h     ;mov eax,
;mov hacker.d PMyapi  ;0x0000
mov hacker.d,0FFh     ;jmp
mov hacker.e, 0E0h    ;eax


invoke   GetCurrentProcess                                   

mov WProcess ,eax


  µ±DLL¼ÓÔØÊ±,ÎÒÃÇÏȱ£´æÄ£¿é¾ä±ú,¶ÁÈ¡³ÌÐòÃüÁîÐÐ,È»ºó³õʼ»¯HOOKAPI½á¹¹,дÈëÎÒÃÇҪдµ½ÄÚ´æµÄ

Ö¸Áî(PMyapiÒÔºóдÈë)²¢µ÷ÓÃGetCurrentProcessÈ¡³ö½ø³Ìα¾ä±ú·½±ãÒÔºóдÄÚ´æ.

invoke GetApi,addr DllName1,addr ApiName1                    
  
mov Papi1,eax                                               

invoke ReadProcessMemory,WProcess,Papi1,addr ApiBak1,8,NULL  

mov hacker.PMyapi,offset MyAPI   ;0x0000   

invoke WriteApi,WProcess,Papi1, addr hacker ,size HOOKAPI    ;HOOK API


  ½ÓÏÂÀ´ÓÃ×Ó³ÌGetApiÈ¡³öÒª¹Ò¹´APIµÄÈë¿Úµã,²¢ÓÃReadProcessMemory¶Á³öÈë¿Úµã8×Ö½Ú±¸·ÝÖ®,дÈë
PMyapiµ÷ÓÃ×Ó³ÌWriteApi¸ÄдAPIµÄÈë¿Úµã,Õâ¸ö×Ó³ÌÎÒ²»×¼±¸Ïêϸ˵ÁË,Ëü·Ç³£µÄ¼òµ¥,Î޷ǾÍÊǼ¸¸ö

APIµÄµ÷ÓÃ.ËüµÄºËÐľÍÊÇͨ¹ýWriteProcessMemory¸ÄдÄÚ´æ.

.if  reason==DLL_PROCESS_DETACH

invoke WriteApi,WProcess,Papi1, addr ApiBak1 ,8               

.endif

mov  eax,TRUE
    ret

   Èç¹ûÕâ¸öDLL±»Ð¶ÔØÁË,ÄÇôÄǸöÔÚDLLÀïµÄÌæ´úº¯Êý(MyAPI)½«ÊÇÎÞЧµÄ,Èç¹ûÕâ¸öʱºò³ÌÐòÔÙµ÷ÓÃÕâ

¸öAPI,½«³öÏÖ·Ç·¨²Ù×÷,Òò´ËÔÚDLLÐ¶ÔØÇ°,ÎÒÃDZØÐ뻹ԭAPI.

   ×ܽáÒ»ÏÂ,ÏÖÔÚÖ»Òª³ÌÐò¼ÓÔØÕâ¸öDLL,Õâ¸ö³ÌÐòµÄExitWindowsEx¾Í»á±»ÎÒÃǹ´×¡,½ÓÏÂÀ´ÒªÔõÑù²ÅÄÜ

ÈÃËùÓеijÌÐò¶¼¼ÓÔØÕâ¸öDLLÄØ?Õâ¾ÍÐèÒª°²×°È«¾Ö¹´×Ó:

  InstallHook proc
   
      invoke SetWindowsHookEx,WH_GETMESSAGE,addr GetMsgProc,hInstance,NULL
   
      invoke WriteApi,WProcess,Papi1, addr hacker ,sizeof HOOKAPI

      mov hHook,eax
     ret
  InstallHook endp

   Í¨¹ýSetWindowsHookEx°²×°¹´×Ó,×îºóÒ»¸ö²ÎÊý¿ÉÒÔ¾ö¶¨¸Ã¹³×ÓÊǾֲ¿µÄ»¹ÊÇϵͳ·¶Î§µÄ¡£Èç¹û¸ÃÖµ

ΪNULL£¬ÄÇô¸Ã¹³×Ó½«±»½âÊͳÉϵͳ·¶Î§Äڵģ¬ÄÇËü¾Í¿ÉÒÔ¼à¿ØËùÓеĽø³Ì¼°ËüÃǵÄÏ̡߳£

Èç¹û¸Ãº¯Êýµ÷Óóɹ¦µÄ»°£¬½«ÔÚeaxÖзµ»Ø¹³×ӵľä±ú£¬·ñÔò·µ»ØNULL¡£ÎÒÃDZØÐë±£´æ¸Ã¾ä±ú£¬ÒòΪºó

ÃæÎÒÃÇ»¹ÒªËüÀ´Ð¶Ôع³×Ó,¿ÉÒÔ¿´³ö£¬ÎÒÃÇ´´½¨µÄHookÀàÐÍÊÇWH_CALLWNDPROCÀàÐÍ,¸ÃÀàÐ͵ÄHookÔÚ½ø³Ì

ÓëϵͳһͨÐÅʱ¾Í»á±»¼ÓÔØµ½½ø³Ì¿Õ¼ä£¬´Ó¶øµ÷ÓÃdllµÄ³õʼ»¯º¯ÊýÍê³ÉÕæÕýµÄHook,ÖµµÃÒ»ÌáµÄÊÇ:Òò

ΪҪµ÷ÓÃSetWindowsHookExÀ´°²×°¹³×Ó,ÎÒÃÇGUI³ÌÐòµÄÕâ¸öDLL²»»á±»

UnhookWidowHookExÐ¶ÔØ,Ò²¾ÍÖ»ÓÐÒ»´ÎDLL_PROCESS_ATTACHʼþ,Òò´ËÕâÀïÔÙÒª

HOOK APIÒ»´Î!

ÎÒÃÇ»ØÍ·À´¿´¿´¹³×ӻص÷º¯Êý:

  GetMsgProc proc nCode:DWORD,wParam:DWORD,lParam:DWORD
      invoke CallNextHookEx,hHook,nCode,wParam,lParam
       mov eax,TRUE
     
       ret
  GetMsgProc endp

   ¿ÉÒÔ¿´µ½ÕâÀïÖ»Êǵ÷ÓÃCallNextHookEx½«ÏûÏ¢½»¸øHookÁ´ÖÐÏÂÒ»¸ö»·½Ú´¦Àí£¬ÒòΪÕâÀïAPIº¯Êý
SetWindowsHookExµÄΨһ×÷ÓþÍÊÇÈýø³Ì¼ÓÔØÎÒÃǵÄdll¡£

  UninstallHook proc
     invoke UnhookWindowsHookEx,hHook
     invoke WriteApi,WProcess,Papi1, addr ApiBak1 ,8
   ret
  UninstallHook endp

ÒªÐ¶ÔØÒ»¸ö¹³×Óʱµ÷ÓÃUnhookWidowHookExº¯Êý£¬¸Ãº¯Êý½öÓÐÒ»¸ö²ÎÊý£¬¾ÍÊÇÓûÐ¶ÔØµÄ¹³×ӵľä±ú¡£¹³

×ÓÐ¶ÔØºóÎÒÃÇÒ²Òª»¹Ô­ÎÒÃÇGUI³ÌÐòµÄAPI.

  LIBRARY hookdll
  EXPORTS InstallHook
  EXPORTS UninstallHook

   ÎÒÃǹ«¿ªDLLÀïµÄInstallHookºÍUninstallHookº¯Êý,·½±ã³ÌÐòµ÷ÓÃ,ÕâÑùÎÒÃÇÖ»ÒªÔÚÁíÍâµÄ³ÌÐòÖе÷

ÓÃInstallHook±ã¿É°²×°È«¾Ö¹´×Ó,¹´×¡ËùÓгÌÐòÖеÄAPI:ExitWindowsEx,Ö´ÐÐÎÒÃÇ×Ô¶¨µÄ×Ó³Ì!

Èç¹û²»ÐèÒªÁË,¿ÉÒÔµ÷ÓÃUninstallHookÐ¶ÔØÈ«¾Ö¹´×Ó.

   Çë×¢Ò⣺¶ÔÓÚÔ¶³Ì¹³×Ó£¬¹³×Óº¯Êý±ØÐë·Åµ½DLLÖУ¬ËüÃǽ«´ÓDLLÖÐÓ³Éäµ½ÆäËüµÄ½ø³Ì¿Õ¼äÖÐÈ¥¡£µ±

WINDOWSÓ³ÉäDLLµ½ÆäËüµÄ½ø³Ì¿Õ¼äÖÐȥʱ£¬²»»á°ÑÊý¾Ý¶ÎÒ²½øÐÐÓ³Éä¡£¼òÑÔÖ®£¬ËùÓеĽø³Ì½ö¹²ÏíDLL

µÄ´úÂ룬ÖÁÓÚÊý¾Ý¶Î£¬Ã¿Ò»¸ö½ø³Ì¶¼½«ÓÐÆäµ¥¶ÀµÄ¿½±´¡£ÕâÊÇÒ»¸öºÜÈÝÒ×±»ºöÊÓµÄÎÊÌâ¡£Äú¿ÉÄÜÏ뵱Ȼ

µÄÒÔΪ£¬ÔÚDLLÖб£´æµÄÖµ¿ÉÒÔÔÚËùÓÐÓ³Éä¸ÃDLLµÄ½ø³ÌÖ®¼ä¹²Ïí¡£ÔÚͨ³£Çé¿öÏ£¬ÓÉÓÚÿһ¸öÓ³Éä¸Ã

DLLµÄ½ø³Ì¶¼ÓÐ×Ô¼ºµÄÊý¾Ý¶Î£¬ËùÒÔÔÚ´ó¶àÊýµÄÇé¿öÏÂÄúµÄ³ÌÐòÔËÐеö¼²»´í¡£µ«Êǹ³×Óº¯ÊýÈ´²»ÊÇÈç

´Ë¡£¶ÔÓÚ¹³×Óº¯ÊýÀ´Ëµ£¬ÒªÇóDLLµÄÊý¾Ý¶Î¶ÔËùÓеĽø³ÌÒ²±ØÐëÏàͬ¡£ÕâÑùÄú¾Í±ØÐë°ÑÊý¾Ý¶ÎÉè³É¹²Ïí

µÄ:

Ò»°ãÀ´Ëµ, Ä¿±êÎļþÓÐÈý¸ö¶Î, ·Ö±ðÊÇ text/data/bss ¶Î.

.text ¶Î·ÅÖôúÂë, ÊÇÖ»¶ÁÇÒ¿ÉÔËÐжÎ

.data ¶Î·ÅÖþ²Ì¬Êý¾Ý, ÕâЩÊý¾Ý»á±»·ÅÖÃÈë exe Îļþ. Õâ¸ö¶ÎÊǿɶÁд, µ«ÊDz»ÄÜÔËÐеÄ.

.bss ¶Î·ÅÖö¯Ì¬Êý¾Ý, ÕâЩÊý¾Ý²»±»·ÅÈë exe Îļþ, ÔÚexeÎļþ±»¼ÓÔØÈëÄÚ´æºó²Å·ÖÅäµÄ¿Õ¼ä.

Äã¿ÉÒÔͨ¹ýÔÚÁ´½Ó¿ª¹ØÖÐÖ¸¶¨¶ÎµÄÊôÐÔÀ´ÊµÏÖ:

/SECTION:name,[E][R][W][S][D][K][L][P][X]

ÆäÖÐS±íʾ¹²Ïí,ÒѳõÆÚ»¯µÄ¶ÎÃûÊÇ.data£¬Î´³õʼ»¯µÄ¶ÎÃûÊÇ.bss¡£¼ÙÈçÄúÏëҪдһ¸ö°üº¬¹³×Óº¯ÊýµÄ

DLL£¬¶øÇÒÏëʹËüµÄδ³õʼ»¯µÄÊý¾Ý¶ÎÔÚËùÓнø³Ì¼ä¹²Ïí£¬Äú±ØÐëÕâô×ö£º

link /section:.bss[S]  /DLL  /SUBSYSTEM:WINDOWS ..........

·ñÔò,ÄúµÄÈ«¾Ö¹´×Ó½«²»ÄÜÕý³£¹¤×÷!

=====[ £µ. ½áÊøÓï ]================================================

    ÎÒ»¶Ó­ÈκÎÈËÌá³ö¸ü¶àµÄÕâÀïûÓÐÌáµ½µÄ¹Ò¹³·½·¨£¬Îҿ϶¨ÄÇ»áÓкܶࡣͬÑù»¶Ó­²¹³äÎÒ½éÉܵò»

ÊǺÜÏêϸµÄ·½·¨¡£Ò²¿ÉÒÔ°ÑÎÒÀÁµÃдµÄÆäËü·½·¨Íê³É£¬°ÑÔ´´úÂë·¢¸øÎÒ¡£ÕâÆªÎĵµµÄÄ¿µÄÊÇÑÝʾ¹Ò¹³¼¼

ÊõµÄϸ½Ú£¬ÎÒÏ£ÍûÎÒ×öµ½ÁË¡£
   
============================[ End ]========================

        Àý×ÓÔ´³ÌÐò(MASM+RadASMºÍWindows XP2ϵͳϱàÒëͨ¹ý):
2Â¥2006-08-23 13:12:54
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû
Ïà¹Ø°æ¿éÌø×ª ÎÒÒª¶©ÔÄÂ¥Ö÷ sdlj8051 µÄÖ÷Ìâ¸üÐÂ
×î¾ßÈËÆøÈÈÌûÍÆ¼ö [²é¿´È«²¿] ×÷Õß »Ø/¿´ ×îºó·¢±í
[¿¼ÑÐ] Çóµ÷¼Á +11 Á§ÜÔÒ»¶¨Éϰ¶ 2026-04-10 12/600 2026-04-13 22:20 by zhq0425
[¿¼ÑÐ] Ò»Ö¾Ô¸¹þ¹¤´ó 085600 277 12²Ä¿Æ»ùÇóµ÷¼Á 5+5 chenny174 2026-04-10 36/1800 2026-04-13 22:17 by zhq0425
[¿¼ÑÐ] Ò»Ö¾Ô¸085502£¬267·ÖÇóµ÷¼Á +18 ÔÙæҲҪ³Ô·¹°¡ 2026-04-08 19/950 2026-04-13 21:27 by wunaiy88
[¿¼ÑÐ] ²ÄÁÏ299ר˶Çóµ÷¼Á +13 +21 2026-04-09 13/650 2026-04-13 14:16 by ÕÅzhihao
[¿¼ÑÐ] Ò»Ö¾Ô¸Õã´óÉúÎï325·ÖÇóµ÷¼Á +9 zysheng 2026-04-12 9/450 2026-04-12 22:31 by yuyin1233
[¿¼ÑÐ] ÉúÎïѧ308Çóµ÷¼Á +5 ÏàÐűػá¹ââÍòÕ 2026-04-11 5/250 2026-04-12 18:14 by zhouxiaoyu
[¿¼ÑÐ] 326Çóµ÷¼Á +6 Shansyn 2026-04-10 6/300 2026-04-12 09:46 by hammer3
[¿¼ÑÐ] 280Çóµ÷¼Á +7 ÙâÙâÒ¹Ò¹ 2026-04-09 10/500 2026-04-12 00:33 by À¶ÔÆË¼Óê
[¿¼ÑÐ] ҩѧר˶µ÷¼Á +8 ? һ·Éú?»¨? 2026-04-10 10/500 2026-04-11 21:21 by zhouxiaoyu
[¿¼ÑÐ] 303Çóµ÷¼Á +14 SereinQ 2026-04-10 15/750 2026-04-11 20:43 by À¶ÔÆË¼Óê
[¿¼ÑÐ] 22408 352·ÖÇóµ÷¼Á0854Àà +4 ŬÁ¦µÄÏÄÄ© 2026-04-09 4/200 2026-04-11 09:57 by zhq0425
[¿¼ÑÐ] 22408 327·ÖÇóµ÷¼Á +4 ÔÏ·çkon 2026-04-10 4/200 2026-04-11 09:51 by Öí»á·É
[¿¼ÑÐ] 337Çóµ÷¼Á +4 ÑÐs. 2026-04-10 4/200 2026-04-11 08:57 by zhq0425
[¿¼ÑÐ] µ÷¼ÁÉêÇë086000Ò»Ö¾Ô¸Î÷±±Å©ÁֿƼ¼´óѧÉúÎïÓëÒ½Ò©320·Ö-±¾¿ÆÆë³¹¤Òµ´óѧ +3 ÃÀÃÀŮʿ 2026-04-09 3/150 2026-04-10 10:31 by liuhuiying09
[¿¼ÑÐ] µ÷¼Á +19 2261744733 2026-04-08 19/950 2026-04-09 19:11 by vgtyfty
[¿¼ÑÐ] Çóµ÷¼Á +3 ÖíÈâ¶Õ·ÛÌõcc 2026-04-08 4/200 2026-04-09 10:05 by ÖíÈâ¶Õ·ÛÌõcc
[¿¼ÑÐ] 085404£¬334·Ö£¬Çóµ÷¼Á +5 sunjie8888 2026-04-08 8/400 2026-04-09 07:26 by sunjie8888
[¿¼ÑÐ] Ò»Ö¾Ô¸»ªÄÏʦ·¶´óѧ0702ÎïÀíѧ305µ÷¼Á +4 Äî³£°² 2026-04-07 6/300 2026-04-08 22:53 by bljnqdcc
[¿¼ÑÐ] 313Çóµ÷¼Á +3 Ê®Áùʰ½ 2026-04-07 3/150 2026-04-07 23:20 by lbsjt
[¿¼ÑÐ] 259Çóµ÷¼Á +5 ¾Í°®³ÔÍÁ¶¹Ñ½Ñ½ 2026-04-07 5/250 2026-04-07 22:40 by JourneyLucky
ÐÅÏ¢Ìáʾ
ÇëÌî´¦ÀíÒâ¼û