能力值:
( LV3,RANK:20 )
26 楼
不过,意思我是理解了,但就不知道为什么printf("hello world");运行到这就出错
能力值:
( LV3,RANK:20 )
27 楼
__asm
{
MOV EAX, OFFSET main
MOV BYTE PTR[EAX], 0xE8 //MOV EAX, 0x
MOV DWORD PTR[EAX+1], OFFSET SHOWSTRING
MOV WORD PTR[EAX+5], 0xE0FF // JMP EAX
}
这段是修改main()函数,在其开头加入代码 jmp showstring
能力值:
( LV7,RANK:110 )
28 楼
Linking...
print.obj : error LNK2001: unresolved external symbol "int __cdecl mainCRTStartup(void)" (?mainCRTStartup@@YAHXZ)
Debug/printf.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.编译的时候提示这个
能力值:
( LV3,RANK:20 )
29 楼
mainCRTStartup不知道是什么函数,不知道哪冒出来的,可能是他写的函数没贴出来
能力值:
( LV4,RANK:50 )
30 楼
hello.c
不是hello.cpp
能力值:
( LV4,RANK:50 )
31 楼
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");
}
这个是错的,会crash,没有调用crtStartup
能力值:
( LV6,RANK:90 )
32 楼
刚试了下debug方式,确实如此。多些兄弟指正。不过release正常(开始用的release,没发现这BUG
)。
能力值:
( LV3,RANK:20 )
33 楼
我机器上调试死活不对,楼上的是拿的什么编译器啊
能力值:
( LV4,RANK:50 )
34 楼
void print()
{
#pragma comment(linker, "/entry:print")
void main();
_asm pop ebx
_asm pop esi
_asm pop edi
_asm mov esp,ebp
_asm pop ebp
_asm push offset main
printf("Hello World!\n");
_asm ret
}
这样改行不行?
感觉这道题与编译器有很大关系
能力值:
( LV2,RANK:10 )
35 楼
网上好像 有一类这样的题目....
能力值:
( LV4,RANK:50 )
36 楼
就算是Release方式下也无法正常运行
必须显示调用crtStartup
能力值:
( LV3,RANK:20 )
37 楼
crtStartup是什么函数,要包含哪个库?
能力值:
( LV6,RANK:90 )
38 楼
不知道兄弟测试过没。我还是上张图吧
上传的附件:
能力值:
( LV3,RANK:20 )
39 楼
一道题,就可以区分…手机党,不上代码
能力值:
( LV2,RANK:10 )
40 楼
测试这段代码可以..
能力值:
( LV3,RANK:30 )
41 楼
我也来一个
int print()
{
printf("Hello world!\n");
return 0;
} int main()
{
return 0;
}
typedef int cb(void);
#pragma data_seg(".CRT$XIA")
static cb *autostart[] = {print};
#pragma data_seg()
能力值:
( LV6,RANK:90 )
42 楼
放OD里看了下。知道原因了。
00401000 >/$ 68 20104000 PUSH test.00401020
00401005 |. 68 00304000 PUSH test.00403000 ; /s = "i am MentalDease"
0040100A |. E8 21000000 CALL <JMP.&MSVCRT.puts> ; \puts
那工程release设置是默认动态MFC库
所以调用的是MSVCRT里的puts
to 40楼的大哥。在main放个printf是为了证明能正常执行到main函数好吧
能力值:
( LV4,RANK:50 )
43 楼
我这出不来 hello world
能力值:
( LV2,RANK:10 )
44 楼
printf ("hello world");
能力值:
( LV4,RANK:50 )
45 楼
ls的大哥真NB
能力值:
( LV7,RANK:100 )
46 楼
被吓到了... 学习了
能力值:
( LV3,RANK:20 )
47 楼
nissassA 你建的工程不对,要建控制台程序,看清题意好不
能力值:
( LV3,RANK:30 )
48 楼
可以出来 我博客那里没把cb类型声明改成void 才出不来
能力值:
( LV3,RANK:20 )
49 楼
嗯,exile的程序可以通过
能力值:
( LV3,RANK:20 )
50 楼
不知道你是从哪知道mainCRTStartup这个函数的