反汇编只是按将010二进制码这样的目标码分析解释成Assembler ,所以我们叫DisAssembler,当然这与教科书上的汇编语言是不同的,这是由编译器优化生成的目标代码,而反汇编只是将通过如intel 指令手册就可以将之转换出来,而逆向编程是在反汇编的基础上,然后分析他的逻辑,从而用高级语言或是流式语言进行二次编程,比较常见的,就是使用嵌入asm(c语言),再则因为汇编的条件啥的其实基本都在goto,所以你用老一套的跟,只到你跟出自己的思路来了,那就真的就是逆向编程了,不过现在多是以上两种,当然高手我就没资格评论了
呵呵 首先,java可以反编译,现在已经有反编译软件了,你已经用过了,就知道的确很强大。不过,java相对来说,还是安全的,现在似乎还有种反反编译,听说过,不了解。
这些我们可以通过一些算法去加密之类的,比如md5这样的。所以还是不用担心java的安全性。
然后,java是可以写病毒的。只是,java的使用需要对方先安装jvm之类的,所以说,如果对方没安装,那你病毒就没用了。所以现在很少人用java写病毒,就像linux里很少人会去浪费时间写病毒的。
么汇编其实说白了,就是寄存器 *** 作,
先把这个变量放入寄存器
mov eax 变量
再压入栈,当然也有可能不用push,直接 *** 作eax 也是有可能的。
push 变量
然后对这个变量执行一些 *** 作,最后是
pop 变量
堆栈,通常是汇编中传递参数时用的。还有其它的传参数方式
寄存器传递法
变量传递法
例如:
void main()
{
int i ; //这个变量反汇编之后就是 mov eax i
}
反汇编是将目标程序转换成汇编源程序的,而汇编是将汇编源程序转换成目标程序。将汇编源程序到目标程序的过程叫汇编,将汇编源程序汇编成目标程序的这个程序叫汇编程序。如果你的程序没有错误的话。
先用-d 段地址:段基址 L查看的数据个数
—u找到你转换成小写字母后的一条指令的地址。
-g=cs:0 (表示刚看到的转换成小写字母后的下一条指令的ip),
再用-d 段地址:段基址 L查看的数据个数
到这里就完成了。至于你说的从键盘接受一个大学字母,那得调用int 21h 功能号AH=01H,返回值为AL,是字符的ASCII码值。呵呵,我学的东西很多都忘了。你试试看吧。
以上就是关于反汇编与逆向编程的区别全部的内容,包括:反汇编与逆向编程的区别、JAVA程序能被反汇编吗、讲一个C程序反汇编,其中的局部变量是怎么储存在栈中的等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)