MyException - 我的异常网
当前位置:我的异常网» C++ Builder » 程序删除自己, 老妖网站上的方法如何不行>

程序删除自己, 老妖网站上的方法如何不行>(2)

www.MyException.Cn  网友分享于:2013-03-07  浏览:29次

    }
    #pragma       option       pop
    //return   0;
}
//---------------------------------------


------解决方案--------------------
一个批处理文件可以实现自我删除,在退出程序后用ShellExecute调用,批处理可以是程序产生的临时文件,这是我屡试不爽的好方法。

:try
del "C:\Uninstall.exe "
if exist "C:\Uninstall.exe " goto try
del "C:\Windows\Temp\2CA6CQCG.bat "

------解决方案--------------------
呵呵,看不明白
标 题: 【分享】发一块代码段(删除正在运行的程序文件)
作 者: 老Y
时 间: 2007-05-25,16:59
链 接: http://bbs.pediy.com/showthread.php?t=45233

先声明一下,本文的代码其实也是从别人的工具里A出来的(A=逆向+还原),所以也不敢称是原创,有同好的朋友自然知道是哪个工具里的:),另外,由于本人不太会写文章,看不明白的地方还请大家多多谅解。

回到正题,通过分析得知,删除正在运行的程序文件的关键在于hook MmFlushImageSection这个函数,该函数原型BOOLEAN MmFlushImageSection(
PSECTION_OBJECT_POINTERS SectionObjectPointer,
MMFLUSH_TYPE FlushType),其流程大概如下:
1.打开要删除的文件,如:调用IoCreateFile
2.把要删除的文件属性设为Normal
3.Hook ntfs和fatfast内的引入函数MmFlushImageSection
4.发送删除IRP

大概代码如下(比较简单的一个Demo):

void ForceDeleteFile(PVOID ThreadContext)
{
int krResult = FALSE;
int krRetCode = FALSE;
//NTSTATUS rc;
HANDLE hFile = NULL, hFileSystem = NULL, SectionHandle = NULL;
CHAR *FileName = (CHAR*)ThreadContext;
CHAR szFileSystem[MAX_PATH_LEN];
PUCHAR pMap = NULL;
ULONG uMapSize = 0;
PVOID OrgFunc = NULL, OrgFunc_Ptr = NULL;
KFile ntfs, fastfat, del;


//UNICODE_STRING usFileName;
//PFILE_OBJECT pFileObject = NULL;
//OBJECT_ATTRIBUTES ob;
DEBUG_BREAK;
krRetCode = del.OpenFile(FileName, GENERIC_READ);
PROCESS_ERROR(krRetCode);
dprintf( "Open %s successful.\n ", FileName);
krResult = del.SetFileAttributeToNormal();
PROCESS_ERROR(krResult);
strcpy(szFileSystem, DRIVERS_PATH);
strcat(szFileSystem, "ntfs.sys ");
krRetCode = ntfs.OpenFile(szFileSystem, GENERIC_READ);
PROCESS_ERROR(krRetCode);
g_Deleted = TRUE;
krRetCode = ntfs.MapFile(&pMap, &uMapSize);
PROCESS_ERROR(krRetCode);

krRetCode = HookIAT(
"MmFlushImageSection ",
"ntfs.sys ",
pMap,
uMapSize,
(PVOID)MmFlushImageSection_New,
(PVOID*)&_MmFlushImageSection,
&OrgFunc_Ptr
);
PROCESS_ERROR(krRetCode);

krRetCode = ntfs.UnMapFile();
PROCESS_ERROR(krRetCode);

strcpy(szFileSystem, DRIVERS_PATH);
strcat(szFileSystem, "fastfat.sys ");
krRetCode = fastfat.OpenFile(szFileSystem, GENERIC_READ);
PROCESS_ERROR(hFileSystem);

krRetCode = fastfat.MapFile( &pMap, &uMapSize);
PROCESS_ERROR(krRetCode);

krRetCode = HookIAT(
"MmFlushImageSection ",
"fastfat.sys ",
pMap,
uMapSize,
(PVOID)MmFlushImageSection_New,
(PVOID*)&_MmFlushImageSection,
&OrgFunc_Ptr
);
PROCESS_ERROR(krRetCode);

krRetCode = ntfs.UnMapFile();
PROCESS_ERROR(krRetCode);


krResult = Rd_DeleteFile(del.GetFileHandle());
PROCESS_ERROR(krResult);

krResult = TRUE;
Exit0:
g_Deleted = FALSE;
if (OrgFunc && OrgFunc_Ptr)
{
UnHookIAT(_MmFlushImageSection, OrgFunc_Ptr);
}
ntfs.Close();
fastfat.Close();
del.Close();
return;
}

文章评论

老程序员的下场
老程序员的下场
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
Java程序员必看电影
Java程序员必看电影
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
编程语言是女人
编程语言是女人
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
我的丈夫是个程序员
我的丈夫是个程序员
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
每天工作4小时的程序员
每天工作4小时的程序员
那些争议最大的编程观点
那些争议最大的编程观点
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
程序员的鄙视链
程序员的鄙视链
旅行,写作,编程
旅行,写作,编程
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
一个程序员的时间管理
一个程序员的时间管理
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
程序员和编码员之间的区别
程序员和编码员之间的区别
为什么程序员都是夜猫子
为什么程序员都是夜猫子
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
程序员应该关注的一些事儿
程序员应该关注的一些事儿
 程序员的样子
程序员的样子
10个调试和排错的小建议
10个调试和排错的小建议
中美印日四国程序员比较
中美印日四国程序员比较
程序员都该阅读的书
程序员都该阅读的书
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
鲜为人知的编程真相
鲜为人知的编程真相
如何成为一名黑客
如何成为一名黑客
程序员必看的十大电影
程序员必看的十大电影
漫画:程序员的工作
漫画:程序员的工作
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
总结2014中国互联网十大段子
总结2014中国互联网十大段子
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有