简单介绍源码免杀如何处理!

一、如何查找特征码

查找特征码与代码的对应位置,是这篇文章首先需要了解的基础。为了方便我们查找,在编译的时候生成map文件,选择vc工程选项(project),在下拉菜单中选择设置(settings),或者你也可以按快捷键alt+f7;弹出工程设置对话框(project settings)。

点击c/c++选项卡,在工程选项(projectoption)中输入/Zd,或者你可以在调试信息(debug info)下拉列表中选择line numbers only。

在连接(link)选项卡讲产生map文件(generate mapfile)打上勾。再在工程选项卡中写入/mapinfo:lines,最后确定。

用od打开文件点击插件弹出下拉菜单选择godup plugins,在其二级菜单中选择load abel。一般我们用myccl定位特征码,定位出特征码,然后导入od。myccl定位出的是文件特征码,而od中是内存地址。一般大家都会用一些地质转换工具把文件地址转换为内存地址再在od中查找,其实od已经给我们准备了这样的插件。在插件中选择olly advanced-option,在addtional options中将启用改进的ctrl+g功能勾上。

ctrl+g运行选中偏移量,在下拉列表中就可以选择要用的文件。例如在xxx出定位出的特征码载入汇编代码为call c在上面有call a,下面有call b,又或者有一些字串。根据这些信息,可以在vc中找相应信息比对,下面的实战中会详细说明。

二、如何定位特征码

我们一般手动定位出来的特征码有一些几种:定位到代码上,定位到字符串上,定位到输入表上(高启发的最爱,例如nod32和小红伞)。

(1)定位到代码

对于代码可以交换代码位置,等价代码替换,合并分离代码,添加花指令。

代码交换:例如int a;int b;定位的位置为int a,你可以换一下位置改成intb:int a:等价替换:例如char a[5]=”hello”;你可以改为char *p=”hello”;

合并分离代码:例如char a[5]=hello;print(a);可以改为print(hello);分离就是其反过程。

添加花指令:例如直接在代码前后加nop。_asm{nop},nop数量随意。

如果不想定位的话,大家可以直接在代码中多出直接加花指令,是代码位置发生变化。即可达到免杀但是对字符串和输入表无效。所以大家在定为特征码之前在代码处先加一些花指令。

(2)定位到字符串

修改字串:现将其中几个字符修改,然后再将其修改过来。例如char *p=hell;你可以改为char*p=mello;p[0]=;

连接字串:将字串分离为两部分,然后再连接一下。例如char *p=hello;可以改为char *p=he;

strcat(p,llo);

字串加密:将字串加密一下,然后在解密。例如char *p=hello;可以将其改为char *p=gdkkn;

for(int i=0;i5;i+=)p[i]++;

翻转字串:例如有字符串为“hello”,你可以现将字串改为“olleh”,再用strrev将其翻转回来,strrev(“olleh”)最后输入结果就为hello。

字串修改应该还有别的方法,大家可以自由发挥。

(3)定位到输入表

定位到输入表可以用动态调用或者延迟加载。例如定位到输入表的MessageBox,你可以将其改为typedef int(WINAPI *pMessageBoxA),pMessageBoxA pMessageBoxA=(pMessageBoxA)GetProcAddress(LoadLibrary(“user32.dll”),”MessageBoxA”);

对于高启发杀的代码,可以用try{}catch{}结构。对于杀入口的可以用#pragma comment(linker,”/ENTRY:xxx”)。对于定位出来的特征码载入c32,看起属于代码部分还是字符串,输入表部分,决定其属于哪一种。

三、实战应用

说了这么多理论,下面开始实战。首先安装编译器,将sdk文件解压覆盖编译器目下的vc98。vc98下的是一些文件。

ghost文件为了保护版权,里面有硬盘锁,必须先将硬盘锁去掉,否则修改版权就会导中硬盘锁,所有盘符不能打开,只能重装系统,大家切记。修改两处就可以去掉硬盘锁。运行源代码,打开搜索框搜unsigned char scode[] =,一会下面的框框就会提示发现一处,我们双击它。

代码就不贴出了,想要的可以来找我要的。

在搜索CBuildView::OnActivateView。

再搜索killmbr将// int KillMBR();注释掉。

现在可以随便修改版权信息了。

搜索m pMainWnd-SetMenu(NULL);注释掉这句可以去掉菜单栏。

f3ccdd27d2000e3f9255a7e3e2c48800201707212002201140100777.jpg

搜索CMainFrame::PreCreateWindow,  cs.cx= 646;可以修改软件的宽度,cs.cy=310;修改高度的,cs.lpszName=Ghost RAT Beta;修改标题栏的。搜索COLUMNSTRUCT g_Cohumn_Data[]=可以修改列表控件上方的文字。搜索CMainFrame::OnCreate,在里面加上this -CenterWindow(CWnd::GetDesktop Window());可以使软件打开时居中,默认是左上角的,我最终修改完的样子。

下面来将dll以及install放到bin文件夹中(为了便于我们免杀),工程中的svchost文件就是dll源码文件,ghost就是控制端源码文件,install就是loader文件。alt+f7打开工程设置对话框,切换到连接选项卡,选中右边的svchost将输出文件名(output file name)../install/res/svcbost.dll改为../../bin/g486se.dll,至于dll文件名可以随意更改(一定要修改,有些杀软查杀的)。同理将../../ghost/res/install.exe改为../../bin/install.dat,改为后缀防止不小心点击了它。搜索IDR_DLL,将”ressvchost.dll”改为….bing486se.dll,搜IDR_BSS,将resinstall.exe改为..bininstall.dat。下面删除驱动文件,因为驱动文件现在用不着了。删除工程中svchost下的IDR_SYS资源。再搜索resetssdt,依次将其注释或删除掉。删ghost资源下的IDR_BSS。

来到ghost buildview.cpp

注释掉FreeResource(hResData);接着修改一些字符串(一般杀软都杀的),搜索AAAAAA,搜到三处,将6个替换为任意六个字符的字串,我这里改为XFILES。再搜索CCCCCC,搜到两处,也是改为任意6个字符,我将其改为了SEILFX。搜索Ghost Update,搜到两处,将其改为任意字串,我改为g49esg4e。在server文件下搜索Ghost,搜到一处,将其改为任意字串,我改为了xfi%dles。准备工作的最后一步就是把svchost文件版本信息给改一下,这里我改成卡巴斯基的。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容