C#隐藏进程

friend555 2009-02-03 04:58:57
我想用c#实现隐藏某一个进程应该怎么实现?
请高手指教
...全文
3834 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
he_chuanfei 2012-06-09
  • 打赏
  • 举报
回复
持续关注中
bdy1234567 2012-01-30
  • 打赏
  • 举报
回复
可以参考下这个:http://wenku.baidu.com/view/03350c0e7cd184254b353527.html
愤怒的可乐 2012-01-21
  • 打赏
  • 举报
回复
混淆 taskmgr
wp494298399 2010-11-14
  • 打赏
  • 举报
回复
学 习。。。
zl59503020 2010-11-05
  • 打赏
  • 举报
回复
。。。。。。。。关注
qiuxue110 2010-10-27
  • 打赏
  • 举报
回复
看看看看那看
luyunpengxin 2010-08-11
  • 打赏
  • 举报
回复
up

顶顶顶
SuperHero乐成 2010-07-05
  • 打赏
  • 举报
回复
接着跟帖,在混淆上面选择svchost还是不好,可能导致系统崩溃,破坏了系统.

混淆别的进程又容易被发现,所以还是请高手指点,给出一个完美的方案来.

顶贴,希望此帖不要沉下去.

等待完美答案中...
SuperHero乐成 2010-07-05
  • 打赏
  • 举报
回复
把应用程序名改成Svchost在360安全软件环境下可能导致XP操作系统崩溃.注意!

我原先用C#编写了一款木马程序,植入Win7系统蛮好,系统会保护我的木马不被杀,运行起来后,系统认定svchost是Windows安全且必备进程,不允许用户手动删除.并且360安全软件也对它施加保护.这点我觉得蛮搞笑.

但是如果运行在XP系统下,和Win7效果大致一样,但是XP不保护它,用户可以手动删除掉.但是在删除的过程中系统会发出警告,360也会发出警告提示用户不要轻易删除系统文件(此时已经把木马当成系统文件了),如果用户强行删除则无碍,如果用户犹豫了选择不删除,接着就导致了XP系统的崩溃,使系统explorer.exe文件遭到破坏,并且无法连接网络等问题.
大光呢 2010-05-17
  • 打赏
  • 举报
回复
up
顶顶顶
fzl2497 2009-05-11
  • 打赏
  • 举报
回复
难道C#就没办法实现进程隐藏了吗?
friend555 2009-02-19
  • 打赏
  • 举报
回复
我现在已经知道了,给大家分享一下,点击程序名右键---属性----将应用程序名改为svchost就ok了
qq283617300 2009-02-19
  • 打赏
  • 举报
回复
我也想知道,只能混淆比较容易的哦!
friend555 2009-02-11
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 lianhui1122 的回复:]
不知道怎么隐藏,但是可以提供一个方法:
把进程名改成 svchost.exe 系统有四五个这样的名字,可以混淆下
[/Quote]
应该怎么改进程名?进程名都是只读的,能改吗?
68435970 2009-02-05
  • 打赏
  • 举报
回复
楼主难道想做病毒?
Mike老羊 2009-02-05
  • 打赏
  • 举报
回复
C# 不好办吧,如果用DELPHI 或VC可以做,DLL注入之类的
friend555 2009-02-05
  • 打赏
  • 举报
回复
感谢各位的回答,我现在对实现方法有了了解,但不知道具体怎么实现,用C#能实现吗?用API钩子勾住Terminate Process应该怎样钩住呢???
Mike老羊 2009-02-05
  • 打赏
  • 举报
回复
http://blog.csdn.net/hack214/archive/2008/04/11/2283599.aspx
--------转别人的
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.Diagnostics;
namespace dllinject
{
public partial class Form1 : Form
{
[DllImport("kernel32.dll")]
public static extern int VirtualAllocEx(IntPtr hwnd, Int32 lpaddress, int size, int type, Int32 tect);
[DllImport("kernel32.dll")]
public static extern Boolean WriteProcessMemory(IntPtr hwnd, int baseaddress, string buffer, int nsize, int filewriten );
[DllImport("kernel32.dll")]
public static extern int GetProcAddress(int hwnd, string lpname);
[DllImport("kernel32.dll")]
public static extern int GetModuleHandleA(string name);
[DllImport("kernel32.dll")]
public static extern IntPtr CreateRemoteThread(IntPtr hwnd, int attrib, int size, int address, int par, int flags, int threadid);
[DllImport("kernel32.dll")]
public static extern Int32 WaitForSingleObject(IntPtr hHandle, UInt32 dwMilliseconds);
[DllImport("kernel32.dll")]
public static extern Boolean VirtualFree(IntPtr lpAddress, Int32 dwSize,Int32 dwFreeType);
Process pname;
UInt32 INFINITE= 0xFFFFFFFF;
Int32 PAGE_EXECUTE_READWRITE = 0x40;
Int32 MEM_COMMIT= 0x1000;
Int32 MEM_RESERVE= 0x2000;
Int32 MEM_RELEASE= 0x8000;
Int32 AllocBaseAddress;
IntPtr hwnd;
string dllname;
Int32 Pid;
Boolean ok;
Int32 loadaddr;
IntPtr ThreadHwnd;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
try
{
if (textBox1.Text == "" || textBox1.Text == null)
{
MessageBox.Show("Pid is null"); return;
}
if (textBox2.Text == "" || textBox2.Text == null)
{
MessageBox.Show("dll name is null"); return;
}
Pid = Int32.Parse(textBox1.Text);
dllname = textBox2.Text;
}
catch(Exception error)
{
MessageBox.Show(error.Message); return;
}
try
{
pname = Process.GetProcessById(Pid);
hwnd = pname.Handle;
}
catch(Exception error)
{ //当标示pid的进程不存在时发生异常;
MessageBox.Show (error.Message); return;
}
AllocBaseAddress= VirtualAllocEx(hwnd, 0, dllname.Length + 1, MEM_COMMIT+ MEM_RESERVE, PAGE_EXECUTE_READWRITE);
if (AllocBaseAddress == 0)
{
MessageBox.Show("virtualallocex fail"); return;
}
ok=WriteProcessMemory(hwnd, AllocBaseAddress, dllname, dllname.Length + 1,0);
if (!ok)
{
MessageBox.Show("writeprocessmemory fail"); return;
}
loadaddr = GetProcAddress(GetModuleHandleA("kernel32.dll"), "LoadLibraryA");
if (loadaddr == 0)
{ //取得LoadLibraryA的地址失败时返回
MessageBox.Show("get loadlibraryA fail"); return;
}
ThreadHwnd=CreateRemoteThread(hwnd, 0, 0, loadaddr, AllocBaseAddress,0, 0);
if (ThreadHwnd ==IntPtr.Zero)
{
MessageBox.Show("createremotethread fail"); return;
}
MessageBox.Show("ok ,you can check now!!!");
WaitForSingleObject(ThreadHwnd, INFINITE);
VirtualFree(hwnd, 0, MEM_RELEASE);
//下面开始枚举模块列表;
ProcessModuleCollection pmodule = pname.Modules;
foreach (ProcessModule processm in pmodule)
{
listBox1.Items.Add(processm.FileName);
}
pname.Dispose();
}

}
}
friend555 2009-02-05
  • 打赏
  • 举报
回复
fuqiang19871117 :从来没想过要做病毒,也没有那能力呵呵
friend555 2009-02-03
  • 打赏
  • 举报
回复
Heatol,Fibona :谢谢两位的回到,现在我想挂钩API,应该怎样用C#实现呢,请指教!谢谢!!
加载更多回复(4)

110,580

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