图书介绍

逆向工程权威指南 下【2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载】

逆向工程权威指南 下
  • (乌克兰)丹尼斯著;ARCHER,安天安全研究与应急处理中心译 著
  • 出版社: 北京:人民邮电出版社
  • ISBN:7115434456
  • 出版时间:2017
  • 标注页数:954页
  • 文件大小:49MB
  • 文件页数:479页
  • 主题词:

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

逆向工程权威指南 下PDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

第47章 字符串剪切485

47.1 x64下的MSVC 2013优化486

47.2 x64下采用编辑器GCC 4.9.1进行非优化操作487

47.3 x64下的GCC 4.9.1优化488

47.4 ARM64:非优化的GCC(Linaro)4.9489

47.5 ARM64:优化GCC(Linaro)4.9490

47.6 ARM:Keil 6/2013优化(ARM模式)491

47.7 ARM:Keil 6/2013(Thumb模式)优化492

47.8 MIPS493

第48章 toupper()函数495

48.1 x64495

48.1.1 两个比较操作495

48.1.2 一个比较操作496

48.2 ARM497

48.2.1 ARM64下的GCC497

48.3 总结498

第49章 不正确的反汇编代码499

49.1 x86环境下的从一开始错误的反汇编499

49.2 随机噪音,怎么看起来像反汇编指令?500

第50章 混淆技术505

50.1 字符串变换505

50.2 可执行代码506

50.2.1 插入垃圾代码506

50.2.2 用多个指令组合代替原来的一个指令506

50.2.3 始终执行或者从来不会执行的代码506

50.2.4 把指令序列搞乱507

50.2.5 使用间接指针507

50.3 虚拟机以及伪代码507

50.4 一些其他的事情507

50.5 练习题508

50.5.1 练习1508

第51章 C++509

51.1 类509

51.1.1 一个简单的例子509

51.1.2 类继承515

51.1.3 封装518

51.1.4 多重继承520

51.1.5 虚拟方法523

51.2 ostream输出流526

51.3 引用527

51.4 STL/标准模板库(Standard Template Library)528

51.4.1 std::string(字符串)528

51.4.2 std::list535

51.4.3 std::vector标准向量545

51.4.4 std::map()和std::set()552

第52章 数组与负数索引563

第53章 16位的Windows程序566

53.1 例子#1566

53.2 例子#2566

53.3 例子#3567

53.4 例子#4568

53.5 例子#5571

53.6 例子#6574

53.6.1 全局变量576

第四部分 Java581

第54章 Java581

54.1 简介581

54.2 返回一个值581

54.3 简单的计算函数586

54.4 JVM的内存模型588

54.5 简单的函数调用588

54.6 调用函数beep()(蜂鸣器)590

54.7 线性同余随机数产生器(PRNG)591

54.8 条件转移592

54.9 传递参数594

54.10 位操作595

54.11 循环596

54.12 switch()语句598

54.13 数组599

54.13.1 简单的例子599

54.13.2 数组元素求和601

54.13.3 输入变量为数组的主函数main()601

54.13.4 预设初始值的的数组602

54.13.5 可变参数函数604

54.13.6 二维数组606

54.13.7 三维数组606

54.13.8 小结607

54.14 字符串607

54.14.1 第一个例子607

54.14.2 第二个例子608

54.15 异常处理609

54.16 类612

54.17 简单的补丁614

54.17.1 第一个例子614

54.17.2 第二个例子616

54.18 总结618

第五部分 在代码中发现重要而有趣的内容621

第55章 编译器产生的文件特征621

55.1 Microsoft Visual C++621

55.1.1 命名规则621

55.2 GCC编译器621

55.2.1 命名规则621

55.2.2 Cygwin621

55.2.3 MinGW621

55.3 Intel FORTRAN621

55.4 Watcom以及OpenWatcom622

55.4.1 命名规则622

55.5 Borland编译器622

55.5.1 Dephi编程语言622

