例項2 secret01.exe
第乙個字元的ascii碼減一等於58,故該字元的ascii碼是59,該字元是y;
第二個字元的ascii碼加一等於50,故該字元的ascii碼是4f,該字元是o;
第三個字元的ascii碼加一等於56,故該字元的ascii碼是55,該字元是u。
截圖如下:
例項3 secret02.exe
或運算:有1則1,全0才0
與運算:有0則0,全1才1
第乙個字元:在將其ascii碼減一,跟07做與運算,跟30做或運算之後,它的值跟36相等,即為00110110。於是倒回去,可知跟30做或運算的數可能是06、16、26、36;若是06,則跟07做與運算的數是06;不可能是16、26、36,因為07的二進位制是00000111,前面4個都是0,07跟任何數做與運算的結果中的前4位都不可能有1存在。所以可確定跟07做與運算的數是06,故將其加一便得到了第乙個字元——7。
第二個字元:在將其ascii碼跟07做與運算,跟30做或運算之後,它的值跟31相等,即為00110001。於是倒回去,可知跟30做或運算的數可能是01、11、21、31;若是01,則跟07做與運算的數是01;若是11,則跟07做與運算的數是09;其他的21、31不可能是跟07做與運算的數。所以第二個字元是——1或9。
第三個字元:在將其ascii碼加一,跟07做與運算,跟30做或運算之後,它的值跟35相等,即00110101。於是倒回去,可知跟30做或運算的數可能是05、15、25、35;可知跟07做與運算的數是05。所以得到第三個字元是——4。
故程式想讓我們輸入三個字元714。
截圖如下:
總結:
給程式分段很重要,幫助我們理清思路。感覺上課做題的時候,腦子裡一團漿糊,整個人都是懵的。我還是需要靜下來才行,心裡太焦躁了。一定要靜下心才行。
微機原理 反彙編例項5
例項6 secret5.exe 將di中儲存的字元 y 賦值給al,再加一 得到z 與07 二進位制是00000111 做與運算,與30 二進位制是00110000 做或運算。解密過程如下 z 7a,二進位制是01111010 跟07做與運算的結果是00000010 02 將該結果跟30做或運算,結...
反彙編引擎的工作原理
ollydbg和ida都有乙個很重要的功能 反彙編 在x86平台下使用的彙編指令對應的二進位制機器碼為intel 指令集一opcode,intel指令手冊中描述的指令由6部分組成 irsinucton prefixes 指令字首 opcode 指令操作碼 mode r m 運算元型別 sib dis...
C語言反彙編入門例項
d my documents visual studio 2008 projects first first first.cpp first.cpp 定義控制台應用程式的入口點。include stdafx.h int tmain int argc,tchar argv 恢復暫存器ebx,esi,e...