能力值:
( LV6,RANK:90 )
|
-
-
2 楼
|
能力值:
( LV3,RANK:20 )
|
-
-
3 楼
啊,还有这样的笔记题目啊,楼主没学过编程?
|
能力值:
( LV6,RANK:90 )
|
-
-
4 楼
main函数里面没调用,怎么显示啊
printf语法很简单的~~~~~~~~
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
printf
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
有点意思~~~
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
有那么低级的面试?c++第一节课就是教这个例子。大学有c语言课程的应该都会~~printf是输出的意思
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
printf("%s","Hello,world");
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
挺难的,不考虑考虑编译器和操作系统特性的话,还确实比较麻烦,期待答案
我先来个vxworks操作系统下的吧,这个简单,因为vxworks下可以单独执行一个函数,
建立一个download工程后,在print函数里面写个printf语句就ok了,编译后ld加载,
然后在shell下执行print,就能输出hello world了。
正确答案期待中,目前没想到。
|
能力值:
( LV4,RANK:50 )
|
-
-
10 楼
//hello.c by MentalDease
#include "stdio.h"
void print()
{
#pragma comment(linker, "/entry:print")
#pragma comment(linker, "/SECTION:.text,REW" )
int mainCRTStartup();
void main();
__asm
{
MOV EAX, OFFSET main
MOV BYTE PTR[EAX], 0xB8 //MOV EAX, 0x
MOV DWORD PTR[EAX+1], OFFSET SHOWSTRING
MOV WORD PTR[EAX+5], 0xE0FF // JMP EAX
}
mainCRTStartup();
SHOWSTRING:
printf ("i am MentalDease\n");
getchar();
}
void main()
{
}
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
这道题让我想起了以前见到的类似的一个面试题目:
如何不用循环语句,而输出1到整数x之间的所有整数。
思路应该差不多:人为修改函数偏移地址。
|
能力值:
( LV3,RANK:20 )
|
-
-
12 楼
学习。。........
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
学习学习。。。。
突然想起来,这个问题好像和另外一个面试题类似:在main函数之前,程序还做了哪些事情?
|
能力值:
(RANK:300 )
|
-
-
14 楼
这个应该是考知识面的题....
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
这道题。。。。让我不寒而栗
|
能力值:
( LV2,RANK:10 )
|
-
-
16 楼
什么公司?
厉害
|
能力值:
( LV2,RANK:10 )
|
-
-
17 楼
#include "stdio.h"
void print()
{
printf("%s","Hello,world");
}
void main()
{
print();
}
就这个吧,差不多了
|
能力值:
( LV6,RANK:90 )
|
-
-
18 楼
void print()
{
#pragma comment(linker, "/entry:print")
void main();
__asm
{
push offset main
}
puts ("i am MentalDease\n");
__asm
{
ret
}
}
void main()
{
//printf ("main\n");
}
我是来膜拜了学习10L大牛的。
BTW:link时候得加上msvcrt.lib库
|
能力值:
( LV2,RANK:10 )
|
-
-
19 楼
别小看hello world,搜一下 C语言混乱编程大赛的helloworld版本吧
|
能力值:
( LV15,RANK:670 )
|
-
-
20 楼
|
能力值:
( LV3,RANK:20 )
|
-
-
21 楼
题目要求是不改main函数哦,好像有点难度的,不是普通的编程
|
能力值:
( LV2,RANK:10 )
|
-
-
22 楼
代码:
void print()
{
#pragma comment(linker, "/entry:print")
void main();
__asm
{
push offset main
}
puts ("i am MentalDease\n");
__asm
{
ret
}
}
void main()
{
//printf ("main\n");
}
支持10L,直接汇编出来,^_^
|
能力值:
( LV2,RANK:10 )
|
-
-
23 楼
MOV EAX, OFFSET main
MOV BYTE PTR[EAX], 0xB8 //MOV EAX, 0xB8
MOV DWORD PTR[EAX+1], OFFSET SHOWSTRING
MOV WORD PTR[EAX+5], 0xE0FF // JMP EAX
我问一下 0xb8是什么指令?
还有 在vc编译的时候 offset SHOWSTRING OFFSET伪指令这时求得的偏移量应该是相对于 MOV DWORD PTR[EAX+1], OFFSET SHOWSTRING 这句指令的便宜量吧?
而在实际执行的时候 是main函数中jmp 偏移量 这个偏移量并不是相对于main函数的呀
还有
mov eax, offset main
mov word ptr[eax + 5], 0xe0ff
你的注释说0xe0ff是 jmp eax
eax中是main的函数地址
也就是无限递归了。。
感觉 这个代码有问题吧?
|
能力值:
( LV2,RANK:10 )
|
-
-
24 楼
没看到后面的说明,不太好做呢
|
能力值:
( LV3,RANK:20 )
|
-
-
25 楼
这些代码拿到VC6里调试,没一个成功的
|
|
|