55.6 其他的已知DLL文件623

第56章 Win32环境下与外部通信624

56.1 在WindowsAPI中最经常使用的函数624

56.2 tracer:解析指定模块的所有函数624

第57章 字符串626

57.1 字符串626

57.1.1 C/C++中的字符串626

57.1.2 Borland Delphi626

57.1.3 Unicode编码626

57.1.4 Base64628

57.2 错误/调试信息629

57.3 可疑的魔数字符串629

第58章 调用宏assert()(中文称为断言)630

第59章 常数631

59.1 魔数631

59.1.1 动态主机配置协议(Dynamic Host Configuration Protocol,DHCP)632

59.2 寻找常数632

第60章 检索关键指令633

第61章 可疑的代码模型635

61.1 XOR异或指令635

61.2 手写汇编代码635

第62章 魔数与程序调试637

第63章 其他的事情638

63.1 总则638

63.2 C++638

63.3 部分二进制文件的特征638

63.4 内存“快照”对比638

63.4.1 Windows注册表639

63.4.2 瞬变比较器Blink-comparator639

第六部分 操作系统相关643

第64章 参数的传递方法(调用规范)643

64.1 cdecl[C Declaration的缩写]643

64.2 stdcall[Standard Call的缩写]643

64.2.1 带有可变参数的函数644

64.3 fastcall644

64.3.1 GCC regparm645

64.3.2 Watcom/OpenWatcom645

64.4 thiscall645

64.5 64位下的x86646

64.5.1 Windows x64646

64.5.2 64位下的Linux648

64.6 单/双精度数型返回值649

64.7 修改参数649

64.8 指针型函数参数649

第65章 线程本地存储TLS652

65.1 线性同余发生器(改)652

65.1.1 Win32系统652

65.1.2 Linux系统656

第66章 系统调用(syscall-s)658

66.1 Linux658

66.2 Windows659

第67章 Linux660

67.1 位置无关的代码660

67.1.1 Windows662

67.2 在Linux下的LD_PRELOAD662

第68章 Windows NT666

68.1 CRT(Win32)666

68.2 Win32 PE文件669

68.2.1 术语670

68.2.2 基地址670

68.2.3 子系统670

68.2.4 操作系统版本670

68.2.5 段671

68.2.6 重定向段Relocations(relocs)672

68.2.7 导出段和导入段672

68.2.8 资源段674

68.2.9 .NET675

68.2.10 TLS段675

68.2.11 工具675

68.2.12 更进一步675

68.3 Windows SEH675

68.3.1 让我们暂时把MSVC放在一边675

68.3.2 让我们重新回到MSVC680

68.3.3 Windows x64693

68.3.4 关于SEH的更多信息697

68.4 Windows NT:临界区段697

第七部分 常用工具703

第69章 反汇编工具703

69.1 IDA703

第70章 调试工具704

70.1 tracer704

70 2 OllyDbg704

70.3 GDB704

第71章 系统调用的跟踪工具705

71.1 strace/dtruss705

第72章 反编译工具706

第73章 其他工具707

第八部分 更多范例711

第74章 修改任务管理器(Vista)711

74.1 使用LEA指令赋值713

第75章 修改彩球游戏715

第76章 扫雷(Windows XP)717

76.1 练习题721

第77章 人工反编译与Z3 SMT求解法722

77.1 人工反编译722

77.2 Z3 SMT求解法725

第78章 加密狗730

78.1 例1:PowerPC平台的MacOS Classic程序730

78.2 例2:SCO OpenServer737

解密错误信息745

78.3 例3:MS-DOS747

第79章 “QR9”:魔方态加密模型753

第80章 SAP782

80.1 关闭客户端的网络数据包压缩功能782

80.2 SAP 6.0的密码验证函数793

第81章 Oracle RDBMS797

81.1 V$VERSION表797

81.2 X$KSMLRU表805

81.3 V$TIMER表806

第82章 汇编指令与屏显字符811

