通行证│用户名: 密码: 验证码: 验证码,看不清楚?请点击刷新验证码 电信网通铁通移动   在线
文章搜索:
热门搜索:红客 黑鹰 红客技术 安全动画 红客培训
首页 文章 软件 动画 资源 励志 论坛 邮箱 会员 军事 科技 博客 爱心红客 最近更新 800g资源
 业内新闻 漏洞公告 病毒公告 电脑知识 网络知识 菜鸟入门 攻防教程 黑客攻防 安全编程 工具使用 综合安全 个人安全 安全相关 Q Q安全 原创精华 红客人物 站内事件
您现在的位置: 爱国者安全网 >> 文章类 >> 红客教程 >> 网络攻防 >> 文章正文
Vcasm的多进程反跟踪技术学习心得(菜鸟篇)
责任编辑:酷酷の鱼   更新日期:2008-1-27
 
vcasm的vprotector程序中使用的多进程(Process)反跟踪技术很有新意,反跟踪技术中比较常见的是多线程(Thread)技术。我以前见到的多进程主要是使用一个进程调试另一个进程。这种方式只能认为是调试反跟踪,不能称为真正的多进程反跟踪技术。而vcasm的方法本人认为是真正意义上的多进程反跟踪技术。这里简单说明一下。
要想利用多进程,必须处理好多个进程之间的数据交换问题和进程同步问题。如果各进程之间没有数据交换就不成其为多进程技术了,谈到进程间的数据交换,我们首先想到的是动态连接库(dll),但vcasm采用了一种更为简便的方法。下面就说说这种方法。
在谈vcasm的数据交换的方法之前先看几个API函数。
CreateFileMapping函数用来生成一个内存文件映射对象,函数定义如下
HANDLE CreateFileMapping(
  HANDLE hFile,              // 映射文件句柄
  LPSECURITY_ATTRIBUTES lpFileMappingAttributes,
                             // 安全属性
  DWORD flProtect,           // 对象的保护属性
  DWORD dwMaximumSizeHigh,   // 对象大小高32位
  DWORD dwMaximumSizeLow,    //对象大小第32位e
  LPCTSTR lpName             // 文件映射对象名
);
当hFile=(HANDLE)-1时得到的不是实际文件的映射对象,而是一个操作系统分页文件返回的一个特定大小的内存块对象。这个内存块对象可以被多个进程用对象名进行操作。这就是说,可以用它来交换数据了。判断这个对象是否存在呢?这又要用到一个函数。
DWORD GetLastError(VOID)
当返回值等于ERROR_ALREADY_EXISTS时则说明这个对象已经存在了。
好了,下面就用程序实际说明一下,vcasm的程序比较复杂,我并没按原程序写代码,而是简化成了一段说明方法的代码,目的只想说明一下这种方法。线程同步的代码这里就不写了,
有兴趣自己逆向一下。

  GetModuleFileName(0,lpFilename,0x200); //取得文件名
   然后将文件名加以变动作为mapview的名
for(i=0;i<0x200;i++)
  {
  //  将文件名中的\变成-
    if(*(char*)(lpFilename+i)==0x5c)*(char*)(lpFilename+i)=0x2d;
  }
mHandle=CreateFileMapping((HANDLE)-1,0,PAGE_READWRITE,0,0x400,lpFilename);
GetLastError()必须紧跟在后面,如果中间还有其他的api,他返回的就不知道是什么了.
if(GetLastError()!=ERROR_ALREADY_EXISTS)
  {
    mapview=MapViewOfFile(mHandle,FILE_MAP_ALL_ACCESS,0,0,0); //提交物理内存
        sum =(char*)((char*)mapview+0x3ff);
        *sum=0;                                        //初始化累加值
  }
  else
  {
    mapview=MapViewOfFile(mHandle,FILE_MAP_ALL_ACCESS,0,0,0); //提交物理内存
        sum =(char*)((char*)mapview+0x3ff);
        *sum+=1;                                        //累加值+1
  }

   if(*sum>5)     //大于5次就该结束了
   {
     MessageBox(0,"yes","ok",0);
     UnmapViewOfFile(mapview);   打开的fileview可以不要了
     CloseHandle(mHandle);        handle也可以关掉了
   }
   else
   {
    还没到五次,再开一个进程
    CreateProcess(0,GetCommandLine(),0,0,0,0,0,0,&StartupInfo,&ProcessInformation);
   }
   Sleep(50);    将执行权交出去,休息一下
   ExitProcess(0);  其他的进程已经打开了,本进程就可以关掉了.

