Crack杰讲讲破解原理(二)
既然讲到了反汇编,我们就谈谈什么叫反汇编。反汇编就是指有可执行文件(PE files),但没有源代码,我们根据二进制文件可以分析出他的机器使用的二进制代码。有了二进制代码,我们就可以使用反汇编工具(A disassembler is a computer program that translates machine language into assembly language—the inverse operation to that of an assembler. A disassembler differs from a decompiler, which targets a high-level language rather than an assembly language. Disassembly, the output of a disassembler, is often formatted for human-readability rather than suitability for input to an assembler, making it principally a reverse-engineering tool.)将二进制代码分析成汇编代码。(利用ida pro的hex-ray插件还可以进一步分析成为C语言代码)我们常见的反汇编工具有C32ASM,W32DASM,IDA PRO 等。
C32ASM:
W32DASM:
IDA PRO WITH HEX RAY:
反汇编工具不完全等于静态分析工具,像linux下的OBJDUMP便是一个单独的彻彻底底的反汇编工具,而IDA PRO便是一款强大的静态分析工具(不得不说,IDA PRO支持的文件上到XBOX360的游戏,下到单片机的程序,图像分析,交叉引用分析,函数分析,还有伪代码分析实在是非常之强大,这也使正版的IDA PRO WITH HEX RAY 要15-16w一年仍然畅销的原因。)
说了这么多的反汇编工具,说的大家可能都懵了,我们最常用的OD在哪里?其实OD并不是一款软件分析工具,而是一款软件调试工具。OD是新手最常用的调试工具,那么下文也将开始分析OLLYDBG常用功能的原理。
1. INT3(CC)断点功能:
Int3/cc(以下简称int3断点)的原理十分简单,当你找到一句指令时,按下F2,OD会将这条命令的机器码改成 0xCC,之后运行程序之后,每当程序执行到这里就会报一个INT3异常,OD获得这个信息后将程序挂起,我们看到的就是程序被断下,当继续运行时,od会把INT3改回原来的代码(深藏功与名)。
2. 内存断点:
将制定内存空间下断时,OD将这里的内存地址利用VirtualProtectEX函数将这个内存空间设定为只读,当命令访问时,返回一个异常,od得到异常后挂起进程,查看寄存器EIP,定位到EIP的值,反汇编窗口执行位置跳转到EIP位置(深藏功与名)
3.硬件断点比较麻烦,还请观看下一篇文。
如果能再配点简单小例子就最好不过了 彡墨鱼灬丶 发表于 2015-10-6 18:22
如果能再配点简单小例子就最好不过了
我也是现学现卖,这种原理的东西配例子也要用c语言来写,我一写例子就又有一大波人看不懂,所以我是尽可能的简单明了。我会想想写写小例子的! Crack杰 发表于 2015-10-6 18:25
我也是现学现卖,这种原理的东西配例子也要用c语言来写,我一写例子就又有一大波人看不懂,所以我是尽可 ...
现学现用,感觉好厉害,我学了半年的E语言也只会看懂一丢丢,有潜质,看好你喔~ 这个帖子适合我们这些菜鸟啊,简单易懂 慢慢学习,,期待第三期。 第一期的地址能不能添上 支持分享新手文 你真厉害菜鸟膜拜你