看代码:

 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 }
C Code

相关文章: