首先這個(gè)程序是我之前寫(xiě)的一個(gè)非常簡(jiǎn)單的命令行程序,只有一個(gè)判斷輸入的字符串是否和指定的字符串相等,相等輸出密碼正確,否則顯示密碼錯(cuò)誤
#include
#include
int main(void){
while(1){
char a[100]={};
char b[100]={"hello world"};
int c = 0;
printf("請(qǐng)輸入密碼: ");
while((a[c]=getch())!=13){
if(a[c]=='\n' && a[c]=='\r')
a[c]='\0';
putchar('*');
c++;
}
a[c]='\0';
if(strcmp(a,b)==0){
printf("\n密碼正確\n");
break;
}else{
printf("\n密碼錯(cuò)誤,密碼是 'hello world'\n");
}
c=0;
}
getchar();
return 0;
}
首先打開(kāi)OD,從為數(shù)不多認(rèn)識(shí)的幾個(gè)指令中找了很久,終于被我發(fā)現(xiàn)啦
TEST EAX,EAX
JNZ 00401448
這兩行匯編代碼,根據(jù)之前學(xué)的用 nop 替換 jnz 這行代碼,保存程序后,發(fā)現(xiàn)不管輸入什么字符串都提示密碼正確
雖然這只是最簡(jiǎn)單的 nop 替換,但是對(duì)于我來(lái)說(shuō)意義重大啊,畢竟才剛學(xué)匯編,許多指令都不懂,連OD快捷鍵都不會(huì)用的人,通過(guò)修改匯編代碼成功修改了程序功能,這對(duì)我是非常大的鼓勵(lì)!值得發(fā)一篇文章來(lái)紀(jì)念一下!