82.1 EICAR811

第83章 实例演示813

83.1 10PRINT CHR$(205.5 +RND(1));:GOTO 10813

83.1.1 Trixter的42字节程序813

83.1.2 笔者对Trixter算法的改进:27字节814

83.1.3 从随机地址读取随机数814

83.1.4 其他815

83.2 曼德博集合815

83.2.1 理论816

83.2.2 demo程序820

83.2.3 笔者的改进版822

第九部分 文件分析827

第84章 基于XOR的文件加密827

84.1 Norton Guide:单字节XOR加密实例827

信息熵828

84.2 4字节XOR加密实例828

84.3 练习题830

第85章 Millenium游戏的存档文件831

第86章 Oracle的.SYM文件835

第87章 Oracle的.MSDB文件842

总结845

第十部分 其他849

第88章 npad849

第89章 修改可执行文件851

89.1 文本字符串851

89.2 x86指令851

第90章 编译器内部函数852

第91章 编译器的智能短板853

第92章 OpenMP854

92.1 MSVC856

92.2 GCC858

第93章 安腾指令860

第94章 8086的寻址方式863

第95章 基本块重排864

95.1 PGO的优化方式864

第十一部分 推荐阅读869

第96章 参考书籍869

96.1 Windows869

96.2 C/C++869

96.3 x86/x86-64869

96.4 ARM869

96.5 加密学869

第97章 博客870

97.1 Windows平台870

第98章 其他内容871

第十二部分 练习题875

第99章 初等难度练习题875

99.1 练习题1.4875

第100章 中等难度练习题876

100.1 练习题2.1876

100.1.1 Optimizing MSVC 2010 x86876

100.1.2 Optimizing MSVC 2012 x64877

100.2 练习题2.4877

100.2.1 Optimizing MSVC 2010877

100.2.2 GCC 4.4.1878

100.2.3 Optimizing Keil(ARM mode)879

100.2.4 Optimizing Keil(Thumb mode)880

100.2.5 Optimizing GCC 4.9.1(ARM64)880

100.2.6 Optimizing GCC 4.4.5(MIPS)881

100.3 练习题2.6882

100.3.1 Optimizing MSVC 2010882

100.3.2 Optimizing Keil(ARM mode)883

100.3.3 Optimizing Keil(Thumb mode)884

100.3.4 Optimizing GCC 4.9.1(ARM64)884

100.3.5 Optimizing GCC 4.4.5(MIPS)885

100.4 练习题2.1 3885

100.4.1 Optimizing MSVC 2012886

100.4.2 Keil(ARM mode)886

100.4.3 Keil(Thumb mode)886

100.4.4 Optimizing GCC 4.9.1(ARM64)886

100.4.5 Optimizing GCC 4.4.5(MIPS)887

100.5 练习题2.1 4887

100.5.1 MSVC 2012887

100.5.2 Keil(ARM mode)888

100.5.3 GCC 4.6.3 for Raspberry Pi(ARM mode)888

100.5.4 Optimizing GCC 4.9.1(ARM64)889

100.5.5 Optimizing GCC 4.4.5(MIPS)890

100.6 练习题2.1 5891

100.6.1 Optimizing MSVC 2012 x64892

100.6.2 Optimizing GCC 4.4.6x64894

100.6.3 Optimizing GCC 4.8.1 x86895

100.6.4 Keil(ARM模式):面向Cortex-R4F CPU的代码896

100.6.5 Optimizing GCC 4.9.1(ARM64)897

100.6.6 Optimizing GCC 4.4.5(MIPS)898

100.7 练习题2.1 6899

100.7.1 Optimizing MSVC 2012x64899

100.7.2 Optimizing Keil(ARM mode)899

100.7.3 Optimizing Keil(Thumb mode)900

100.7.4 Non-optimizing GCC 4.9.1(ARM64)900

100.7.5 Optimizing GCC 4.9.1(ARM64)901

