1. 对软件逆向分析,尝试写出此软件的源代码
2. 对软件的算法进行分析,从而知道算法的目的
破解:研究软件的机制后,通过修改内存或者程序文件,或写注册机并随机产生有效的序列号注册码,来突破其功能限制。
逆向调试:
1. 动态分析:使用动态调试工具加载程序并运行,运行同时可以随时暂停查看各种状态
2. 静态分析:病毒
工具:
1. 动态--
Ollydbg:32位的动态追踪工具,Ring3级的调试器。
OllylCe:爱好者修改后,本质OD。
IDA Pro:交互式反汇编工具。
x32dbg和x64dbg
栈:
是在内存中的一部分,两个性质:
1. 后进先出(先进后出)
2. 地址反向增长(栈底为大地址,栈顶为小地址)
起临时储存数据的作用
Push 压栈 将字推入栈
Pop 弹栈 将字弹出栈
注意:堆和栈都是内存上的某区域,但不相同。
一,内存分配区别
二,缓存方式区别
三,数据结构区别
汇编指令:
编程语言:
分类:机器语言,汇编语言,高级语言(通用)
有:win32汇编,易语言(普通/静态),Vb,C,C++,C#,Delphi
注:不同的编程语言程序的入口特征不同。
为什么要识别入口特征?
虽然有识别壳/语言的工具(PEID/EXE info PE),但有些新壳或其他壳是辨别不出的 。