【natgator 源码】【mongodb java 驱动 源码】【tcp穿透nat源码】loaddll od 源码

时间:2024-12-22 20:58:07 来源:lua协程源码 编辑:unity3d跑酷游戏源码

1.灰鸽子如何修改特征码?
2.特征码 怎么改才不会错。。。。。

loaddll od 源码

灰鸽子如何修改特征码?natgator 源码

       灰鸽子是一款非常不错的远程控制软件,使用者也很多,因此是各大杀软的必杀对象。较新的鸽子主要功能代码用DLL实现,这增加了程序的隐蔽性,但同时也加大了修改特征码的难度。对于全部功能由一个EXE文件完成的程序,比如鸽子的老版本和WinShell之类,只需要修改EXE本身既可;而对于运行时会释放DLL文件的版本,不但EXE文件本身有特征码(通常在代码段中),而且DLL中也含有大量特征码。因此,修改的大致过程为:导出DLL,修改DLL,DLL导入EXE,修改EXE。下面以灰鸽子1.版未加壳服务端,卡巴斯基的特征码为例,详细地讲解修改过程。喝口水,准备过草地了。

        DLL文件的导出

        拿到服务端文件,老规矩,先检测,卡巴报警发现Backdoor.Win.Feutel.a。mongodb java 驱动 源码下面导出服务端包含的DLL,灰鸽子官方教程里用的是ResHacker,而我更偏向于使用PE Explorer。打开服务端文件,点击工具栏里的“Resource Viewer/Editor”,会显示资源的树状结构,其中RCData?MAINDLL就是我们需要导出的文件.

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

        分别导出这两个DLL,用卡巴斯基检测一下,报警发现了Backdoor.Win.Feutel.a和Trojan-PSW.Win.KeyLogger.c。到这里,基本思路就应该确定了,先修改HOOK和GETKEY两个DLL,然后将其导入MAINDLL,再修改MAINDLL的代码段中含有的特征码,完毕后将其导入原服务端EXE文件,最后修改EXE文件的代码段中含有的特征码!可不要打退堂鼓,让我们一步步来。

        修改HOOK

        这是tcp穿透nat源码我们第一次修改DLL,但DLL文件的格式和普通的EXE文件其实没有差别,都是标准的PE文件,如果你看了前两期关于特征码定位器使用的文章的话,操作上应该没有什么问题。我们的思路仍旧是:手动定位确定特征码大体范围,自动定位确定精确的位置。

        打开CCL,设置成手动,生成个文件,然后打开HOOK,不选择任何段,对整个文件进行替换,等程序提示全部文件生成完毕后,用卡巴斯基对目标文件夹检测,并将报警的文件删除,最终结果如下:

        -------------定位结果------------

        序号 起始偏移 大小 结束偏移

        B8 B8

        D0 B8

        C C F8

        下面将CCL设置为自动检测,间隔时间为7秒,在输入检测段时将和的数据添加到待检测栏里.

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

        -------------定位结果------------

        序号 起始偏移 大小 结束偏移

        A8

        A9 A D3

        D5 A FF

        A A

        C A

        A

       

        C B1

        还真不少,共有8处。修改哪里呢?我的经验是:尽量修改代码,避免修改字符串和数据,因为修改后者必须将每一处调用它的指令都做改动,且在不确定具体含义的java qq源码下载情况下很容易出错,不推荐。

       先看第一处,用IDA对HOOK进行反汇编,然后找到处,也就是内存偏移D(这里可以用我写的小工具:偏移量转换器,输入文件偏移可以自动计算出内存偏移),这里的代码如下:

       CODE:D dd offset off_FB0

       CODE:D dd D0Bh, Fh, 6B6F6Fh

       CODE:DA1 align 4

       很显然,这是一些数据,我们甚至不知道它的意义,要修改真是无从下手。于是看第2处,代码如下:

       ……

       CODE:DAD xor edx, edx

       CODE:DAF mov [ebp+var_], edx

       CODE:DB2 mov [ebp+var_8], edx

       CODE:DB5 mov ebx, eax

       CODE:DB7 xor eax, eax

       CODE:DB9 push ebp

       CODE:DBA push offset loc_F

       CODE:DBF push dword ptr fs:[eax]

       CODE:DC2 mov fs:[eax], esp

       CODE:DC5 xor eax, eax

       CODE:DC7 push ebp

       ……

        看来第二处全部是汇编指令,就修改它了。用什么方法呢?前两期我介绍过“指令顺序变换”和“万能跳转”两种方法,当然,能用第一种时尽量用,这里我们也采用变换指令顺序的方法。注意加黑的指令,我们就改变这两句的顺序。修改文件我还是习惯用OllyDbg,因为可以直接进行指令级的操作,你也可以用二进制编辑软件。

        用OD打开HOOK,OD会提示“打开的是DLL,是否用Loaddll进行加载”,点确定,然后来到E4DA7处。这里又有问题了,为什么刚才用IDA打开时,易语言拖放源码位置在DA7而现在却变成E4DA7呢?这是因为DLL加载时,加载基址是可变的。给大家讲一个在OD中判断加载基址的方法。单击OD工具栏中的M,会显示出当前进程内存中的所有模块.

        根据名称找到加载我们的DLL的位置,图中可以看到已经被LOADDLL给占据了,因此HOOK只能被发配到D了,相应的,在IDA中的地址需要减去一个差值(-D)才能得到OllyDbg中的地址。

        将黑体的指令进行顺序调换,修改如下:

       E4DB7 push ebp

       E4DB8 C0 xor eax,eax

        然后保存修改,再用卡巴斯基来检测一下修改后的HOOK文件,果然,HOOK已经免杀了,是不是很神奇,仅仅修改了三个字节就搞定了!

        修改GETKEY

        下面该第二个DLL了,过程和修改HOOK的一样,就不详述了,简述一下过程:手动定位的结果如下(生成个文件):

        -------------定位结果------------

        序号 起始偏移 大小 结束偏移

        BC BC

        B5 E

        DE9 AF E

       然后对B5和9DE9两个段进行自动定位,最终结果如下:

        -------------定位结果------------

        序号 起始偏移 大小 结束偏移

       

        A

        A E

        F A B9

        BB A E5

        E6 A

        E A E6A

        共有7处,还挺多的。原理一样,尽量修改汇编指令,避免字符串和数据。这一次运气不错,第段就是汇编指令:

       DA . AD push RC_Data_.DA ; ASCII " <"

       DA . 8D ECFEFFFF lea edx,dword ptr ss:[ebp-]

       DAC . 8B F8 mov eax,dword ptr ss:[ebp-8]

       DAF . E8 FEFFFF call RC_Data_.DAC

       相信修改这几句指令已经难不倒你了,将前三句的顺序调换一下:

       DA AD push RC_Data_.DA ; ASCII " <"

       DA &

