《黑客反汇编揭秘》的第一个程序
书中第一段程序:
#include <stdio.h>
#include <string.h>
#define PASSWORD_SIZE 100
#define PASSWORD "myGOODpassword\n"
//上面定义中的回车符是必要的,因为这样可以省略裁掉用户输入的回车的步骤
int main(int argc, char* argv[])
{
//记录鉴定失败次数的计数器
int count = 0;
//用于存放用户输入的密码符的缓冲区
char buff[PASSWORD_SIZE];
//鉴定操作主循环
for(;;)
{
//提示用户输入密码
printf( "Enter password :" );
fgets( &buff[0], PASSWORD_SIZE, stdin );
//针对参照值匹配输入的密码
if( strcmp( &buff[0], PASSWORD ) )
{
//"申斥"密码不匹配
printf( "Wrong password\n" );
}
else break;
//鉴定失败计数值加1并且在密码试三次后终止程序的运行
if( ++count > 2 )
{
return -1;
}
}
//程序执行到这里,意味着用户输入的密码是正确的
printf( "Password OK\n" );
getch();
return 0;
}
[code=text][/code]
RAW DATA #2
00423000: 00 00 00 00 93 5C BD 51 00 00 00 00 02 00 00 00 .....\.Q........
00423010: 3D 00 00 00 00 00 00 00 00 C0 02 00 50 61 73 73 =...........Pass
00423020: 77 6F 72 64 20 4F 4B 0A 00 00 00 00 57 72 6F 6E word OK.....Wron
00423030: 67 20 70 61 73 73 77 6F 72 64 0A 00 00 00 00 00 g password......
00423040: 6D 79 47 4F 4F 44 70 61 73 73 77 6F 72 64 0A 00 myGOODpassword..
00423050: 00 00 00 00 45 6E 74 65 72 20 70 61 73 73 77 6F ....Enter passwo
00423060: 72 64 20 3A 00 00 00 00 73 74 72 20 21 3D 20 4E rd :....str != N
00423070: 55 4C 4C 00 66 67 65 74 73 2E 63 00 73 74 72 69 ULL.fgets.c.stri
00401055: 68 40 30 42 00 push offset ??_C@_0BA@IHGN@myGOODpassword?6?$AA@