又来送分了,参与的都有分,介绍下读代码的经验解决办法
又来送分了,参与的都有分,介绍下读代码的经验介绍下读代码的经验,就是这样能快速看懂代码做些什么事情.就
又来送分了,参与的都有分,介绍下读代码的经验
介绍下读代码的经验,就是这样能快速看懂代码做些什么事情.
就是理解它的意思,因为读高级语言是很快的,不知道这个有没有好的方法,共享下。
[解决办法]
我觉得要选求代码体积适宜,不要太大,自己能把握的来读,另外对C++对象模型要熟悉,这样都C++、C、ASM代码就跟容易些,对堆栈结构要操作方法要很清楚。另外好工具很重要,我现在喜欢用ida pro
[解决办法]
注意大局,不要迷失在细节中,汇编尤其容易如此。
[解决办法]
了解模块->函数
[解决办法]
想逆向啊?
先打好基础!
[解决办法]
[解决办法]1、读代码能力很大程度上取决于您的写代码能力,不管是Java,C#.NET,C/C++,还是汇编,写的多了,自然对您读代码有很大帮助。2、首先要把握全局性的内容(泛读),尤其是读那些注释不全的代码,这是很重要的。3、对重要的细节内容进行(精读)。以上纯属个人看法。
[解决办法]熟能生巧 看得多 写得多 眼界就宽 速度就会快 先熟悉功能流程 在去看你需要的细节
[解决办法]嗯,路过学学.......
[解决办法]重在参与
[解决办法]读代码要读的有效率的话,基础还是很重要的,常用的指令要非常熟悉,如果自己有一定的代码量的话那就更好了,最重要的还是自己动手实践
[解决办法]以反汇编的代码为例
对不同的语言的反汇编结果 其实结构还是大致相同的
现将代码中的函数区分出来,,,【用线隔开】【区分方法:无论是采用那种函数调用方式,在反汇编中一路是先push参数,,只是顺序不同罢了,,pascal貌似是从左到右,,,stdcall是从右到左,,,然后是call函数,,,最后顶多是要清栈一下,,,有的话就更好判断参数个数了~~
然后剩下的就是变量和常量咯
用lea操作符的就是局部的咯
用offset可能是全局的 也可能是常量,,,,【在c或c++全局的还可分为是不是指针】
但是常量在反汇编的代码中从来不随便跑,,,很乖的呆在一个集中的地发
只有全局到处跑,,,于是可以很快的区分出来
至于全局是不是指针,,就要看是不是用来指向地址了的咯【感觉像废话,,-_-!】
区分完后,只要看调用了那些函数 就知道大概是干什么得了
当然还会遇到循环语句,条件语距的结构,还有结构体 等等
这些看多了就容易分辨了
[解决办法][解决办法]先细节,再分析功能,再总结出模块。
其实,可以理解为软件工程的逆过程...软件工程是先规划,再模块,再功能,在详细设计....
[解决办法]本人觉得很重要的一点就是首先要熟悉各个指令功能,这样才能知道该指令是做什么的。对各个寄存器的认识也是很重要的。逻辑也很重要。最后更重要的应该是经验了。
[解决办法]弄清楚程序干什么用的,要解决什么问题
如果能弄明白关键数据结构就简单多了,注意“不变属性”
看常量区的字符串常量也是不错的方法,特别是提示性的字符串
工具最重要,要那种带交叉索引功能的