别人写过Doggle Moniter,不过显示出来的数据都是加密了的,关键的dll中出数据部份用了变型的Blowfish+标准Base64,这dll还加了VMP的壳,用了Delphi的消息机制来传递数据,应该是使用的madCHook这个库写的,关键dll与侦听显示部份通过窗口消息来传递,dll中取显示进程窗口句柄(窗口名称Doggle Monitor V2.0.9 Standard),然后发送加密后的消息队列内容去显示,,,不过还好,可以用SOD附加的方式调试这个被注入的目标进程被VMP了的侦听dll,变型的Blowfish没能力分析,只能修改了这个Blowfish输出后Base64加密前的部份,没能力脱VMP的壳,于是自己用易语言写个框架,使用的远程线程注入dll后,再修改这个dll里的关键部份(直接NOP),以达到效果,不过我用的普通的远程线程注入dll的方式不好,过不了一些加了壳的狗程序,比如我用Rockey2狗对记事本加狗壳,用我的方式注入后就运行出错,,论坛里的高人们(比如zyhfut大牛)写过的一些在进程创建时修改目标进程的入口去注入dll的方式我看的懂源码,但不会用C++写程序,郁闷的。

下面是主要的侦听dll中的需要修改部份

代码:
598620B5    47              inc     edi
598620B6    33F6            xor     esi, esi                         ; 下面是一个循环生成base64加密前的过程
598620B8    8D4D F0         lea     ecx, dword ptr [ebp-10]
598620BB    8D53 54         lea     edx, dword ptr [ebx+54]
598620BE    8BC3            mov     eax, ebx
598620C0    E8 4FEEFFFF     call    59860F14
598620C5    8B45 FC         mov     eax, dword ptr [ebp-4]
598620C8    8A0430          mov     al, byte ptr [eax+esi]
598620CB    3245 F0         xor     al, byte ptr [ebp-10]
598620CE    8B55 F8         mov     edx, dword ptr [ebp-8]
598620D1    880432          mov     byte ptr [edx+esi], al           ; 这里NOP了就直接输出Base64后的值,只要解码base64就出来明文的了,嘿。
598620D4    8D53 54         lea     edx, dword ptr [ebx+54]
598620D7    8D43 55         lea     eax, dword ptr [ebx+55]
598620DA    B9 07000000     mov     ecx, 7
598620DF    E8 D407FAFF     call    598028B8
598620E4    8B45 F8         mov     eax, dword ptr [ebp-8]
598620E7    8A0430          mov     al, byte ptr [eax+esi]
598620EA    8843 5B         mov     byte ptr [ebx+5B], al
598620ED    46              inc     esi
598620EE    4F              dec     edi
598620EF  ^ 75 C7           jnz     short 598620B8
598620F1    5F              pop     edi
598620F2    5E              pop     esi
598620F3    5B              pop     ebx
598620F4    8BE5            mov     esp, ebp
598620F6    5D              pop     ebp
598620F7    C2 0400         retn    4
发上一个原型图片和我写的图片






附件中是我写的用普通远程线程注入方式的易语言源代码和编译好的,以及调试测试时需要用到的程序和说明文档,希望有大牛弄成更好的注入方式并发到论坛上来,抛砖引玉了。

我的易代码的方式是新建进程并暂停,然后用普通的远程线程注入方式注入dll到这个暂停的进程中,然后修改dll中的内存值,再让新进程继续运行,这样目标进程在没有真正运行时就注入了dll并修改了加密,以达到破坏blowfish加密的目的,base64解码后直接还原成明码了,,我的问题就在于这个普通的远程注入dll的方式通用性不好,对于有壳的或是有些小九九的目标不灵。

Blowfish的密钥是
代码:
00BCA95C  F2 37 94 A5 69 4C 2D D0 0C CC 06 26 49 0D 28 9C  ?iL-??&I.(
00BCA96C  1F 4B 4C C5 00 00 00 00 00 00 00 00 00 00 00 00  KL?...........
2010.2.10更新: 在KB SMC的dll基础上,写了网络版本的,主程序UPX加壳,方便某部份人修改,apihook.dll为原始的VMP的壳所以会误报,服务器端使用端口8899,不发源码,请放心使用。

附上一个简单的说明,一般不用看。

功能:侦听一些国产加密狗的通讯(使用加密狗加密的软件与加密狗通讯时的数据),为复制加密狗或破解软件提供参考数据。

使用前最好先关闭你的杀毒软件的实时防护,因为通常杀软的实时防护会把侦听工具要用到的一些如dll注入阿的认为是病毒行为。。当然,本加密狗侦听工具不是病毒也不是木马,只是加了壳或者说使用的dll注入以及apihook的方式会被防毒软件误报。

支持的加密狗类型:Rockey2 Rockey4ND Rockey6 Sense3 Sense4 域天简单型 域天密码型 SoftDog(软件狗) MicroDog(微狗) 坚石ET99 域天易用/专业型 域天新简单型(带密码型) 安全芯(Schip) 龙脉Nox/Nox2 龙脉DAM2+ 

使用方法:1、自己电脑上安装有要加密狗的软件,插着加密狗:关闭与要用到狗的这个目标软件的相关的进程(如果有服务则停服务),运行侦听工具网络版服务器端,接着运行侦听工具客户端,输入IP地址127.0.0.1(因为都在一台电脑上用),点连接,连上后,点“启动程序”,在出来的界面上,选择用到加密狗的那个程序(在监控文件的右边有个打开文件那样的按钮上点),然后点击“开始监控”按钮,这时你的需要加密狗的那个程序会被运行起来,看看你的狗侦听工具的服务器端,是不是有通讯数据被侦听到(在接收信息那有一些信息显示出来)。OK,这是侦听单一程序的用法,,如果你的要用到狗的程序是以服务方式启动的,这时,你就得在“选择监控类型”那里选中“全部”,然后去启动你的软件的服务程序。。选择了全部,相当于使用了全局的注入,对每个新创建的进程就会注入apihook.dll进去以达到侦听程序与狗通讯。

2、别人电脑上安装着要加密狗的软件,插着加密狗:那自己电脑上运行狗数据侦听工具网络版服务器端,别人电脑上去运行网络版客户端,让别人先连接上你的服务器端,然后就可以向上面1中那样的操作方法操作了。服务器端使用使用端口8899,你如果在路由器下面或安装有网络防火墙,需要在路由器上设置8899这个端口的端口映射,如TP-LINK的路由器把这端口映射叫做虚拟服务器,如安装有软件防火墙,则设置一个让8899端口可以通行的规则或允许访问。
上传的附件 加密狗听诊器.rar
加密狗听诊器_网络版.rar