下面的案例主要介绍反汇编的使用价值,即在软件加解密方面的应用,可以很好地体会到基本的汇编指令在实践中的应用,也可以认识到Ollydbg在软件调试过程中的威力。
选用的示例程序CRACKME.exe程序来自看雪论坛的“从零开始用ollydbg cracking”系列。本文只做学习交流用途,不作其他任何用途。...
分类:
其他好文 时间:
2014-10-03 11:08:24
阅读次数:
252
PE文件结构(二)
参考
书:《加密与解密》
视频:小甲鱼 解密系列 视频
区块
在区块表 后面的就是一个一个区块,每个区块占用对齐值的整数倍,一般的文件都有代码块 跟 数据块( 它们的名字一般为.text 跟 .data 但这是可以修改的)。每个区块的数据具有相同的属性。编译器先在obj中生成不同的区块, 链接器再按照一定的规则合并不同obj跟库中的快。例如每个obj中肯定有.text 块, 连接器就会把它们合并成一个单一的.text 块;再如,如果两个区块具有相同的的属性就有可能被合...
分类:
其他好文 时间:
2014-10-03 00:04:23
阅读次数:
285
曾经,调试时跟进HeapAlloc,结果发现直接进入到ntdll的RtlAllocateHeap中,感到很有趣,就使用Dependency Walker查看kernel32.dll的导出函数,结果发现HeapAlloc的地址直接显示的就是NTDLL.RtlAllocateHeap。于是反汇编查看ke...
分类:
其他好文 时间:
2014-09-28 14:41:12
阅读次数:
862
记得大三实习的时候在一位喜欢做破解的哥们的影响下了解反汇编调试这么一回事儿,于是实践后
恍然悟到:(1)学汇编不为写汇编,而为透析c/c++诸多细节的本质(2)大神的境界应该是没写一句
c/c++语言,其相应汇编代码便了然于心。
题外话:本文总是把c语言和c++语言写在一起,是因为笔者喜欢,笔者认为如果说汇编语言是机器
语言的第一重映射,那么c语言就是汇编语言的第一重映射、c++是...
分类:
编程语言 时间:
2014-09-27 01:58:49
阅读次数:
231
将eax寄存器置零,编程中也就是赋值0 两种方式分析xor eax,eax mov eax,0//在汇编中或者反汇编中。编译器一般都会用xor eax,eax来操作.//这样的好处显而易见.因为xor来操作只需要暂用2个字节,而用mov则需要5个或更多的字节.所以cpu的优化还是很有效率的。
分类:
其他好文 时间:
2014-09-26 03:45:18
阅读次数:
218
PE文件结构(一)
参考
书:《加密与解密》
视频:小甲鱼 解密系列 视频
exe,dll都是PE(Portable Execute)文件结构。PE文件使用的是一个平面地址空间,所有代码和数据都被合并在一起,组成一个很大的结构。先看2张图,来大概了解一下PE文件结构。
PE文件的框架结构
通过这张图(开始在下面),我们可以知道PE文件的大概结构,PE文件是由 DOS头,PE文件头,块表,块,调试信息 这些部分组成的。这些结构的定义在 winnt.h 中的 “Image...
分类:
其他好文 时间:
2014-09-19 01:14:04
阅读次数:
270
push 栈顶sp=sp-2 可以把立着的栈,向左侧倒下,那么形态就和反汇编时,内存的形态是一样的。小偏移的字节在前, 大的偏移字节在后。1234512345
分类:
其他好文 时间:
2014-09-13 18:37:15
阅读次数:
249
OllyDbg 使用笔记 (十九)
参考
书:《加密与解密》
视频:小甲鱼 解密系列 视频
反调试
先看看这四个程序。
它们自己运行时都没有问题,都显示被注册信息 “You really did it! Congratz it",但是一到OD中运行就会出现未注册或者报错。
这四个程序都对OD进行了反调试。
它们都用了IsDebuggerPresent这个API函数来判断是否程序被调试器调用。
可以先看看ReverseMe.A程序,正常运行时会出现“Y...
分类:
数据库 时间:
2014-09-09 23:05:46
阅读次数:
456