木马彩衣的实现原理,也就是在程序里面加多一个Section,并且把入口点指向我们新添加的Section,然后再在我们的Section的代码里加上一个jmp,jmp到真正的入口点.这样,一些识壳软件,它在识别入口点代码时,就跑到我们新加的Section,看到里面的代码是VC6或是Delphi的代码也就认为是VC6或是Delphi的程序了.
下面是我写的一个代码,修改自"Fi7ke"老大的Delphi代码,原文可以查看http://blog.youkuaiyun.com/hnxyy/archive/2005/11/16/530694.aspx
DWORD JMPOFF=43;
char OEPCODE[]={0x55, 0x8B, 0xEC, 0x6A, 0xFF, 0x68, 0x2A, 0x2C, 0x0A, 0x00, 0x68, 0x38,
0x90, 0x0D, 0x00, 0x64, 0xA1, 0x00, 0x00, 0x00, 0x00, 0x50, 0x64, 0x89,
0x25, 0x00, 0x00, 0x00, 0x00, 0x58, 0x64, 0xA3, 0x00, 0x00, 0x00, 0x00,
0x58, 0x58, 0x58, 0x58, 0x8B, 0xE8, 0xB8,
0x00, 0x10, 0x40, 0x00, //此处的DWORD是跳转的地址
下面是我写的一个代码,修改自"Fi7ke"老大的Delphi代码,原文可以查看http://blog.youkuaiyun.com/hnxyy/archive/2005/11/16/530694.aspx
DWORD JMPOFF=43;
char OEPCODE[]={0x55, 0x8B, 0xEC, 0x6A, 0xFF, 0x68, 0x2A, 0x2C, 0x0A, 0x00, 0x68, 0x38,
0x90, 0x0D, 0x00, 0x64, 0xA1, 0x00, 0x00, 0x00, 0x00, 0x50, 0x64, 0x89,
0x25, 0x00, 0x00, 0x00, 0x00, 0x58, 0x64, 0xA3, 0x00, 0x00, 0x00, 0x00,
0x58, 0x58, 0x58, 0x58, 0x8B, 0xE8, 0xB8,
0x00, 0x10, 0x40, 0x00, //此处的DWORD是跳转的地址