100.7.6 Non-optimizing GCC 4.4.5(MIPS)904

100.8 练习题2.17905

100.9 练习题2.18905

100.10 练习题2.19905

100.11 练习题2.20905

第101章 高难度练习题906

101.1 练习题3.2906

101.2 练习题3.3906

101.3 练习题3.4906

101.4 练习题3.5906

101.5 练习题3.6907

101.6 练习题3.8907

第102章 Crackme/Keygenme908

附录A x86909

A.1 数据类型909

A.2 通用寄存器909

A.2.1 RAX/EAX/AX/AL909

A.2.2 RBX/EBX/BX/BL910

A.2.3 RCX/ECX/CX/CL910

A.2.4 RDX/EDX/DX/DL910

A.2.5 RSI/ESI/SI/SIL910

A.2.6 RDI/EDI/DI/DIL910

A.2.7 R8/R8D/R8W/R8L911

A.2.8 R9/R9D/R9W/R9L911

A.2.9 R10/R10D/R10W/R10L911

A.2.10 R11/R11D/R11W/R11L911

A.2.11 R12/R12D/R12W/R12L911

A.2.12 R13/R13D/R13W/R13L911

A.2.13 R14/R14D/R14W/R14L912

A.2.14 R15/R15D/R15W/R15L912

A.2.15 RSP/ESP/SP/SPL912

A.2.16 RBP/EBP/BP/BPL912

A.2.17 RIP/EIP/IP912

A.2.18 段地址寄存器CS/DS/ES/SS/FS/GS913

A.2.19 标识寄存器913

A.3 FPU寄存器913

A.3.1 控制字寄存器(16位)914

A.3.2 状态字寄存器(16位)914

A.3.3 标记字寄存器(16位)915

A.4 SIMD寄存器915

A.4.1 MMX寄存器915

A.4.2 SSE与AVX寄存器915

A.5 FPU调试寄存器915

A.5.1 DR6规格916

A.5.2 DR7规格916

A.6 指令917

A.6.1 指令前缀917

A.6.2 常见指令917

A.6.3 不常用的汇编指令922

A.6.4 FPU指令927

A.6.5 可屏显的汇编指令(32位)928

附录B ARM931

B.1 术语931

B.2 版本差异931

B.3 32位ARM(AArch32)931

B.3.1 通用寄存器931

B.3.2 程序状态寄存器/CPSR931

B.3.3 VFP(浮点)和NEON寄存器932

B.4 64位ARM(AArch64)932

通用寄存器932

B.5 指令933

Conditional codes速查表933

附录C MIPS934

C.1 寄存器934

C.1.1 通用寄存器GPR934

C.1.2 浮点寄存器FPR934

C.2 指令934

转移指令935

附录D 部分GCC库函数936

附录E 部分MSVC库函数937

附录F 速查表938

F.1 IDA938

F.2 OllyDbg939

F.3 MSVC选项939

F.4 GCC939

F.5 GDB940

附录G 练习题答案941

G.1 各章练习941

第3章941

第5章941

第7章941

第13章942

第14章942

第15章942

第16章942

第17章943

第18章943

第19章944

第21章945

第41章946

第50章946

G.2 初级练习题947

G2.1 练习题1.1947

G2.2 练习题1.4947

G.3 中级练习题947

G3.1 练习题2.1947

G3.2 练习题2.4948

G3.3 练习题2.6949

G3.4 练习题2.13949

G3.5 练习题2.14949

G3.6 练习题2.15949

G3.7 练习题2.16950

G3.8 练习题2.17950

G3.9 练习题2.18950

G3.10 练习题2.19950

G3.11 练习题2.20950

G.4 高难度练习题950

G4.1 练习题3.2950

G4.2 练习题3.3950

G4.3 练习题3.4950

G4.4 练习题3.5950

G4.5 练习题3.6951

G4.6 练习题3.8951

G.5 其他练习题951

G5.1 “扫雷(Windows XP)”951

参考文献952

热门推荐