zcnvnv
初级用户
积分 114
发帖 36
注册 2007-12-22
状态 离线
|
『楼 主』:
劫持被编译成exe文件的批处理源码
昨天偶然想到的,在我的bat母校分享给大家,如果有不对的地方可以来我网志留言.
本文来自:http://suprole.cn/display_article.asp?type=Article&id=69
如果你有一个批处理程序,想要得到它的源码,但作者将其编译为exe文件,怎么办?
这个小东西就是专门为此打造的了.
用法:
1.打开X:\WINDOWS\system32,将cmd.exe备份到其他地方,这里值得注意的是,cmd.exe备份的时候最好随便重命名一下,不然有可能不起作用.
2.把这个小东西改名为cmd.exe,放到X:\WINDOWS\system32,说白了就是把这个程序替换掉cmd.exe.
3.运行被编译成exe文件的批处理程序.
4.然后在批处理程序所在的目录里会出现一个"asdf.txt",打开它.
5.如果asdf.txt的内容不是你想要的源码,而是像"/c C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\****.bat"这样的,C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\****.bat就是这个批处理的源码文件了(有可能是隐藏文件)
7.弄完后把备份的cmd.exe恢复回去.
原理:
批处理被编译成exe,最终还是要调用cmd.exe,把源码作为参数传递给它来运行,或者把源码输出到文件,然后"/c 文件名"来运行,这个小工具就是把它接收到的参数告诉你,源码自然就呈现在你眼前了.
本程序源码(C\C++):
#include <windows.h>
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
HANDLE hFile;
DWORD dwSize;
hFile=CreateFile("asdf.txt",GENERIC_WRITE,0,NULL,CREATE_NEW,0,NULL);
WriteFile(hFile,lpCmdLine,strlen(lpCmdLine),&dwSize,NULL);
CloseHandle(hFile);
return 0;
}
工具下载:http://SupRole.cn/Soft/asdf.rar
|
|