有没有人可以告诉我一下!
谢谢!
有这方面的源代码给我一份!不胜感激!

解决方案 »

  1.   

    下面是我的一个窃听功能木马的一个类,对你应该有用#include "stdafx.h"
    #include <windows.h>
    #include <mmsystem.h>
    #include <dsound.h>
    #include <mmreg.h>
    #include <msacm.h>class ACM 
    {
    public:
    HACMSTREAM       has;
    ACMSTREAMHEADER  ahc;
    struct MPEG_WFX{
    WAVEFORMATEX  wfx;
    char          data [12];
    } AcmSrcWfx,AcmDstWfx;
    ACM(){};
    ~ACM(){};
    BOOL InitAcmStream (void)
    {
    SetPriorityClass(GetCurrentProcess(), HIGH_PRIORITY_CLASS);
    SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_HIGHEST); if ( acmStreamOpen (&has, NULL, &AcmSrcWfx.wfx, &AcmDstWfx.wfx, 0, 0, 0, 0) != 0 ){
    AfxMessageBox("acmStreamOpen False !");
    acmStreamClose (has, 0);
    has = NULL;
    return FALSE;
    }
    if ( has == NULL )
    AfxMessageBox("acmStreamOpen [LPHACMSTREAM] False !");
    return FALSE;
    };


    void CloseAcmStream (void)
    {
    if ( has != NULL )
    acmStreamClose (has, 0);
    has = NULL;
    };

    };
    class ACM_EN : public ACM
    {
    public:
    void Init(DWORD Freq,DWORD Band = 0 ){
    memset(&AcmSrcWfx, 0, sizeof(AcmSrcWfx)); 
    AcmSrcWfx.wfx.wFormatTag = WAVE_FORMAT_PCM;
    AcmSrcWfx.wfx.nChannels = 1;
    AcmSrcWfx.wfx.nSamplesPerSec = Freq;
    AcmSrcWfx.wfx.nAvgBytesPerSec = Freq * __UAIIA_BITS__ / 8;
    AcmSrcWfx.wfx.nBlockAlign = __UAIIA_BITS__ / 8;
    AcmSrcWfx.wfx.wBitsPerSample = __UAIIA_BITS__;
    AcmSrcWfx.wfx.cbSize = 0; memset(&AcmDstWfx, 0, sizeof(AcmDstWfx));  
    AcmDstWfx.wfx.wFormatTag = 85;
    AcmDstWfx.wfx.nChannels = 1;
    AcmDstWfx.wfx.nSamplesPerSec = Freq;
    AcmDstWfx.wfx.nAvgBytesPerSec = (Band==0) ? 1000 : ((Band==1) ? 2000 : 2500);
    AcmDstWfx.wfx.nBlockAlign = 1;
    AcmDstWfx.wfx.wBitsPerSample = 0;
    AcmDstWfx.wfx.cbSize = 12;
    AcmDstWfx.data[0] = 1;
    AcmDstWfx.data[2] = 2;
    AcmDstWfx.data[10] = 0x71;
    AcmDstWfx.data[11] = 5;
    switch ( Band ){
    case 0:
    AcmDstWfx.data[6] = 0x34;
    AcmDstWfx.data[8] = 1;
    break;
    case 1:
    AcmDstWfx.data[6] = 0x68;
    AcmDstWfx.data[8] = 1;
    break;
    case 2:
    AcmDstWfx.data[6] = 4;
    AcmDstWfx.data[7] = 1;
    AcmDstWfx.data[8] = 2;
    break;
    }
    InitAcmStream();
    };
    ACM_EN(){ has = NULL; };
    ~ACM_EN(){ CloseAcmStream(); };
    BOOL Compress(BYTE *SrcBuff,DWORD AcmSrcSize,BYTE *DstBuff,DWORD &AcmDstSize)
    {
    BOOL r;
    memset (&ahc, 0, sizeof (ACMSTREAMHEADER));
    ahc.cbStruct = sizeof (ACMSTREAMHEADER);
    ahc.pbSrc = SrcBuff;
    ahc.cbSrcLength = AcmSrcSize;
    ahc.pbDst = DstBuff;
    ahc.cbDstLength = AcmDstSize;
    if ( acmStreamPrepareHeader (has, &ahc, 0) != 0 )
    return FALSE;
    if ( ! acmStreamConvert (has, &ahc, ACM_STREAMCONVERTF_START|ACM_STREAMCONVERTF_BLOCKALIGN))
    r = TRUE;
    else
    r = FALSE;
    ahc.cbSrcLength = AcmSrcSize;
    ahc.cbDstLength = AcmDstSize;
    acmStreamUnprepareHeader (has, &ahc, 0);
    AcmDstSize = ahc.cbDstLengthUsed;
    return r;
    };
    };
    class ACM_DE : public ACM
    {
    public:
    void Init(DWORD Freq,DWORD Band = 0 ){
    memset(&AcmSrcWfx, 0, sizeof(AcmSrcWfx));  
    AcmSrcWfx.wfx.wFormatTag = 85;
    AcmSrcWfx.wfx.nChannels = 1;
    AcmSrcWfx.wfx.nSamplesPerSec = Freq;
    AcmSrcWfx.wfx.nAvgBytesPerSec = (Band==0) ? 1000 : ((Band==1) ? 2000 : 2500);
    AcmSrcWfx.wfx.nBlockAlign = 1;
    AcmSrcWfx.wfx.wBitsPerSample = 0;
    AcmSrcWfx.wfx.cbSize = 12; AcmSrcWfx.data[0] = 1;
    AcmSrcWfx.data[2] = 2;
    AcmSrcWfx.data[10] = 0x71;
    AcmSrcWfx.data[11] = 5;
    switch ( Band ){
    case 0:
    AcmSrcWfx.data[6] = 0x34;
    AcmSrcWfx.data[8] = 1;
    break;
    case 1:
    AcmSrcWfx.data[6] = 0x68;
    AcmSrcWfx.data[8] = 1;
    break;
    case 2:
    AcmSrcWfx.data[6] = 4;
    AcmSrcWfx.data[7] = 1;
    AcmSrcWfx.data[8] = 2;
    break;
    }
    memset(&AcmDstWfx, 0, sizeof(AcmDstWfx));  
    AcmDstWfx.wfx.wFormatTag = WAVE_FORMAT_PCM;
    AcmDstWfx.wfx.nChannels = 1;
    AcmDstWfx.wfx.nSamplesPerSec = Freq;
    AcmDstWfx.wfx.nAvgBytesPerSec = Freq * __UAIIA_BITS__ / 8;
    AcmDstWfx.wfx.nBlockAlign = __UAIIA_BITS__ / 8;
    AcmDstWfx.wfx.wBitsPerSample = __UAIIA_BITS__;
    AcmDstWfx.wfx.cbSize = 0; InitAcmStream();
    };
    ACM_DE(){ has = NULL; };
    ~ACM_DE(){  CloseAcmStream(); };
    BOOL DeCompress(BYTE *SrcBuff,DWORD AcmSrcSize,BYTE *DstBuff,DWORD &AcmDstSize)
    {
    BOOL r;
    memset (&ahc, 0, sizeof (ACMSTREAMHEADER));
    ahc.cbStruct = sizeof (ACMSTREAMHEADER);
    ahc.pbSrc = SrcBuff;
    ahc.cbSrcLength = AcmSrcSize;
    ahc.pbDst = DstBuff;
    ahc.cbDstLength = AcmDstSize;
    if ( acmStreamPrepareHeader (has, &ahc, 0) != 0 )
    return FALSE;
    if ( !acmStreamConvert(has, &ahc, ACM_STREAMCONVERTF_BLOCKALIGN) )
    r = TRUE;
    else
    r = FALSE;
    ahc.cbSrcLength = AcmSrcSize;
    ahc.cbDstLength = AcmDstSize;
    acmStreamUnprepareHeader (has, &ahc, 0);
    AcmDstSize = ahc.cbDstLengthUsed;
    return r;
    };
    };