C++ 怎样打开一个.exe的程序
答案:5 悬赏:0 手机版
解决时间 2021-02-13 15:33
- 提问者网友:雨不眠的下
- 2021-02-13 07:33
下载了一个视频点播软件想做毕业设计,怎么样用C++ 打开程序修改成自己的呢?
最佳答案
- 五星知识达人网友:狂恋
- 2021-02-13 08:33
这涉及到反编译,基本不可能获得源码的,同学你可以看一些开源的软件借鉴借鉴。
全部回答
- 1楼网友:过活
- 2021-02-13 12:34
这哪行。。。程序源代码哪能给你看得到,那岂不是想盗版就盗版了
- 2楼网友:由着我着迷
- 2021-02-13 11:24
晕到 老师没教吗 用C++打开 据我个人所学 是没办法打的 如果会汇编 可以用汇编修改一下 因为.exe文件都是机器码了 C++是没法直接编译机器码的 用汇编到方便点
- 3楼网友:山有枢
- 2021-02-13 11:19
这不是调用了,这是释放。
这是一种初级的黑客手法了。
多数情况下这样干没什么意义。
对于懂电脑的朋友,或杀毒软件能很容易的把你放出的恶意代码给抓住。
如果用来黑小菜鸟,只需要把原.exe文件的扩展名改为.dat然后用另外一个程序调用它就可以起动了。
此外,你非要“把外部exe置入c++内部,写到指定目录,并且运行”,给你的思路是,做成资源文件打包入你的程序。你可以去看资源文件的使用。
vc、c++builder下,以及不同版本下的具体操作是不同的。此外,对编程来说,如果你真的想学会,一般是别人指点,自个实践。否则就算给你一个成例,你也很难搞清是怎么回事的。
下面是c++builder下的一个实例,希望你能看懂
****************************************************************
最近在研究bcb中资源文件的嵌入,找到一些资料,整理了一下,写下来供参考。
资源文件是一个以.rc结尾的文本文件,rc是资源脚本(resource script)的意思,它的格式很简单,每行一个资源,按如下格式定义:
资源标识符 资源类型 资源的路径
rc文件用来描述各种系统资源,包括:
accelerators 菜单快捷键
bitmap 位图
cursor 光标
dialog 对话框模板
dialogex 对话框模板(扩展的)
font 字体
icon 图标
menu 菜单
menuex 菜单(扩展的)
messagetable 消息表
popup 弹出式菜单
rcdata 二进制数据
stringtable 字符串表
versioninfo 版本信息
另外可以按如下定义自定义数据格式:
custom 自定义数据
例子:以下的src1.rc文件定义了一个声音资源,两个光标资源,三个图标资源和一个exe文件资源。
src1.rc:
s1 wav wav1.wav
c1 cursor cursor1.cur
c2 cursor cursor2.cur
i1 icon icone1.ico
i2 icon icone2.ico
i3 icon icone3.ico
unzip exefile pkunzip.exe
——《重点》——
可以将写好的rc文件加到project(项目)中。也可以手工将其编译为供程序直接使用的二进制资源文件(.res文件)加到project(项目)中。在bcb中,可以使用命令行:brcc32 src1.rc src1.res进行编译。
■能够利用windows api函数直接访问的资源有:
图标 loadicon()
光标 loadcursor()
加速表 loadaccelerators()
位图 loadbitmap()
菜单 loadmenu()
字符串 loadstring()
前五个api函数使用方法都一样,带两个参数。
第一个参数指明资源的存放地,第二个参数为rc文件中资源的标识。
字符串loadstring除这两个参数外,还有两个参数,指明字符串缓冲区的地址和大小。
下面按照使用的简繁程度,依次说明各类资源的使用方法。需要说明的是,下面讲述的使用方法,在别的编译环境下(bc, vc等)也是一样的。
1:建立一个新的项目
启动bcb,选file- >new- >application 建立一个新的项目。
在project- >add to project中,加入写好的src1.rc文件。当然,那些声音、光标、图标文件都应该存在。
这时,我们有了一个空的窗体(form)。
下面的一小段程序示范了图标和光标的使用。
在form上放置一个按纽,在其onclick事件中加入以下代码:
void __fastcall tform1::button1click(tobject *sender)
{
//将光标形状改为自己定义的:
screen- >cursors[crdefault] = loadcursor( hinstance, "c1");
//将图标改为自己定义的:
icon = new ticon() ;
icon- >handle = loadicon(hinstance,"i1");
application- >icon = icon ;
}
其中的hinstance指示资源所在地为执行文件。编译执行后,点击该按纽,光标和图标都会换成新的。
对于声音、动画等文件,可以使用windows api函数播放。但是不象上面几种资源,需要遵循一定的步骤。如下所示,依次调用findresource, loadresource, lockresource函数,来播放一个wav声音文件。
(当然,独立的声音文件可以在运行时直接播放。我们这里讨论的是将wav文件编译进exe文件的情况)
在form上放置第二个按纽,在其onclick事件中加入以下代码:
void __fastcall tform1::button2click(tobject *sender)
{
//定义资源块
char *wav_handle ;
//装入wav文件
hrsrc h = findresource(hinstance,"s1","wav");
hglobal h1 = loadresource(hinstance, h);
wav_handle = (char *)lockresource(h1);
//播放wav文件。由于wav文件装载在内存中,
sndplaysound函数要用snd_memory参数
sndplaysound(wav_handle, snd_memory | snd_sync);
}
编译执行后,点击该按纽,会播放一次声音。
对于动画等文件,使用方式类似wav文件。(bcb提供了一个tanimate控件,可以播放无声的avi文件)
■不能直接通过windows api使用的资源
此种资源不能够由windows api直接访问和执行。但是,我们可以用一种变通的方法来使用它。
——《重点》——
下面示范如何使用pkunzip.exe,思路如下:程序运行时,将pkunzip.exe从exe文件中分离出来,放在临时目录下,用shellexecute()执行它。
在form上放置第三个按纽,再放置两个edit ,用来输入pkunzip.exe的参数。
void __fastcall tform1::button3click(tobject *sender)
{
char exefile[100], tmppath[100] ;
unsigned long ret ;
//检查pkunzip.exe是否已经存在
gettemppath( 100, tmppath ) ;
strcpy( exefile ,(ansistring(tmppath)+
ansistring("\\pkunzip.exe") ).c_str() ) ;
ret = getfileattributes( exefile ) ;
if( ret == 0xffffffff )
{ //不存在,则分离出pkunzip.exe
tresourcestream &rs = *new tresourcestream( (int)hinstance, ansistring("unzip"),"exefile" ) ;
rs.savetofile( ansistring(exefile) ) ;
delete &rs ;
}
//执行pkunzip.exe
// edit1- >text和edit2- >text分别为运行时输入的zip文件名和目标文件目录。
shellexecute(hinstance,
"open", exefile, ansistring("-d ") + edit1- >text + " " + edit2-
>text).c_str(), tmppath, sw_hide ) ;
application- >messagebox("解压缩完成", "ok", idok ) ;
}
下面的代码片断是把windows自带的写字板writer.exe当成资源嵌入并释放,其资源类型使用了自定义数据格式(custom)的类型:
//资源文件writer.exe长度为204800byte,在资源文件中定义为"custom"资源,编号为首先你毕业设计选题时什么,根据选题在百度,这个的源码
- 4楼网友:蓝房子
- 2021-02-13 09:52
二进制方式打开,可以调试的,只怕你没那个耐心和精力!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