c语言隐藏进程源码,进程保护之-进程隐藏(原创, ASM实现)

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

最近看到一个关于"进程保护"的问题,无聊就研究了一下,总共得出了2种比较可行的方法,第一种就是进程隐藏,第2种就是进程守护.代码发出来,希望大家可以互相学习......

进程守护:http://hi.baidu.com/ciw%5Fblue/blog/item/edd5ff457062603b869473a1.html

进程隐藏:http://hi.baidu.com/ciw%5Fblue/blog/item/bcb8b0c4ad66e9cf38db49f3.html

进程隐藏的代码:

.386

.model flat, stdcall

option casemap:none

include windows.inc

include kernel32.inc

include user32.inc

includelib kernel32.lib

includelib user32.lib

.data

szLoadLibrary db 'LoadLibraryA',0

szGetProcAddress db 'GetProcAddress',0

szGetModuleHandle db 'GetModuleHandleA',0

szProcessWndName db 'Program Manager',0

szKernel   db 'Kernel32.dll',0

.data?

dwProcessID dd ?

hProcess   dd ?

lpLoadLibrary dd ?

lpGetProcAddress dd ?

lpGetModuleHandle dd ?

hModule   dd ?

lpRemoteCode dd ?

.code

REMOTE_CODE_START equ this byte

_lpLoadLibrary   dd ?

_lpGetProcAddress dd ?

_lpGetModuleHandle dd ?

_lpMessageBox   dd ?

_hInstance   dd ?

_hUserModule   dd ?

_szMessageBox   db 'MessageBoxA',0

_szUserDLL   db 'User32.dll',0

_szMsgCaption   db '远程成功',0

_szMsgText   db '请打开Windows任务管理器,看看!',0

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

_RemoteThread proc uses ebx edi esi lParam

call @F

@@:

pop ebx

sub ebx,offset @B

push NULL

call [ebx + _lpGetModuleHandle]

mov   [ebx + _hInstance],eax

lea   eax, [ebx + offset _szUserDLL]

push eax

call [ebx + _lpLoadLibrary]

.if eax

mov [ebx + _hUserModule], eax

lea eax, [ebx + offset _szMessageBox]

push eax

mov   eax, [ebx + _hUserModule]

push eax

call [ebx + _lpGetProcAddress]

.if eax

mov   [ebx + _lpMessageBox], eax

lea edx, [ebx + offset _szMsgText]

lea ecx, [ebx + offset _szMsgCaption]

push MB_OK

push ecx

push edx

push NULL

call [ebx + _lpMessageBox]

.endif

.endif

ret

_RemoteThread endp

REMOTE_CODE_END   equ this byte

REMOTE_CODE_LENGTH equ offset REMOTE_CODE_END - offset REMOTE_CODE_START

start:

invoke GetModuleHandle, offset szKernel

mov hModule, eax

invoke GetProcAddress, hModule, offset szLoadLibrary

mov lpLoadLibrary, eax

invoke GetProcAddress, hModule, offset szGetProcAddress

mov lpGetProcAddress, eax

invoke GetProcAddress, hModule, offset szGetModuleHandle

mov lpGetModuleHandle, eax

invoke FindWindow, NULL, offset szProcessWndName   ;获取窗口句柄

invoke GetWindowThreadProcessId, eax, offset dwProcessID   ;获取程序   ID

invoke OpenProcess, PROCESS_CREATE_THREAD or PROCESS_VM_OPERATION or   PROCESS_VM_WRITE,\

FALSE, dwProcessID

.if eax

mov hProcess, eax

invoke VirtualAllocEx, hProcess, NULL, REMOTE_CODE_LENGTH, MEM_COMMIT, PAGE_EXECUTE_READWRITE

.if eax

mov lpRemoteCode, eax

invoke WriteProcessMemory, hProcess, lpRemoteCode, offset REMOTE_CODE_START,\

REMOTE_CODE_LENGTH , NULL

invoke WriteProcessMemory, hProcess,lpRemoteCode,   offset lpLoadLibrary,\

sizeof dword * 3, NULL

mov eax, lpRemoteCode

add eax, _RemoteThread - offset REMOTE_CODE_START

invoke CreateRemoteThread, hProcess, NULL, 0, eax, 0, NULL, 0

invoke CloseHandle, eax

.endif

.endif

invoke CloseHandle, hProcess

invoke ExitProcess, 0

end start

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值