中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 劫持被编译成exe文件的批处理源码
作者:
标题: 劫持被编译成exe文件的批处理源码 上一主题 | 下一主题
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

2009-10-7 13:38
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
defanive
初级用户





积分 111
发帖 62
注册 2007-12-31
状态 离线
『第 2 楼』:  

使用VB写这个程序不更简单?已经有人写过了。。。
If Trim(Command) <> "" Then
MsgBox Command
Else
Exit Sub
End If

2009-10-7 14:27
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: