首页
社区
课程
招聘
[求助]无DLL注入,谁给个例子
发表于: 2015-5-19 08:46 8941

[求助]无DLL注入,谁给个例子

2015-5-19 08:46
8941
收藏
免费 0
支持
分享
最新回复 (16)
雪    币: 10692
活跃值: (3594)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
谁能给我钞票,最好是美金!
2015-5-19 10:50
0
雪    币: 139
活跃值: (1175)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
论坛上不是有么 傀儡注入

这是资源  不要谢 给我论坛币就可以 啊哈哈哈
http://bbs.pediy.com/showthread.php?p=1171054
2015-5-19 11:19
0
雪    币: 4751
活跃值: (1783)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
Win32汇编  不需要dll注入
纯代码远程线程注入 需要自己重定位函数地址
Macro.inc文件
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

; 将参数列表的顺序翻转

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

reverseArgs     macro   arglist:VARARG
        local   txt,count
        txt     TEXTEQU <>
        count   = 0
        for     i,<arglist>
                count   = count + 1
                txt     TEXTEQU @CatStr(i,<!,>,<%txt>)
        endm
        if      count GT 0
                txt     SUBSTR  txt,1,@SizeStr(%txt)-1
        endif
        exitm   txt
endm

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

; 建立一个类似于 invoke 的 Macro

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

_invoke         macro   _Proc,args:VARARG
        local   count
        count   = 0
        %       for     i,< reverseArgs( args ) >
        count   = count + 1
        push        i
        endm
        call        dword ptr _Proc   
endm

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//-----------------------------------

RemoteCode.asm文件
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

REMOTE_CODE_START       equ this byte

_lpLoadLibrary          dd      ?       ;导入函数地址表
_lpGetProcAddress       dd      ?
_lpGetModuleHandle      dd      ?

_lpDestroyWindow            dd      ?
_lpPostQuitMessage      dd      ?
_lpDefWindowProc            dd      ?
_lpLoadCursor           dd      ?
_lpRegisterClassEx      dd      ?
_lpCreateWindowEx       dd      ?
_lpShowWindow           dd      ?
_lpUpdateWindow         dd      ?
_lpGetMessage           dd      ?
_lpTranslateMessage     dd      ?
_lpDispatchMessage      dd      ?

_hInstance              dd      ?
_hWinMain               dd      ?
_szClassName                db      'RemoteClass',0
_szCaptionMain          db      'RemoteWindow',0
_szDestroyWindow            db      'DestroyWindow',0
_szPostQuitMessage      db      'PostQuitMessage',0
_szDefWindowProc            db      'DefWindowProcA',0
_szLoadCursor           db      'LoadCursorA',0
_szRegisterClassEx      db      'RegisterClassExA',0
_szCreateWindowEx       db      'CreateWindowExA',0
_szShowWindow           db      'ShowWindow',0
_szUpdateWindow         db      'UpdateWindow',0
_szGetMessage           db      'GetMessageA',0
_szTranslateMessage     db      'TranslateMessage',0
_szDispatchMessage      db      'DispatchMessageA',0
_szDllUser              db      'User32.dll',0

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

_RemoteThread   proc        uses ebx edi esi lParam
        local   @hModule
        call        @F
        @@:
        pop     ebx
        sub     ebx,offset @B

;********************************************************************

        _invoke [ebx + _lpGetModuleHandle],NULL
        mov     [ebx + _hInstance],eax
        lea     eax,[ebx + offset _szDllUser]
        _invoke [ebx + _lpGetModuleHandle],eax
        mov     @hModule,eax
        lea     esi,[ebx + offset _szDestroyWindow]
        lea     edi,[ebx + offset _lpDestroyWindow]
        .while  TRUE
                _invoke [ebx + _lpGetProcAddress],@hModule,esi
                mov     [edi],eax
                add     edi,4
                @@:
                lodsb
                or      al,al
                jnz     @B
                .break  .if ! byte ptr [esi+1]
        .endw

;********************************************************************

        call        _WinMain
        ret
_RemoteThread   endp

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

_ProcWinMain        proc        uses ebx edi esi,hWnd,uMsg,wParam,lParam
        call        @F
        @@:
        pop     ebx
        sub     ebx,offset @B

