看代码:
1 #include <stdio.h> 2 #include <fcntl.h> 3 int key1(){ 4 asm("mov r3, pc\n"); 5 } 6 int key2(){ 7 asm( 8 "push {r6}\n" 9 "add r6, pc, $1\n" 10 "bx r6\n" 11 ".code 16\n" 12 "mov r3, pc\n" 13 "add r3, $0x4\n" 14 "push {r3}\n" 15 "pop {pc}\n" 16 ".code 32\n" 17 "pop {r6}\n" 18 ); 19 } 20 int key3(){ 21 asm("mov r3, lr\n"); 22 } 23 int main(){ 24 int key=0; 25 printf("Daddy has very strong arm! : "); 26 scanf("%d", &key); 27 if( (key1()+key2()+key3()) == key ){ 28 printf("Congratz!\n"); 29 int fd = open("flag", O_RDONLY); 30 char buf[100]; 31 int r = read(fd, buf, 100); 32 write(0, buf, r); 33 } 34 else{ 35 printf("I have strong leg :P\n"); 36 } 37 return 0; 38 }