微机原理 反汇编实例01、02

实例2 secret01.exe
微机原理 反汇编实例01、02
第一个字符的ASCII码减一等于58,故该字符的ASCII码是59,该字符是Y;
第二个字符的ASCII码加一等于50,故该字符的ASCII码是4F,该字符是O;
第三个字符的ASCII码加一等于56,故该字符的ASCII码是55,该字符是U。

截图如下:
微机原理 反汇编实例01、02

实例3 secret02.exe
微机原理 反汇编实例01、02
或运算:有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。

截图如下:
微机原理 反汇编实例01、02
微机原理 反汇编实例01、02

总结:
给程序分段很重要,帮助我们理清思路。感觉上课做题的时候,脑子里一团浆糊,整个人都是懵的。我还是需要静下来才行,心里太焦躁了。一定要静下心才行。