;********************************************************************

        mov     eax,uMsg
        .if     eax ==  WM_CLOSE
                         _invoke [ebx + _lpDestroyWindow],hWnd
                         _invoke [ebx + _lpPostQuitMessage],NULL

;********************************************************************

        .else
                         _invoke [ebx + _lpDefWindowProc],hWnd,\
                                                uMsg,wParam,lParam
                         ret
        .endif

;********************************************************************

        xor     eax,eax
        ret
_ProcWinMain        endp

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

_ZeroMemory     proc    _lpDest,_dwSize
          push        edi
          mov     edi,_lpDest
          mov     ecx,_dwSize
          xor     eax,eax
          cld
          rep     stosb
          pop     edi
          ret
_ZeroMemory     endp

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

_WinMain            proc    uses ebx esi edi _lParam
        local   @stWndClass:WNDCLASSEX
        local   @stMsg:MSG
        call        @F
        @@:
        pop     ebx
        sub     ebx,offset @B

;********************************************************************

        invoke  _ZeroMemory,addr @stWndClass,sizeof @stWndClass
        _invoke [ebx + _lpLoadCursor],0,IDC_ARROW
        mov     @stWndClass.hCursor,eax
        push        [ebx + _hInstance]
        pop     @stWndClass.hInstance
        mov     @stWndClass.cbSize,sizeof WNDCLASSEX
        mov     @stWndClass.style,CS_HREDRAW or CS_VREDRAW
        lea     eax,[ebx +  offset _ProcWinMain]
        mov     @stWndClass.lpfnWndProc,eax
        mov     @stWndClass.hbrBackground,COLOR_WINDOW + 1
        lea     eax,[ebx + offset _szClassName]
        mov     @stWndClass.lpszClassName,eax
        lea     eax,@stWndClass
        _invoke [ebx + _lpRegisterClassEx],eax

;********************************************************************

; 建立并显示窗口

;********************************************************************

        lea     eax,[ebx + offset _szClassName]
        lea     ecx,[ebx + offset _szCaptionMain]
        _invoke  [ebx + _lpCreateWindowEx],WS_EX_CLIENTEDGE,eax,ecx,\
                                                                        WS_OVERLAPPEDWINDOW,\
                                                                        100,100,600,400,\
                                                                        NULL,NULL,[ebx + _hInstance],NULL
        mov     [ebx + _hWinMain],eax
        _invoke  [ebx + _lpShowWindow],[ebx + _hWinMain],SW_SHOWNORMAL
        _invoke [ebx + _lpUpdateWindow],[ebx + _hWinMain]

;********************************************************************

; 消息循环

;********************************************************************

        .while  TRUE
                lea     eax,@stMsg
                _invoke [ebx + _lpGetMessage],eax,NULL,0,0
                .break  .if eax == 0
                lea     eax,@stMsg
                _invoke [ebx + _lpTranslateMessage],eax
                lea eax,@stMsg
                _invoke [ebx + _lpDispatchMessage],eax
        .endw

        ret

_WinMain            endp

REMOTE_CODE_END         equ this byte

REMOTE_CODE_LENGTH      equ offset REMOTE_CODE_END - offset REMOTE_CODE_START

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//--------------------------------------

主文件 RemoteThread.asm
.386
.model flat, stdcall
option casemap :none

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Include 文件定义
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

include         windows.inc
include         user32.inc
includelib      user32.lib
include         kernel32.inc
includelib      kernel32.lib
include         Macro.inc

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 数据段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

.data?
        lpLoadLibrary   dd      ?
        lpGetProcAddress        dd  ?
        lpGetModuleHandle   dd  ?
        dwProcessID     dd      ?
        dwThreadID      dd      ?
        hProcess            dd      ?
        lpRemoteCode        dd      ?
        dwTemp          dd      ?

.const
        szErrOpen           db      '无法打开远程线程!',0
        szDesktopClass      db      'Progman',0
        szDesktopWindow     db      'Program Manager',0
        szDllKernel         db      'Kernel32.dll',0
        szLoadLibrary       db      'LoadLibraryA',0
        szGetProcAddress    db      'GetProcAddress',0
        szGetModuleHandle   db      'GetModuleHandleA',0

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.code
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