特征码 怎么改才不会错。。。。。

       灰鸽子是一款非常不错的远程控制软件,使用者也很多,因此是各大杀软的必杀对象。较新的鸽子主要功能代码用DLL实现,这增加了程序的隐蔽性,但同时也加大了修改特征码的难度。对于全部功能由一个EXE文件完成的程序,比如鸽子的老版本和WinShell之类,只需要修改EXE本身既可;而对于运行时会释放DLL文件的版本,不但EXE文件本身有特征码(通常在代码段中),而且DLL中也含有大量特征码。因此,修改的大致过程为:导出DLL,修改DLL,DLL导入EXE,修改EXE。下面以灰鸽子1.版未加壳服务端,卡巴斯基的特征码为例,详细地讲解修改过程。喝口水,准备过草地了。

        DLL文件的导出

        拿到服务端文件,老规矩,先检测,卡巴报警发现Backdoor.Win.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.Win.Feutel.a和Trojan-PSW.Win.KeyLogger.c。到这里,基本思路就应该确定了,先修改HOOK和GETKEY两个DLL,然后将其导入MAINDLL,再修改MAINDLL的代码段中含有的特征码,完毕后将其导入原服务端EXE文件,最后修改EXE文件的代码段中含有的特征码!可不要打退堂鼓,让我们一步步来。

        修改HOOK

        这是我们第一次修改DLL,但DLL文件的格式和普通的EXE文件其实没有差别,都是标准的PE文件,如果你看了前两期关于特征码定位器使用的文章的话,操作上应该没有什么问题。我们的思路仍旧是:手动定位确定特征码大体范围,自动定位确定精确的位置。

        打开CCL,设置成手动,生成个文件,然后打开HOOK,不选择任何段,对整个文件进行替换,等程序提示全部文件生成完毕后,用卡巴斯基对目标文件夹检测,并将报警的文件删除,最终结果如下:

        -------------定位结果------------

        序号 起始偏移 大小 结束偏移

        B8 B8

        D0 B8

        C C F8

        下面将CCL设置为自动检测,间隔时间为7秒,在输入检测段时将和的数据添加到待检测栏里.

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

        -------------定位结果------------

        序号 起始偏移 大小 结束偏移

        A8

        A9 A D3

        D5 A FF

        A A

        C A

        A

       

        C B1

        还真不少,共有8处。修改哪里呢?我的经验是:尽量修改代码,避免修改字符串和数据,因为修改后者必须将每一处调用它的指令都做改动,且在不确定具体含义的情况下很容易出错,不推荐。

       先看第一处,用IDA对HOOK进行反汇编,然后找到处,也就是内存偏移D(这里可以用我写的小工具:偏移量转换器,输入文件偏移可以自动计算出内存偏移),这里的代码如下:

       CODE:D dd offset off_FB0

       CODE:D dd D0Bh, Fh, 6B6F6Fh

       CODE:DA1 align 4

       很显然,这是一些数据,我们甚至不知道它的意义,要修改真是无从下手。于是看第2处,代码如下:

       ……

       CODE:DAD xor edx, edx

       CODE:DAF mov [ebp+var_], edx

       CODE:DB2 mov [ebp+var_8], edx

       CODE:DB5 mov ebx, eax

       CODE:DB7 xor eax, eax

       CODE:DB9 push ebp

       CODE:DBA push offset loc_F

       CODE:DBF push dword ptr fs:[eax]

       CODE:DC2 mov fs:[eax], esp

       CODE:DC5 xor eax, eax

       CODE:DC7 push ebp

       ……

        看来第二处全部是汇编指令,就修改它了。用什么方法呢?前两期我介绍过“指令顺序变换”和“万能跳转”两种方法,当然,能用第一种时尽量用,这里我们也采用变换指令顺序的方法。注意加黑的指令,我们就改变这两句的顺序。修改文件我还是习惯用OllyDbg,因为可以直接进行指令级的操作,你也可以用二进制编辑软件。

        用OD打开HOOK,OD会提示“打开的是DLL,是否用Loaddll进行加载”,点确定,然后来到E4DA7处。这里又有问题了,为什么刚才用IDA打开时,位置在DA7而现在却变成E4DA7呢?这是因为DLL加载时,加载基址是可变的。给大家讲一个在OD中判断加载基址的方法。单击OD工具栏中的M,会显示出当前进程内存中的所有模块.

        根据名称找到加载我们的DLL的位置,图中可以看到已经被LOADDLL给占据了,因此HOOK只能被发配到D了,相应的,在IDA中的地址需要减去一个差值(-D)才能得到OllyDbg中的地址。

        将黑体的指令进行顺序调换,修改如下:

       E4DB7 push ebp

       E4DB8 C0 xor eax,eax

        然后保存修改,再用卡巴斯基来检测一下修改后的HOOK文件,果然,HOOK已经免杀了,是不是很神奇,仅仅修改了三个字节就搞定了!

        修改GETKEY

        下面该第二个DLL了,过程和修改HOOK的一样,就不详述了,简述一下过程:手动定位的结果如下(生成个文件):

        -------------定位结果------------

        序号 起始偏移 大小 结束偏移

        BC BC

        B5 E

        DE9 AF E

       然后对B5和9DE9两个段进行自动定位,最终结果如下:

        -------------定位结果------------

        序号 起始偏移 大小 结束偏移

       

        A

        A E

        F A B9

        BB A E5

        E6 A

        E A E6A

        共有7处,还挺多的。原理一样,尽量修改汇编指令,避免字符串和数据。这一次运气不错,第段就是汇编指令:

       DA . AD push RC_Data_.DA ; ASCII " <"

       DA . 8D ECFEFFFF lea edx,dword ptr ss:[ebp-]

       DAC . 8B F8 mov eax,dword ptr ss:[ebp-8]

       DAF . E8 FEFFFF call RC_Data_.DAC

       相信修改这几句指令已经难不倒你了,将前三句的顺序调换一下:

       DA AD push RC_Data_.DA ; ASCII " <"

       DA &

       另外,团IDC网上有许多产品团购,便宜有口碑

copyright © 2016 powered by 皮皮网   sitemap