程序的自删除早已经不是什么新鲜的话题了,对于各位大虾来说是更是比较容易的事情,但想想自己刚学时遇到的种种错误,我觉得有必要把自己所知道的各种 *** 总结一下,希望对新手的学习能够有所帮助。
程序的自删除广泛用于反安装程序最后的自删除(环保呀!),当然更多见于木马、病毒首次安装的自动销毁^*^,至于用于何种用途就看你自己啦!
经典自删除
说到程序的自删除就不能不说由 Gary Nebbett 等大虾所写的代码,经典之作呀!代码采用C语言内嵌汇编a *** :
在Win9x下只要先对exe本身句柄执行FreeLibrary操作即可解除exe IMAGE在内存的映射,随后就可以通过调用DeleteFile来删除自身文件。
Win9x下的代码如下[selfkill-9x.c]:
#include "windows.h"
int main(int argc, char *argv[])
{
char buf[MAX_PATH];
HMODULE module;
module = GetModuleHandle(0);
GetModuleFileName(module, buf, MAX_PATH);
__a ***
{
lea eax, buf
push 0
push 0
push eax
push ExitProcess
push module
push DeleteFile
push FreeLibrary
ret
}
return 0;
}
在WinNT/2K下则需要先调用CloseHandle关闭exe文件本身对应的IMAGE的句柄HANDLE[硬编码为4],然后调用UnmapViewOfFile解除了另外一个对应IMAGE的HANDLE,并且解除了程序本身在内存的映射对象,最后就可以用DeleteFile删除自身啦!(注意:本 *** 不适用于WinXP!)
WinNT/2K下的代码如下[selfkill-nt.c]:
#include "windows.h"
int main(int argc, char *argv[])
{
char buf[MAX_PATH];
HMODULE module;
module = GetModuleHandle(0);
GetModuleFileName(module, buf, MAX_PATH);
CloseHandle((HANDLE)4);
__a ***
{
lea eax, buf
push 0
push 0
push eax
push ExitProcess
push module
push DeleteFile
push UnmapViewOfFile
ret
}
return 0;
}
把上面用于Win9x及WinNT/2K下的代码综合起来,即把两种平台用到的API代码全部执行一遍,虽然在一种平台上可能会有几个API运行失败,有几个API会运行成功,但最后的结果exe程序文件在退出前就删除了自身!
Win9x和WinNT/2K下的代码如下[selfkill-9x+nt.c]:
#include "windows.h"
int main(int argc, char *argv[])
{
char buf[MAX_PATH];
HMODULE module;
module = GetModuleHandle(0);
GetModuleFileName(module, buf, MAX_PATH);
CloseHandle((HANDLE)4);
__a ***
{
lea eax, buf
push 0
push 0
push eax
push ExitProcess
push module
push DeleteFile
push module
push UnmapViewOfFile
push FreeLibrary
ret
}
return 0;
}
因为我自己在学习Win32下的汇编[MA *** 32],所以重新用汇编写了一遍,但结果却发现每次都执行失败,显示如图一的错误,
=========== 在此插入图一 ==============
通过反汇编比较发现原来由于MA *** 32编译器对API调用的编码和C编译器的不同,导致使用FreeLibrary或UnmapViewOfFile解除程序在内存的映射后,调用DeleteFile时又引用IMAGE映射地址内的代码[JMP DeleteFile],导致读内存执行错误。
错误分析
普通程序进行API调用时,编译器会将一个API调用语句编译为几个参数压栈指令后跟一条间接调用语句(这是指Microsoft编译器,Borland编译器使用JMP DWORD PTR [XXXXXXXXh])形式如下:
许多加盟商在选择加盟项目标时候,城市首先思量一下,这个加盟项目是否可以或许乐成的教育本身赚到钱。固然说米郎家砂锅串串加盟项目如今在市场上的成长长短常不错的,可是各人也都对米郎家砂锅串串加盟项目发生了迷...
每日好文 黑客如何攻击主机 黑客自学教程 入门教程(黑客入门新手教程视频) 花钱雇佣黑客怎么判刑 黑客能黑入你手机摄像头吗(手机摄像头能换吗) 平板被黑客入侵了怎么办 慈善家帮助赌徒重返正常生活(慈...
拼多多岁创立才两年,但其增长速度十分惊人,2018年开年其GMV就已到达匪夷所思的400亿。那么拼多多的客户群为什么能增长的那么快? 两年零三个月拿下电商老三的位置,最近再获腾讯领投的30亿美元,拼多...
易名中国(eName.cn)10月19日讯,据了解,Google宣布关掉在我国的音乐搜索服务项目,代表着谷歌中国音乐搜索告一段落在华的四年经营史。 现阶段访问谷歌歌曲,发觉谷歌音乐站内搜索早...
测试你在古代的名字(超好听呢) 很多人都会幻想如果自己出生在古代会怎么样,想要出生在古代,首先要有一个古代的百思特网名字,想知道你在古代会是什么名字吗?一起来看看哦! 第百思特网一个字:你的出生月...
一、简介 当您出门在外时可将呼入您座机的电话转移到自己的手机或别的座机上确保电话不漏接。 二、设置 申请:*57*TN#;取消:#57#。 (TN代表您所要设定的电话号码或手机) 经本人测试电信...