病毒常用方法之移花接木---小小hook

本文介绍了一种通过DLL模块hook通信API实现账号盗取的技术。详细解释了如何通过修改内存读写属性来替换原函数,并利用导出的关键函数供其他进程调用。此技术通过检查发送请求的数据并保存感兴趣的网站登录信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前在一些地方看过不少帖子,介绍或总结hook得各种使用,从中收获不少。其中有一个总结,我觉得是很准确的:hook就是改变原程序的执行流程。只不过在使用的场合不同,每个人实现的效果可能存在差异,但实现的思路大同小异。
下面介绍一个dll模块,它通过hook通信的api来实现盗号,看下主要操作的反汇编代码:

 int _stdcall GetFuncAddr(HMODULE hModule,LPCSTR lpModuleName,LPCSTR lpProcName)
    hModule        =dword ptr 8
    lpModuleName   =dword ptr 0ch ;(传入的实参)wininet(.dll) 
    lpProcName     =dword ptr 10h ; HttpSendRequestA/W

        push ebp 
        mov  ebp,esp
        cmp  [ebp+lpModuleName],0 ;模块名是否为空
        jz   short loc_10001018
        push [ebp+lpModuleName] ;lpModuleName
        call ds:GetModuleHandleA
        push [ebp+lpProcName]  ;函数名
        push eax
        jmp  short loc_1000101e
loc_10001018:
        push [ebp+lpProcName]
        push [ebp+hModule]
loc_1000101e:
        call ds:GetProcAddress ;得到要hook函数的地址
        pop  ebp
        retn 0ch
GetFuncAddr endp 

  ;得到目标函数的地址之后,接下来就是用精心准备的工作函数取替换。这里是通过改变内存的读写属性来实现的。
         lea  eax,[ebp+flOldProtect]
         push eax
         push 4    ;flNewProtect  4---PAGE_READWRITE
         push 10h  ;dwSize
         push dword ptr [esi+0ch]; lpAddress 上面获得的函数地址
         call ds:VirtualProtect
 ;由于是dll不能自己主动执行里面的代码,所以它就导出了关键函数供其他进程调用 
 ;盗号吗?替换的NewHttpSendRequest()会先对发送请求的数据进行检查,如果是感兴趣的网站就将登录信息保存下来,传到指定的邮箱,接下来的任务就还给HttpSendRequest()                 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值