修改特征码出错

下面00496C05是特征码。我用这些方法修改了保存以后,运行程序时会提示:XXX程序遇到问题需要关闭,我们对此引起的不便表示抱歉。如果您正处于进程中,信息可能丢失。黑鹰... 下面00496C05是特征码。

我用这些方法修改了保存以后,运行程序时会提示:XXX程序遇到问题需要关闭,我们对此引起的不便表示抱歉。如果您正处于进程中,信息可能丢失。黑鹰关于免杀的教程我基本都看了,也没有找到解决办法。

请问我该怎么修改呢?

跳转法
00填充法
nop填充法
nop移位法
DLL修改法
等值替换法
函数修改法
修改机器码
顺序调换法
大小写修改法
入口点加1法
16进制加1法

00496BE1 /74 5C je short 内存2.00496C3F
00496BE3 |57 push edi
00496BE4 |696E 64 6F77735>imul ebp,dword ptr ds:[esi+64],5C73776F
00496BEB |43 inc ebx
00496BEC |75 72 jnz short 内存2.00496C60
00496BEE |72 65 jb short 内存2.00496C55
00496BF0 |6E outs dx,byte ptr es:[edi]
00496BF1 |74 56 je short 内存2.00496C49
00496BF3 |65:72 73 jb short 内存2.00496C69
00496BF6 |696F 6E 5C52756>imul ebp,dword ptr ds:[edi+6E],6E75525C
00496BFD |0000 add byte ptr ds:[eax],al
00496BFF |00046C add byte ptr ss:[esp+ebp*2],al
00496C02 |49 dec ecx
00496C03 |0011 add byte ptr ds:[ecx],dl
00496C05 |022E add ch,byte ptr ds:[esi]
00496C07 |3801 cmp byte ptr ds:[ecx],al
00496C09 |0000 add byte ptr ds:[eax],al
00496C0B |0000 add byte ptr ds:[eax],al
00496C0D |0000 add byte ptr ds:[eax],al
00496C0F |0011 add byte ptr ds:[ecx],dl
00496C11 |0000 add byte ptr ds:[eax],al
00496C13 |005410 40 add byte ptr ds:[eax+edx+40],dl
00496C17 |0005 53556E69 add byte ptr ds:[696E5553],al
00496C1D ^|74 8B je short 内存2.00496BAA
00496C1F |C055 8B EC rcl byte ptr ss:[ebp-75],0EC
00496C23 |B9 67000000 mov ecx,67
另外,怎么查找基址?
用OD跳转后,在保存是会弹出以下提示:https://gss0.baidu.com/7LsWdDW5_xN3otqbppnN2DJv/zhanglei521/pic/item/f4a52a4e03648bd8d0c86a58.jpg

谁帮我解决恶这个问题我再加200分,QQ:648886354 注明:免杀
展开
 我来答
网络专家知识库
2008-04-13 · 欢迎光临本店,以计算机网络知识为主
网络专家知识库
采纳数:1537 获赞数:9808

向TA提问 私信TA
展开全部
黑防灰鸽子现在已经被停止生产了,也就是说大多数的灰鸽子都不能用了,你上面所说的问题我也遇到过,灰鸽子最好别自己修改特征码

灰鸽子是一款非常不错的远程控制软件,使用者也很多,因此是各大杀软的必杀对象。较新的鸽子主要功能代码用DLL实现,这增加了程序的隐蔽性,但同时也加大了修改特征码的难度。对于全部功能由一个EXE文件完成的程序,比如鸽子的老版本和WinShell之类,只需要修改EXE本身既可;而对于运行时会释放DLL文件的版本,不但EXE文件本身有特征码(通常在代码段中),而且DLL中也含有大量特征码。因此,修改的大致过程为:导出DLL,修改DLL,DLL导入EXE,修改EXE。下面以灰鸽子1.05版未加壳服务端,卡巴斯基的特征码为例,详细地讲解修改过程。喝口水,准备过草地了。
DLL文件的导出
拿到服务端文件,老规矩,先检测,卡巴报警发现Backdoor.Win32.Feutel.a。下面导出服务端包含的DLL,灰鸽子官方教程里用的是ResHacker,而我更偏向于使用PE Explorer。打开服务端文件,点击工具栏里的“Resource Viewer/Editor”,会显示资源的树状结构,其中RCData?MAINDLL就是我们需要导出的文件.

可以看到PE Explorer已经自动判断出该资源是一个PE文件。在MAINDLL的图标上单击右键,选择“save resources as”,就可以将MAINDLL资源导出。下面做什么?开始修改吗?别急,MAINDLL中还有两个DLL需要导出。再打开刚导出的资源,可以得到另外两个DLL,名字倒是很直接,一个叫HOOK,一个叫GETKEY.

分别导出这两个DLL,用卡巴斯基检测一下,报警发现了Backdoor.Win32.Feutel.a和Trojan-PSW.Win32.KeyLogger.c。到这里,基本思路就应该确定了,先修改HOOK和GETKEY两个DLL,然后将其导入MAINDLL,再修改MAINDLL的代码段中含有的特征码,完毕后将其导入原服务端EXE文件,最后修改EXE文件的代码段中含有的特征码!可不要打退堂鼓,让我们一步步来。
修改HOOK
这是我们第一次修改DLL,但DLL文件的格式和普通的EXE文件其实没有差别,都是标准的PE文件,如果你看了前两期关于特征码定位器使用的文章的话,操作上应该没有什么问题。我们的思路仍旧是:手动定位确定特征码大体范围,自动定位确定精确的位置。
打开CCL,设置成手动,生成300个文件,然后打开HOOK,不选择任何段,对整个文件进行替换,等程序提示全部文件生成完毕后,用卡巴斯基对目标文件夹检测,并将报警的文件删除,最终结果如下:
-------------定位结果------------
序号 起始偏移 大小 结束偏移
0001 00000000 000002B8 000002B8
0002 000140D0 000002B8 00014388
0003 0001479C 0000015C 000148F8
下面将CCL设置为自动检测,间隔时间为7秒,在输入检测段时将0002和0003的数据添加到待检测栏里.

