Crack杰 发表于 2015-10-6 18:19

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

如果能再配点简单小例子就最好不过了

Crack杰 发表于 2015-10-6 18:25

彡墨鱼灬丶 发表于 2015-10-6 18:22
如果能再配点简单小例子就最好不过了

我也是现学现卖,这种原理的东西配例子也要用c语言来写,我一写例子就又有一大波人看不懂,所以我是尽可能的简单明了。我会想想写写小例子的!

彡墨鱼灬丶 发表于 2015-10-6 18:28

Crack杰 发表于 2015-10-6 18:25
我也是现学现卖,这种原理的东西配例子也要用c语言来写,我一写例子就又有一大波人看不懂,所以我是尽可 ...

现学现用,感觉好厉害,我学了半年的E语言也只会看懂一丢丢,有潜质,看好你喔~

LYQingYe 发表于 2015-10-6 18:42

这个帖子适合我们这些菜鸟啊,简单易懂

niutou20 发表于 2015-10-6 19:55

慢慢学习,,期待第三期。

123456789 发表于 2015-10-6 21:12

第一期的地址能不能添上

红尘666 发表于 2015-10-6 21:31

JAYceM6 发表于 2015-10-14 12:06

支持分享新手文

xiao76219 发表于 2015-10-14 12:58

你真厉害菜鸟膜拜你
页: [1] 2 3
查看完整版本: Crack杰讲讲逆向原理(二)