}
关于上面的代码依旧有一定参考性的,从代码风格来讲或者规范我们都必须在每一个case后面加上一个break语句,不然就显得你对语言还不是很熟悉或者没有注意代码规范这一块,事实上这些关于公司来说依旧挺重要的。下面来看看具体的反汇编代码吧。
0x080483f4: push?p 0x080483f5: mov%esp,?p 0x080483f7: sub$0x14,%esp 0x080483fa: mov0x8(?p),êx 0x080483fd: movêx,-0x4(?p) 0x08048400:mov0x8(?p),êx 0x08048403: sub$0x64,êx
0x08048406: movêx,-0x14(?p) 0x08048409: cmpl$0x6,-0x14(?p)
0x0804840d: ja0x8048447 0x0804840f: mov-0x14(?p),íx
0x08048412: mov0x8048570(,íx,4),êx 0x08048419: jmp*êx
0x0804841b: mov-0x4(?p),êx 0x0804841e: movêx,íx 0x08048420: addíx,íx 0x08048422: addêx,íx 0x08048424: shl$0x2,íx
0x08048427: lea(íx,êx,1),êx 0x0804842a: movêx,-0x4(?p)
0x0804842d: jmp0x804844e 0x0804842f: addl$0xa,-0x4(?p)
0x08048433: jmp0x804844e 0x08048435: addl$0xb,-0x4(?p)
0x08048439: jmp0x804844e 0x0804843b: mov-0x4(?p),êx 0x0804843e: imul-0x4(?p),êx 0x08048442: movêx,-0x4(?p)
0x08048445: jmp0x804844e 0x08048447: movl$0x0,-0x4(?p) 0x0804844e: mov-0x4(?p),êx 0x08048451: leave 0x08048452: ret 关于上面的反汇编代码,我们能够从中看出有比较多的无条件跳转时,能够猜测那个地方有switch条件语句,在实际分析中需要有大胆的猜测加上详细的分析就能够得到自己想要分析的汇编代码的整体逻辑结构,从而能够写出相似功能的源代码。 总结:
假如能够最好能够结合《深入理解计算机系统》这本书来看,差不多有第二
版了,事实上我也是学习这本书记录的学习笔记。这本书的价值就不用我说了五星书,必须看的。