如果你细心的话会发现这两个偏移其实都在CODE段中,这正说明大多数特征码的位置都存在于代码段里。单击确定,进行自动检测,过程就不说了,详细的操作动画过去的黑防都已提供,最终得到如下定位结果:

-------------定位结果------------
序号 起始偏移 大小 结束偏移
0001 00014193 00000015 000141A8
0002 000141A9 0000002A 000141D3
0003 000141D5 0000002A 000141FF
0004 00014200 0000002A 0001422A
0005 0001422C 0000002A 00014256
0006 00014257 0000002A 00014281
0007 00014283 00000015 00014298
0008 0001479C 00000015 000147B1
还真不少,共有8处。修改哪里呢?我的经验是:尽量修改代码,避免修改字符串和数据,因为修改后者必须将每一处调用它的指令都做改动,且在不确定具体含义的情况下很容易出错,不推荐。
先看第一处,用IDA对HOOK进行反汇编,然后找到00014193处,也就是内存偏移00414D93(这里可以用我写的小工具:偏移量转换器,输入文件偏移可以自动计算出内存偏移),这里的代码如下:
CODE:00414D91 dd offset off_413FB0
CODE:00414D95 dd 64616D0Bh, 65646F43h, 6B6F6F48h
CODE:00414DA1 align 4
很显然,这是一些数据,我们甚至不知道它的意义,要修改真是无从下手。于是看第2处,代码如下:
……
CODE:00414DAD xor edx, edx
CODE:00414DAF mov [ebp+var_18], edx
CODE:00414DB2 mov [ebp+var_8], edx
CODE:00414DB5 mov ebx, eax
CODE:00414DB7 xor eax, eax
CODE:00414DB9 push ebp
CODE:00414DBA push offset loc_414F97
CODE:00414DBF push dword ptr fs:[eax]
CODE:00414DC2 mov fs:[eax], esp
CODE:00414DC5 xor eax, eax
CODE:00414DC7 push ebp
……
看来第二处全部是汇编指令,就修改它了。用什么方法呢?前两期我介绍过“指令顺序变换”和“万能跳转”两种方法,当然,能用第一种时尽量用,这里我们也采用变换指令顺序的方法。注意加黑的指令,我们就改变这两句的顺序。修改文件我还是习惯用OllyDbg,因为可以直接进行指令级的操作,你也可以用二进制编辑软件。
用OD打开HOOK,OD会提示“打开的是DLL,是否用Loaddll进行加载”,点确定,然后来到003E4DA7处。这里又有问题了,为什么刚才用IDA打开时,位置在00414DA7而现在却变成003E4DA7呢?这是因为DLL加载时,加载基址是可变的。给大家讲一个在OD中判断加载基址的方法。单击OD工具栏中的M,会显示出当前进程内存中的所有模块.

根据名称找到加载我们的DLL的位置,图中可以看到00400000已经被LOADDLL给占据了,因此HOOK只能被发配到003D0000了,相应的,在IDA中的地址需要减去一个差值(00400000-003D0000)才能得到OllyDbg中的地址。
将黑体的指令进行顺序调换,修改如下:
003E4DB7 55 push ebp
003E4DB8 33C0 xor eax,eax
然后保存修改,再用卡巴斯基来检测一下修改后的HOOK文件,果然,HOOK已经免杀了,是不是很神奇,仅仅修改了三个字节就搞定了!
修改GETKEY
下面该第二个DLL了,过程和修改HOOK的一样,就不详述了,简述一下过程:手动定位的结果如下(生成300个文件):
-------------定位结果------------
序号 起始偏移 大小 结束偏移
0001 00000000 000002BC 000002BC
0002 000095B5 0000015E 00009713
0003 00009DE9 000000AF 00009E98
然后对95B5和9DE9两个段进行自动定位,最终结果如下:
-------------定位结果------------
序号 起始偏移 大小 结束偏移
0001 00009621 00000015 00009636
0002 00009637 0000002A 00009661
0003 00009664 0000002A 0000968E
0004 0000968F 0000002A 000096B9
0005 000096BB 0000002A 000096E5
0006 000096E6 0000002A 00009710
0007 00009E40 0000002A 00009E6A
共有7处,还挺多的。原理一样,尽量修改汇编指令,避免字符串和数据。这一次运气不错,第0001段就是汇编指令:
003DA221 . 68 34A63D00 push RC_Data_.003DA634 ; ASCII " <"
003DA226 . 8D95 ECFEFFFF lea edx,dword ptr ss:[ebp-114]
003DA22C . 8B45 F8 mov eax,dword ptr ss:[ebp-8]
003DA22F . E8 68FEFFFF call RC_Data_.003DA09C
相信修改这几句指令已经难不倒你了,将前三句的顺序调换一下:
003DA221 68 34A63D00 push RC_Data_.003DA634 ; ASCII " <"
003DA226 &
AiPPT
2024-09-19 广告
随着AI技术的飞速发展,如今市面上涌现了许多实用易操作的AI生成工具1、简介:AiPPT: 这款AI工具智能理解用户输入的主题,提供“AI智能生成”和“导入本地大纲”的选项,生成的PPT内容丰富多样,可自由编辑和添加元素,图表类型包括柱状图... 点击进入详情页
本回答由AiPPT提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式