| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 631 人关注过本帖
标题:刚看到一个输出自身代码的程序
只看楼主 加入收藏
dlgdd
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2007-9-18
收藏
 问题点数:0 回复次数:2 
刚看到一个输出自身代码的程序
main(){char *c="main(){char *c=%c%s%c;printf(c,34,c,34);}";printf(c,34,c,34);}

谁能解释一下最后一句printf(c,34,c,34),谢谢。。
搜索更多相关主题的帖子: 代码 输出 
2007-09-21 16:54
HJin
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:401
专家分:0
注 册:2007-6-9
收藏
得分:0 
回复:(dlgdd)刚看到一个输出自身代码的程序

c is a format string.

try following code snippet:
===========================

/*---------------------------------------------------------------------------
File name: main.c
Author: HJin (email: fish_sea_bird [at] yahoo [dot] com )
Created on: 9/21/2007 02:56:54
Environment: WinXPSP2 En Pro + VS2005 v8.0.50727.762


Modification history:
===========================================================================

*/

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char** argv)
{
int c;
char ch;
FILE* fp = fopen(__FILE__, "r");

if(!fp)
{
printf("cannot open file.\n");
exit(1);
}

c=23*45;

while( (ch=fgetc(fp)) != EOF )
{
putchar(ch);
}


fclose(fp);

return 0;
}


I am working on a system which has no Chinese input. Please don\'t blame me for typing English.
2007-09-21 18:06
野比
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:1627
专家分:516
注 册:2007-5-24
收藏
得分:0 
简单的输出自身代码是获取main的地址,然后从此地址开始读取字节(全部是指令码)。。然后就O了,随便怎么处理。

女侠,约吗?
2007-09-22 12:05
快速回复:刚看到一个输出自身代码的程序
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022530 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved