能力值:
( LV9,RANK:610 )
|
-
-
2 楼
网上好多资料的~
|
能力值:
( LV9,RANK:380 )
|
-
-
3 楼
自删除一般都不是严格意义上的,都是借助了bat的力量
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
都不能用
那些资料
如果在调用过程中删除自己会报系统错误
|
能力值:
( LV3,RANK:20 )
|
-
-
5 楼
SHELLEXECUTEINFO sei;
TCHAR szModule [MAX_PATH],szComspec[MAX_PATH],szParams [MAX_PATH];
//获取文件路径名
if((GetModuleFileName(0,szModule,MAX_PATH)!=0) &&
(GetShortPathName(szModule,szModule,MAX_PATH)!=0) &&
(GetEnvironmentVariable("COMSPEC",szComspec,MAX_PATH)!=0))
{ //设置命令行参数。
lstrcpy(szParams,"/c del ");
lstrcat(szParams, szModule);
lstrcat(szParams, " > nul");
//初始化SHELLEXECUTEINFO结构成员
//设置类型大小。
//sei.cbSize = sizeof(sei);
sei.cbSize = sizeof(sei);
//命令窗口进程句柄,ShellExecuteEx函数执行时设置。
sei.hwnd = 0;
//执行动作为“打开执行”。
//sei.lpVerb = "Open";
sei.lpVerb = "Open";
sei.lpFile = szComspec; //执行程序文件全路径名称。
sei.lpParameters = szParams; //执行参数。
sei.lpDirectory = 0;
//显示方式,此处使用隐藏方式阻止出现命令窗口界面。
sei.nShow = SW_HIDE;
//设置为SellExecuteEx函数结束后进程退出。
sei.fMask = SEE_MASK_NOCLOSEPROCESS;
//创建执行命令窗口进程。
if(ShellExecuteEx(&sei))
{ //设置命令行进程的执行级别为空闲执行,这使本程序有足够的时间从内存中退出。
SetPriorityClass(sei.hProcess,IDLE_PRIORITY_CLASS);
//设置本程序进程的执行级别为实时执行,这本程序马上获取CPU执行权,快速退出。
SetPriorityClass(GetCurrentProcess(),REALTIME_PRIORITY_CLASS);
SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_TIME_CRITICAL);
//通知Windows资源浏览器,本程序文件已经被删除。
SHChangeNotify(SHCNE_DELETE,SHCNF_PATH,szModule,0);
//执行退出程序
EndDialog(0);
}
}
|
能力值:
( LV3,RANK:20 )
|
-
-
6 楼
拦了一个病毒的,用BAT。
//del XX 删除程序。
del %0 //删除BAT自身。
|
能力值:
( LV9,RANK:160 )
|
-
-
7 楼
自删除的方法有好几种,一种是借助bat,还有创建远程线程也是一种,不过更经典的一种删除是借助rundll32来实现的,做一个dll,rundll32里面调用导出函数删除其他需要删除的文件,之后dll自删除
——asm{
lea eax,DllPath;自身dll路径
push 0
push 0
push eax
push ExitProcess
push g_Module
push DeleteFile
push FreeLibrary
ret
}
以上代码在vc6下使用
|
能力值:
( LV3,RANK:20 )
|
-
-
8 楼
学习汇编时写的。复制的。。若是自删除,看你的程序是不是死循环了,若不是可以用bat删
或者可以判断你的程序是否在某一个路径下,比如若是在system32这里的话就死循环,若不是的话你就把他复到这里,再bat删
;复制自身到system32 _CopyToSystem32 proc uses esi invoke GetModuleFileName,hInstance,addr szExeBuffer,sizeof szExeBuffer ;invoke MessageBox,NULL,addr szExeBuffer,CTXT("OK"),0 lea esi,szExeBuffer ;或者mov esi,offset szExeBuffer invoke lstrlen,addr szExeBuffer ;计算全文件名的长度 add esi,eax ;这时这里esi已指向最后一个字符。是空字符。所以要减一,这样才是字符e dec esi
;invoke MessageBox,NULL,esi,CTXT("OK"),0 .while TRUE .break .if BYTE ptr [esi]=='\' ;这里若是esi里的内容是\的话则退出 dec esi .endw invoke lstrcpy,addr szExeNameHua,esi ;带\的文件名
inc esi ;上面的循环中,不等\时已减了1所以退出之后这esi指向的是带\的文件名 ;invoke MessageBox,NULL,esi,CTXT("OK"),0 ;这里esi指向的已是文件名的开始 invoke lstrcpy,addr szExeName,esi ;不带\的文件名
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; invoke GetCurrentDirectory,MAX_PATH,addr szExeBuffer ;invoke MessageBox,NULL,addr szExeBuffer,CTXT("OK"),0 invoke lstrcat,addr szExeBuffer,addr szExeNameHua
invoke GetSystemDirectory,addr szSystemPath,sizeof szSystemPath invoke lstrcat,addr szSystemPath,addr szExeNameHua ;系统路径加上程序名的全路径了 ;invoke MessageBox,NULL,addr szSystemPath,CTXT("OK"),0
invoke CopyFile,addr szExeBuffer,addr szSystemPath,0 ;复制文件到system32文件夹中
invoke SetFileAttributes,addr szSystemPath,FILE_ATTRIBUTE_HIDDEN or FILE_ATTRIBUTE_SYSTEM ;设为隐藏属性
call _DoReg
ret _CopyToSystem32 endp
|
能力值:
( LV4,RANK:50 )
|
-
-
9 楼
自拷贝 自删除
Movefile?
|
能力值:
( LV9,RANK:320 )
|
-
-
10 楼
自删除的话,,可以看看我写的这个,,呼呼,,拷贝的话,,其实moveFileEx就可以搞定了,
其实也没有必要拷贝,我觉得。,
http://hi.baidu.com/charme000/blog/item/9d11a506a65e38c77b89478e.html
|