vc++的代码如下:
#include "stdafx.h"

int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
   
  DWORD i;
  LPVOID mapview;
  HANDLE mHandle;
  PCHAR  sum;
  LPTSTR lpFilename=(LPTSTR)malloc(0x200);
  STARTUPINFO StartupInfo;
  StartupInfo.cb=sizeof(STARTUPINFO);
  PROCESS_INFORMATION ProcessInformation;  
  GetModuleFileName(0,lpFilename,0x200); //取得文件名
  GetStartupInfo(&StartupInfo); //填写StartupInfo结构
    for(i=0;i<0x200;i++)
  {
  //  将文件名中的\变成-
    if(*(char*)(lpFilename+i)==0x5c)*(char*)(lpFilename+i)=0x2d;
  }
    mHandle=CreateFileMapping((HANDLE)-1,0,PAGE_READWRITE,0,0x400,lpFilename);
  if(GetLastError()!=ERROR_ALREADY_EXISTS)
  {
    mapview=MapViewOfFile(mHandle,FILE_MAP_ALL_ACCESS,0,0,0); //提交物理内存
        sum =(char*)((char*)mapview+0x3ff);
        *sum=0;                                        //初始化累加值
  }
  else
  {
    mapview=MapViewOfFile(mHandle,FILE_MAP_ALL_ACCESS,0,0,0); //提交物理内存
        sum =(char*)((char*)mapview+0x3ff);
        *sum+=1;                                        //累加值+1
  }

   if(*sum>5)
   {
     MessageBox(0,"yes","ok",0);
     UnmapViewOfFile(mapview);
     CloseHandle(mHandle);
   }
   else
   {
    
    CreateProcess(0,GetCommandLine(),0,0,0,0,0,0,&StartupInfo,&ProcessInformation);
   }
   Sleep(0);
   ExitProcess(0);

  return 0;
}
  • 上一篇文章:
  • 下一篇文章:
  • 最近更新
    固顶文章 迎新年,献爱心。
    普通文章 瑞星公司01月27日发布 每日计算机病毒及木马播报
    普通文章 卡巴加密驱动解密代码
    普通文章 NameLess后门技术全面分析
    普通文章 Linux平台socks5代理
    普通文章 Vcasm的多进程反跟踪技术学习心得(菜鸟篇)
    普通文章 FreeBSD openpty() pty处理多个本地信息泄露漏洞
    普通文章 Numara MRchat.pl MRABLoad2.pl远程命令执行漏洞
    普通文章 谷歌发布域名新政策 封堵域名试用漏洞
    普通文章 淘宝网出现多个假冒网站 公安部提醒网友
    热门文章
    普通文章计算机病毒提醒:近期需防"盗号木马"
    普通文章金山毒霸遭遇"李鬼" AUTO木马群趁机行凶
    普通文章梅勒斯病毒出变种禁止杀毒软件运行
    普通文章网络黑色产业链“病毒经济” 暴利超过房地产
    普通文章“智能主动防御”加网上让利 瑞星新春双线出击
    普通文章救癌症父亲入侵网站盗40万游戏卡被判10年
    普通文章.mobi域名大清理 中国9万手机网站现危机
    普通文章StreamAudio ChainCast VMR客户端代理栈溢出漏洞
    普通文章如何判断自己的系统是否安全!
    普通文章给cmd.exe使用加上口令(使用的是perl脚本)
    精彩专题