【求助】如何在字符窜后面接上一个地址
在一个字符串后面接上一个地址,问题是用指针得到地址然后用strcat()函数连接起来是数据类型不对,指针是32位整形,接在一个字符窜后面出错了,还有就是指针怎么引用本身呢?(就是怎么用这个地址,而不是指针指向的内容 :比如int *pointe;*pointe=123;要用123所在的内存地址也就是pointer这个指针要怎么用?&pointer这样用吗??)要怎么解决这2个问题啊??望各位路过的大哥大姐们帮个忙~~
小弟在这谢谢了~~
=======================================================================================
重新说下问题~~ 求助~~~~~~~!!!!!!!!!!!!!!
第一个问题我用了另外一个指针在指向来到达我的目的,但是问题也出来了
这个小程序本身存在溢出问题,溢出点也定位出来了在over[]第十七个位置,所在over第十七个位置开始应该填写shellcode的地址对应的字符,但是问题是strcat(over,ret);函数接受的是char,就是说我要把ret指向的指针改成字符我尝试用strcat(over,(char)ret);出错了,所以我想可能是我这里面的地址被我转错了吧,或者还是其他什么问题???
#include "stdio.h"
#include <windows.h>
char shellcode[]="\x33\xDB\x53\x53\x53\x53\xB8\xEA\x04\xD5\x77\xFF\xD0";
void main()
{
char sz[10],over[50];
char endj='\0';
int flate=0;
LoadLibrary("user32.dll");
char *pointe;
pointe=shellcode;
int *ret;
*ret=(int)pointe;
printf("the shellcode addr is %d \n",pointe);
printf("input the char \n");
for (int j=0;j<17;j++)//前十七个for循环自己填充
{
over[j]='a';
}
strcat(over,ret);
for (unsigned int i=0;over[i]!=endj;i++);//输入的字符个数统计
if (i<10) //是否溢出提示
{
printf("the value input has %d \n",i);
printf("the pro is UNoverflow \n");
}
strcpy(sz,over);
return;
}
[ 本帖最后由 gpp6025 于 2010-8-11 11:17 编辑 ]