include         RemoteCode.asm

start:
        invoke  GetModuleHandle,addr szDllKernel
        mov     ebx,eax
        invoke  GetProcAddress,ebx,offset szLoadLibrary
        mov     lpLoadLibrary,eax
        invoke  GetProcAddress,ebx,offset szGetProcAddress
        mov     lpGetProcAddress,eax
        invoke  GetProcAddress,ebx,offset szGetModuleHandle
        mov     lpGetModuleHandle,eax

;********************************************************************

; 查找文件管理器窗口并获取进程ID,然后打开进程

;********************************************************************

        invoke  FindWindow,addr szDesktopClass,addr szDesktopWindow
        invoke  GetWindowThreadProcessId,eax,offset dwProcessID
        mov     dwThreadID,eax
        invoke  OpenProcess,PROCESS_CREATE_THREAD or PROCESS_VM_WRITE or\
            PROCESS_VM_OPERATION,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,\
                        offset dwTemp
                invoke  WriteProcessMemory,hProcess,lpRemoteCode,\
                        offset lpLoadLibrary,sizeof dword * 3,offset dwTemp
                mov     eax,lpRemoteCode
                add     eax,offset _RemoteThread - offset REMOTE_CODE_START
                invoke  CreateRemoteThread,hProcess,NULL,0,eax,0,0,NULL
                invoke  CloseHandle,eax
       .endif

       invoke   CloseHandle,hProcess
.else
        invoke  MessageBox,NULL,addr szErrOpen,NULL,MB_OK or MB_ICONWARNING
.endif

invoke  ExitProcess,NULL

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

end     start
2015-5-19 11:23
0
雪    币: 139
活跃值: (1175)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
楼上的好屌 用汇编来开发程序的都66666666666666666666666
2015-5-19 11:28
0
雪    币: 2775
活跃值: (1122)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
C++照样可以实现函数注入
http://blog.csdn.net/fun0526/article/details/5785326
可是注入代码多了会吐血的。。。

还有一种是手动加载dll到内存
http://bbs.pediy.com/showthread.php?t=149326
2015-5-19 11:41
0
雪    币: 23
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
写到7FFE0000里面,自然共享。:)鬼影一直用这办法,一直都能免杀,哈哈。
2015-5-19 13:59
0
雪    币: 101
活跃值: (144)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
8
远线程注入+自定位技术,CIH最先采用的
2015-5-20 11:23
0
雪    币: 115
活跃值: (23)
能力值: (RANK:20 )
在线值:
发帖
回帖
粉丝
9
不错不错!!!
2015-5-22 13:02
0
雪    币: 4560
活跃值: (1002)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
10
还可以动态编译源码注入,无需重定位
2015-5-22 14:07
0
雪    币: 126
活跃值: (184)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
11
编写ShellCode,注入,创建远线程执行。
或者ShellCode,注入,HOOK到某些系统函数,让ShellCode被执行到
2015-5-23 11:28
0
雪    币: 376
活跃值: (92)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
求这个方法
2015-5-23 12:46
0
雪    币: 257
活跃值: (67)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
13
4楼的很屌
2015-5-23 12:48
0
雪    币: 23
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
写个简单流程,具体的搜吧,
ring0->vp+写入7FFdf000->relocation至7ffeff000->new thread->attach进去->反跳ring3->执行7ffeff000,无dll无模块,无影无踪,潜行ring0,很多年前的技术了。
2015-5-24 18:01
0
雪    币: 376
活跃值: (92)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
感谢前辈,是否是把dll写入7FFDF00,我想要具体的去搜索什么关键字
2015-5-24 22:11
0
雪    币: 608
活跃值: (648)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
16
把dll写入7FFDF00........空间够吗?
2015-5-24 22:26
0
雪    币: 23
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
我还很年轻,不是大叔。。。另外7ffef000最多只能写0x600个字节,如果是dll的话,肯定写不开.这种东西关键不在流程,在于那块shellcode如何写到最高效,而且不能被特征到。你想在这0x600字节内要做到感染mbr等操作。难度很大的,鬼影样本你自己搜吧,我不发那东西。
2015-5-25 11:27
0
游客
登录 | 注册 方可回帖
返回
//