{{sellerTotalView > 1 ? __("sellers", {number: sellerTotalView}) : __("seller", {number: sellerTotalView}) }}, {{numTotalView > 1 ? __("items", {number: numTotalView}) : __("item", {number: numTotalView}) }}
免运费
Yami

Nickname

请告诉我们怎么更好地称呼你

更新你的名字
账户 订单 收藏
{{ inviteNavTitle }}
退出登录

切换配送区域

不同区域的库存和配送时效可能存在差异.

历史邮编

{{email ? __('Got it!') : __('Restock Alert')}}

我们将在商品到货后第一时间通知你。

取消
Yami

京东图书

逆向工程核心原理

{{buttonTypePin == 3 ? __("Scan to view more PinGo") : __("Scan to start")}}

逆向工程核心原理

{{__(":people-members", {'people': item.limit_people_count})}} {{ itemCurrency }}{{ item.valid_price }} {{ itemCurrency }}{{ item.invalid_price }} {{ itemDiscount }}
后结束
{{ itemCurrency }}{{ item.valid_price }}
{{ itemCurrency }}{{ priceFormat(item.valid_price / item.bundle_specification) }}/{{ item.unit }}
{{ itemDiscount }}
{{ itemCurrency }}{{ item.valid_price }} {{ itemCurrency }}{{ priceFormat(item.valid_price / item.bundle_specification) }}/{{ item.unit }} {{ itemCurrency }}{{ item.invalid_price }} {{itemDiscount}}
{{ itemCurrency }}{{ item.valid_price }}
后结束促销
后开始秒杀 后结束秒杀
{{ getSeckillDesc(item.seckill_data) }}
{{ __( "Pay with Gift Card to get sale price: :itemCurrency:price", { 'itemCurrency' : itemCurrency, 'price' : (item.giftcard_price ? priceFormat(item.giftcard_price) : '0.00') } ) }} ({{ itemCurrency }}{{ priceFormat(item.giftcard_price / item.bundle_specification) }}/{{ item.unit }}) 详情
商品有效期

已下架

当前地址无法配送
已售完

商品描述

展开全部描述
编辑推荐

韩国逆向分析领域龙头之作!
逆向分析师必知核心原理大全!
《逆向工程核心原理》集中讲解逆向分析技术及其操作原理,不仅通过通俗易懂的语言介绍了每项技术,更通过丰富的示例使读者彻底掌握核心部分的原理。阅读此书不仅可以为逆向分析打下坚实基础,更能够获得恒久保值的技术精髓。
想成为逆向工程研究员的读者或正在从事逆向开发工作的开发人员一定会通过本书获得很大帮助。同时,想成为安全领域专家的人也可从本书轻松起步。

内容简介

《逆向工程核心原理》十分详尽地介绍了代码逆向分析的核心原理。作者在Ahnlab 研究所工作多年,书中不仅包括其以此经验为基础亲自编写的大量代码,还包含了逆向工程研究人员必须了解的各种技术和技巧。彻底理解并切实掌握逆向工程这门技术,就能在众多IT相关领域进行拓展运用,这本《逆向工程核心原理》就是通向逆向工程大门的捷径。
想成为逆向工程研究员的读者或正在从事逆向开发工作的开发人员一定会通过《逆向工程核心原理》获得很大帮助。同时,想成为安全领域专家的人也可从《逆向工程核心原理》轻松起步。
作者简介

李承远
在AhnLab从事恶意代码分析工作,一直维护着一个逆向分析技术专业学习博客。从接触逆向分析技术开始就为其迷人魅力深深吸引,对逆向分析技术的传播及多领域应用非常关注,喜欢读书、发呆,也向往新的挑战。
www.reversecore.com
reversecore@gmail.com

武传海
擅韩语,喜计算机,有多年翻译经验,内容涉及多个领域,尤其擅长翻译各类计算机图书,已出版多部韩语译著。
QQ:768160125
jeonhae@126.com
精彩书评

★向安全技术专家迈出第一步的必选书!
最近,越来越多的人开始关心信息技术安全,但是相关领域的安全技术专家仍然十分匮乏。主要有两方面原因导致这种现象形成:一方面是因为必须做大量准备,努力学习;另一方面是因为市面上缺乏系统讲解这类内容的专业书籍。
信息技术安全领域的图书很少有讲解恶意代码分析的,本书恰好填补了这一空白。无论是刚开始学习恶意代码分析的朋友,还是从事恶意代码分析的专家,都会为本书面世而激动。
虽然读者阅读本书时需要具有基本的汇编语言知识,但是本书内容讲解非常细致,涵盖了从恶意代码分析基础知识到高级技术的全部内容,系统而有条理,语言简洁,通俗易懂,并在讲解中选配了恰当的示例程序,使内容更易理解。对于最近出现的恶意代码中的各种常用技术,本书都做了详细讲解,无论你是初学者还是分析专家,都能从中获益。
信息安全技术涉及各领域,需要知识渊博、经验丰富的专家。本书将帮你轻松迈出成为安全技术专家的第一步。
——韩昌奎,ASEC中心主任


★如果此刻你手上正捧着这本书,说明你已经被代码逆向分析的魅力深深吸引了!
对于刚开始学习代码逆向分析技术的人而言,需要学习的内容很多,这容易让人心生畏惧、止步不前。其实不需担心,本书在学习过程中给出了大量提示,各位借助这些提示可以更好地理解所讲的内容。
本书比较重视代码逆向分析者的心态引导与培养,在内容讲解上也与其他书籍不同,并不是单纯的技巧罗列,而是深刻讲解了相关技术的深层含义、技术的工作原理以及内部实现结构,这也是本书的重点所在。同时配合丰富示例,让内容变得更具体形象、更易理解,作者的良苦用心可见一斑。
你想成为代码逆向分析员吗?如果你感到困惑:“我是开发人员,难道也需要读它吗?”
——郑官真,CISCO高级研究员

目录

第一部分代码逆向技术基础
第1章关于逆向工程2
1.1逆向工程2
1.2代码逆向工程2
1.2.1逆向分析法2
1.2.2源代码、十六进制代码、汇编代码4
1.2.3 “打补丁”与“破解”5
1.3代码逆向准备5
1.3.1目标5
1.3.2激情6
1.3.3谷歌6
1.4学习逆向分析技术的禁忌6
1.4.1贪心6
1.4.2急躁7
1.5逆向分析技术的乐趣7

第2章逆向分析Hello World!程序8
2.1Hello World!程序8
2.2调试HelloWorld.exe程序9
2.2.1调试目标9
2.2.2开始调试9
2.2.3入口点10
2.2.4跟踪40270C函数10
2.2.5跟踪40104F跳转语句12
2.2.6查找main()函数12
2.3进一步熟悉调试器14
2.3.1调试器指令14
2.3.2 “大本营”15
2.3.3设置“大本营”的四种方法15
2.4快速查找指定代码的四种方法17
2.4.1代码执行法18
2.4.2字符串检索法19
2.4.3API检索法(1):在调用代码中设置断点20
2.4.4API检索法(2):在API代码中设置断点21
2.5使用“打补丁”方式修改“Hello World!”字符串23
2.5.1 “打补丁”23
2.5.2修改字符串的两种方法24
2.6小结28

第3章小端序标记法31
3.1字节序31
3.1.1大端序与小端序32
3.1.2在OllyDbg中查看小端序32

第4章IA-32寄存器基本讲解34
4.1什么是CPU寄存器34
4.2IA-32寄存器34
4.3小结40

第5章栈41
5.1栈41
5.1.1栈的特征41
5.1.2栈操作示例41

第6章分析abex’ crackme#144
6.1abex’ crackme #144
6.1.1开始调试45
6.1.2分析代码45
6.2破解47
6.3将参数压入栈47
6.4小结48

第7章栈帧49
7.1栈帧49
7.2调试示例:stackframe.exe49
7.2.1StackFrame.cpp50
7.2.2开始执行main()函数&生成栈帧51
7.2.3设置局部变量52
7.2.4add()函数参数传递与调用53
7.2.5开始执行add()函数&生成栈帧54
7.2.6设置add()函数的局部变量(x, y)55
7.2.7ADD运算55
7.2.8删除函数add()的栈帧&函数执行完毕(返回)56
7.2.9从栈中删除函数add()的参数(整理栈)57
7.2.10调用printf()函数58
7.2.11设置返回值58
7.2.12删除栈帧&main()函数终止58
7.3设置OllyDbg选项59
7.3.1Disasm选项59
7.3.2Analysis1选项60
7.4小结61

第8章abex’ crackme #262
8.1运行abex’ crackme #262
8.2Visual Basic文件的特征63
8.2.1VB专用引擎63
8.2.2本地代码和伪代码63
8.2.3事件处理程序63
8.2.4未文档化的结构体63
8.3开始调试63
8.3.1间接调用64
8.3.2RT_MainStruct结构体64
8.3.3ThunRTMain()函数65
8.4分析crackme65
8.4.1检索字符串65
8.4.2查找字符串地址66
8.4.3生成Serial的算法68
8.4.4预测代码69
8.4.5读取Name字符串的代码69
8.4.6加密循环70
8.4.7加密方法70
8.5小结72

第9章Process Explorer——最优秀的进程管理工具74
9.1Process Explorer74
9.2具体有哪些优点呢75
9.3sysinternals75

第10章函数调用约定76
10.1函数调用约定76
10.1.1cdecl76
10.1.2stdcall77
10.1.3fastcall78

第11章视频讲座79
11.1运行79
11.2分析79
11.2.1目标(1):去除消息框79
11.2.2打补丁(1):去除消息框81
11.2.3目标(2):查找注册码83
11.3小结85

第12章究竟应当如何学习代码逆向分析86
12.1逆向工程86
12.1.1任何学习都应当有目标86
12.1.2拥有积极心态86
12.1.3要感受其中的乐趣86
12.1.4让检索成为日常生活的一部分87
12.1.5最重要的是实践87
12.1.6请保持平和的心态87

第二部分PE文件格式
第13章PE文件格式90
13.1介绍90
13.2PE文件格式90
13.2.1基本结构91
13.2.2VA&RVA92
13.3PE头92
13.3.1DOS头93
13.3.2DOS存根94
13.3.3NT头94
13.3.4NT头:文件头95
13.3.5NT头:可选头97
13.3.6节区头101
13.4RVA to RAW104
13.5IAT105
13.5.1DLL105
13.5.2IMAGE_IMPORT_DESCRIPTOR107
13.5.3使用notepad.exe练习108
13.6EAT112
13.6.1IMAGE_EXPORT_DIRECTORY113
13.6.2使用kernel32.dll练习114
13.7高级PE116
13.7.1PEView.exe116
13.7.2Patched PE117
13.8小结118

第14章运行时压缩121
14.1数据压缩121
14.1.1无损压缩121
14.1.2有损压缩121
14.2运行时压缩器122
14.2.1压缩器122
14.2.2保护器123
14.3运行时压缩测试123

第15章调试UPX压缩的notepad程序127
15.1notepad.exe的EP代码127
15.2notepad_upx.exe的EP代码127
15.3跟踪UPX文件129
15.3.1OllyDbg的跟踪命令129
15.3.2循环 #1129
15.3.3循环 #2130
15.3.4循环 #3131
15.3.5循环 #4131
15.4快速查找UPX OEP的方法132
15.4.1在POPAD指令后的JMP指令处设置断点132
15.4.2在栈中设置硬件断点133
15.5小结133

第16章基址重定位表135
16.1PE重定位135
16.1.1DLL/SYS135
16.1.2EXE136
16.2PE重定位时执行的操作136
16.3PE重定位操作原理138
16.3.1基址重定位表138
16.3.2IMAGE_BASE_RELOCATION结构体139
16.3.3基址重定位表的分析方法139
16.3.4练习141

第17章从可执行文件中删除.reloc节区142
17.1.reloc节区142
17.2reloc.exe142
17.2.1删除.reloc节区头142
17.2.2删除.reloc节区143
17.2.3修改IMAGE_FILE_HEADER143
17.2.4修改IMAGE_OPTIONAL_HEADER144
17.3小结145

第18章UPack PE文件头详细分析146
18.1UPack说明146
18.2使用UPack压缩notepad.exe146
18.3使用Stud_PE工具148
18.4比较PE文件头148
18.4.1原notepad.exe的PE文件头149
18.4.2notepad_upack.exe运行时压缩的PE文件头149
18.5分析UPack的PE文件头150
18.5.1重叠文件头150
18.5.2IMAGE_FILE_HEADER.SizeOfOptionalHeader150
18.5.3IMAGE_OPTIONAL_HEADER.NumberOf-RvaAndSizes152
18.5.4IMAGE_SECTION_HEADER153
18.5.5重叠节区155
18.5.6RVA to RAW156
18.5.7导入表(IMAGE_IMPORT_DESCRIPTOR array)158
18.5.8导入地址表160
18.6小结161

第19章UPack调试? 查找OEP162
19.1OllyDbg运行错误162
19.2解码循环163
19.3设置IAT165
19.4小结166

第20章“内嵌补丁”练习167
20.1内嵌补丁167
20.2练习:Patchme168
20.3调试:查看代码流168
20.4代码结构172
20.5 “内嵌补丁”练习173
20.5.1补丁代码要设置在何处呢173
20.5.2制作补丁代码175
20.5.3执行补丁代码176
20.5.4结果确认177

第三部分DLL注入
第21章Windows消息钩取180
21.1钩子180
21.2消息钩子180
21.3SetWindowsHookEx()181
21.4键盘消息钩取练习182
21.4.1练习示例HookMain.exe182
21.4.2分析源代码185
21.5调试练习187
21.5.1调试HookMain.exe188
21.5.2调试Notepad.exe进程内的KeyHook.dll190
21.6小结192

第22章恶意键盘记录器194
22.1恶意键盘记录器的目标194
22.1.1在线游戏194
22.1.2网上银行194
22.1.3商业机密泄露194
22.2键盘记录器的种类与发展趋势195
22.3防范恶意键盘记录器195
22.4个人信息195

第23章DLL注入197
23.1DLL注入197
23.2DLL注入示例198
23.2.1改善功能与修复Bug198
23.2.2消息钩取198
23.2.3API钩取198
23.2.4其他应用程序199
23.2.5恶意代码199
23.3DLL注入的实现方法199
23.4CreateRemoteThread()199
23.4.1练习示例myhack.dll199
23.4.2分析示例源代码203
23.4.3调试方法208
23.5AppInit_DLLs210
23.5.1分析示例源码211
23.5.2练习示例myhack2.dll212
23.6SetWindowsHookEx()214
23.7小结214

第24章DLL卸载216
24.1DLL卸载的工作原理216
24.2实现DLL卸载216
24.2.1获取进程中加载的DLL信息219
24.2.2获取目标进程的句柄220
24.2.3获取FreeLibrary() API地址220
24.2.4在目标进程中运行线程220
24.3DLL卸载练习220
24.3.1复制文件及运行notepad.exe220
24.3.2注入myhack.dll221
24.3.3卸载myhack.dll222

第25章通过修改PE加载DLL224
25.1练习文件224
25.1.1TextView.exe224
25.1.2TextView_patched.exe225
25.2源代码 - myhack3.cpp227
25.2.1DllMain()227
25.2.2DownloadURL()228
25.2.3DropFile()229
25.2.4dummy()230
25.3修改TextView.exe文件的准备工作231
25.3.1修改思路231
25.3.2查看IDT是否有足够空间231
25.3.3移动IDT233
25.4修改TextView.exe235
25.4.1修改导入表的RVA值235
25.4.2删除绑定导入表235
25.4.3创建新IDT235
25.4.4设置Name、INT、IAT236
25.4.5修改IAT节区的属性值238
25.5检测验证240
25.6小结241

第26章PE Tools242
26.1PE Tools242
26.1.1进程内存转储243
26.1.2PE编辑器245
26.2小结245

第27章代码注入247
27.1代码注入247
27.2DLL注入与代码注入247
27.3练习示例249
27.3.1运行notepad.exe249
27.3.2运行CodeInjection.exe249
27.3.3弹出消息框250
27.4CodeInjection.cpp250
27.4.1main()函数251
27.4.2ThreadProc()函数251
27.4.3InjectCode()函数254
27.5代码注入调试练习256
27.5.1调试notepad.exe256
27.5.2设置OllyDbg选项256
27.5.3运行CodeInjection.exe257
27.5.4线程开始代码258
27.6小结259

第28章使用汇编语言编写注入代码260
28.1目标260
28.2汇编编程260
28.3OllyDbg的汇编命令260
28.3.1编写ThreadProc()函数262
28.3.2保存文件265
28.4编写代码注入程序266
28.4.1获取ThreadProc()函数的二进制代码266
28.4.2CodeInjection2.cpp267
28.5调试练习270
28.5.1调试notepad.exe270
28.5.2设置OllyDbg选项270
28.5.3运行CodeInjection2.exe271
28.5.4线程起始代码272
28.6详细分析272
28.6.1生成栈帧272
28.6.2THREAD_PARAM结构体指针273
28.6.3 “User32.dll”字符串274
28.6.4压入“user32.dll”字符串参数274
28.6.5调用LoadLibraryA(“user32.dll”)275
28.6.6 “MessageBoxA”字符串276
28.6.7调用GetProcAddress(hMod,“MessageBoxA”)276
28.6.8压入MessageBoxA()函数的参数 1 -MB_OK277
28.6.9压入MessageBoxA()函数的参数 2 -“ReverseCore”277
28.6.10压入MessageBoxA()函数的参数 3 -“www.reversecore.com”278
28.6.11压入MessageBoxA()函数的参数 4 -NULL279
28.6.12调用MessageBoxA()279
28.6.13设置ThreadProc()函数的返回值280
28.6.14删除栈帧及函数返回280
28.7小结280

第四部分API钩取
第29章API钩取:逆向分析之“花”282
29.1钩取282
29.2API是什么282
29.3API钩取283
29.3.1正常调用API283
29.3.2钩取API调用284
29.4技术图表284
29.4.1方法对象(是什么)285
29.4.2位置(何处)285
29.4.3技术(如何)286
29.4.4API286

第30章记事本WriteFile() API钩取288
30.1技术图表—调试技术288
30.2关于调试器的说明289
30.2.1术语289
30.2.2调试器功能289
30.2.3调试器的工作原理289
30.2.4调试事件289
30.3调试技术流程290
30.4练习291
30.5工作原理293
30.5.1栈293
30.5.2执行流295
30.5.3 “脱钩”&“钩子”295
30.6源代码分析295
30.6.1main()296
30.6.2DebugLoop()296
30.6.3EXIT_PROCESS_DEBUG_EVENT298
30.6.4CREATE_PROCESS_DEBUG_EVENT-OnCreateProcess-DebugEvent()298
30.6.5EXCEPTION_DEBUG_EVENT-OnException-DebugEvent()300

第31章关于调试器305
31.1OllyDbg305
31.2IDA Pro305
31.3WinDbg306

第32章计算器显示中文数字308
32.1技术图表308
32.2选定目标API309
32.3IAT钩取工作原理312
32.4练习示例314
32.5源代码分析316
32.5.1DllMain()316
32.5.2MySetWindowTextW()317
32.5.3hook_iat()319
32.6调试被注入的DLL文件322
32.6.1DllMain()325
32.6.2hook_iat()325
32.6.3MySetWindowTextW()327
32.7小结328

第33章隐藏进程329
33.1技术图表329
33.2API代码修改技术的原理329
33.2.1钩取之前330
33.2.2钩取之后330
33.3进程隐藏332
33.3.1进程隐藏工作原理332
33.3.2相关API332
33.3.3隐藏技术的问题333
33.4练习 #1(HideProc.exe,stealth.dll)333
33.4.1运行notepad.exe、procexp.exe、taskmgr.exe334
33.4.2运行HideProc.exe334
33.4.3确认stealth.dll注入成功334
33.4.4查看notepad.exe进程是否隐藏成功335
33.4.5取消notepad.exe进程隐藏336
33.5源代码分析336
33.5.1HideProc.cpp336
33.5.2stealth.cpp338
33.6全局API钩取344
33.6.1Kernel32.CreateProcess() API344
33.6.2Ntdll.ZwResumeThread() API345
33.7练习#2(HideProc2.exe,Stealth2.dll)345
33.7.1复制stealth2.dll文件到%SYSTEM%文件夹中345
33.7.2运行HideProc2.exe -hide346
33.7.3运行ProcExp.exe¬epad.exe346
33.7.4运行HideProc2.exe -show347
33.8源代码分析348
33.8.1HideProc2.cpp348
33.8.2stealth2.cpp348
33.9利用“热补丁”技术钩取API350
33.9.1API代码修改技术的问题350
33.9.2 “热补丁”(修改7个字节代码)350
33.10练习 #3:stealth3.dll353
33.11源代码分析353
33.12使用“热补丁”API钩取技术时需要考虑的问题356
33.13小结357

第34章高级全局API钩取:IE连接控制359
34.1目标API359
34.2IE进程结构361
34.3关于全局API钩取的概念362
34.3.1常规API钩取363
34.3.2全局API钩取363
34.4ntdll!ZwResumeThread() API364
34.5练习示例:控制IE网络连接368
34.5.1运行IE368
34.5.2注入DLL369
34.5.3创建新选项卡369
34.5.4尝试连接网站370
34.5.5卸载DLL371
34.5.6课外练习372
34.6示例源代码372
34.6.1DllMain()372
34.6.2NewInternetConnectW()373
34.6.3NewZwResumeThread()374
34.7小结375

第35章优秀分析工具的五种标准376
35.1工具376
35.2代码逆向分析工程师376
35.3优秀分析工具的五种标准376
35.3.1精简工具数量377
35.3.2工具功能简单、使用方便377
35.3.3完全掌握各种功能377
35.3.4不断升级更新377
35.3.5理解工具的核心工作原理377
35.4熟练程度的重要性377

第五部分64位&Windows内核6
第36章64位计算380
36.164位计算环境380
36.1.164位CPU380
36.1.264位OS381
36.1.3Win32 API381
36.1.4WOW64381
36.1.5练习:WOW64Test384
36.2编译64位文件385
36.2.1Microsoft Windows SDK(Software Development Kit)386
36.2.2设置Visual C++ 2010 Express环境386

第37章x64处理器389
37.1x64中新增或变更的项目389
37.1.164位389
37.1.2内存389
37.1.3通用寄存器389
37.1.4CALL/JMP指令390
37.1.5函数调用约定391
37.1.6栈 & 栈帧392
37.2练习:Stack32.exe & Stack64.exe392
37.2.1Stack32.exe392
37.2.2Stack64.exe394
37.3小结397

第38章PE32+398
38.1PE32+(PE+、PE64)398
38.1.1IMAGE_NT_HEADERS398
38.1.2IMAGE_FILE_HEADER398
38.1.3IMAGE_OPTIONAL_HEADER399
38.1.4IMAGE_THUNK_DATA401
38.1.5IMAGE_TLS_DIRECTORY403

第39章WinDbg405
39.1WinDbg405
39.1.1WinDbg的特征405
39.1.2运行WinDbg406
39.1.3内核调试407
39.1.4WinDbg基本指令409

第40章64位调试411
40.1x64环境下的调试器411
40.264位调试411
40.3PE32:WOW64Test_x86.exe413
40.3.1EP代码414
40.3.2Startup代码414
40.3.3main()函数415
40.4PE32+:WOW64Test_x64.exe416
40.4.1系统断点416
40.4.2EP代码417
40.4.3Startup代码418
40.4.4main()函数420
40.5小结423

第41章ASLR424
41.1Windows内核版本424
41.2ASLR424
41.3Visual C++424
41.4ASLR.exe425
41.4.1节区信息426
41.4.2IMAGE_FILE_HEADER\Characteristics427
41.4.3IMAGE_OPTIONAL_HEADER\DLL Characteristics428
41.5练习:删除ASLR功能428

第42章内核6中的会话430
42.1会话430
42.2会话0隔离机制432
42.3增强安全性432

第43章内核6中的DLL注入433
43.1再现DLL注入失败433
43.1.1源代码433
43.1.2注入测试435
43.2原因分析436
43.2.1调试 #1436
43.2.2调试 #2438
43.3练习:使CreateRemoteThread()正常工作440
43.3.1方法 #1:修改CreateSuspended参数值440
43.3.2方法 #2:操纵条件分支441
43.4稍作整理443
43.5InjectDll_new.exe443
43.5.1InjectDll_new.cpp443
43.5.2注入练习446

第44章InjDll.exe:DLL注入专用工具448
44.1InjDll.exe448
44.1.1使用方法448
44.1.2使用示例449
44.1.3注意事项450

第六部分高级逆向分析技术
第45章TLS回调函数452
45.1练习 #1:HelloTls.exe452
45.2TLS453
45.2.1IMAGE_DATA_DIRECTORY[9]453
45.2.2IMAGE_TLS_DIRECTORY454
45.2.3回调函数地址数组454
45.3TLS回调函数455
45.4练习 #2:TlsTest.exe456
45.4.1DLL_PROCESS_ATTACH457
45.4.2DLL_THREAD_ATTACH457
45.4.3DLL_THREAD_DETACH457
45.4.4DLL_PROCESS_DETACH457
45.5调试TLS回调函数458
45.6手工添加TLS回调函数459
45.6.1修改前的原程序460
45.6.2设计规划460
45.6.3编辑PE文件头461
45.6.4设置IMAGE_TLS_DIRECTORY结构体463
45.6.5编写TLS回调函数464
45.6.6最终完成464
45.7小结465

第46章TEB466
46.1TEB466
46.1.1TEB结构体的定义466
46.1.2TEB结构体成员466
46.1.3重要成员469
46.2TEB访问方法470
46.2.1Ntdll.NtCurrentTeb()470
46.2.2FS段寄存器471
46.3小结472

第47章PEB473
47.1PEB473
47.1.1PEB访问方法473
47.1.2PEB结构体的定义474
47.1.3PEB结构体的成员475
47.2PEB的重要成员477
47.2.1PEB.BeingDebugged478
47.2.2PEB.ImageBaseAddress478
47.2.3PEB.Ldr479
47.2.4PEB.ProcessHeap & PEB.NtGlobalFlag480
47.3小结480

第48章SEH481
48.1SEH481
48.2SEH练习示例 #1481
48.2.1正常运行481
48.2.2调试运行482
48.3OS的异常处理方法484
48.3.1正常运行时的异常处理方法484
48.3.2调试运行时的异常处理方法484
48.4异常485
48.4.1EXCEPTION_ACCESS_VIOLATION(C0000005)486
48.4.2EXCEPTION_BREAKPOINT(80000003)486
48.4.3EXCEPTION_ILLEGAL_INSTRUCTION(C000001D)488
48.4.4EXCEPTION_INT_DIVIDE_BY_ZERO(C0000094)488
48.4.5EXCEPTION_SINGLE_STEP(80000004)489
48.5SEH详细说明489
48.5.1SEH链489
48.5.2异常处理函数的定义489
48.5.3TEB.NtTib.ExceptionList491
48.5.4SEH安装方法492
48.6SEH练习示例 #2(seh.exe)492
48.6.1查看SEH链493
48.6.2添加SEH493
48.6.3发生异常494
48.6.4查看异常处理器参数494
48.6.5调试异常处理器496
48.6.6删除SEH498
48.7设置OllyDbg选项499
48.7.1忽略KERNEL32中发生的内存非法访问异常500
48.7.2向被调试者派送异常500
48.7.3其他异常处理500
48.7.4简单练习500
48.8小结501

第49章IA-32指令502
49.1IA-32指令502
49.2常用术语502
49.2.1反汇编器503
49.2.2反编译器504
49.2.3反编译简介504
49.3IA-32指令格式506
49.3.1指令前缀507
49.3.2操作码507
49.3.3ModR/M507
49.3.4SIB508
49.3.5位移508
49.3.6立即数509
49.4指令解析手册509
49.4.1下载IA-32用户手册509
49.4.2打印指令解析手册509
49.5指令解析练习510
49.5.1操作码映射510
49.5.2操作数511
49.5.3ModR/M512
49.5.4Group514
49.5.5前缀516
49.5.6双字节操作码518
49.5.7移位值&立即数519
49.5.8SIB520
49.6指令解析课外练习524
49.7小结524

第七部分反调试技术
第50章反调试技术526
50.1反调试技术526
50.1.1依赖性526
50.1.2多种反调试技术526
50.2反调试破解技术526
50.3反调试技术的分类527
50.3.1静态反调试技术528
50.3.2动态反调试技术528

第51章静态反调试技术529
51.1静态反调试的目的529
51.2PEB529
51.2.1BeingDebugged(+0x2)531
51.2.2Ldr(+0xC)531
51.2.3Process Heap(+0x18)532
51.2.4NtGlobalFlag(+0x68)533
51.2.5练习:?StaAD_PEB.exe534
51.2.6破解之法534
51.3NtQueryInformationProcess()537
51.3.1ProcessDebugPort(0x7)538
51.3.2ProcessDebugObjectHandle(0x1E)539
51.3.3ProcessDebugFlags(0x1F)539
51.3.4练习:StaAD_NtQIP.exe540
51.3.5破解之法540
51.4NtQuerySystemInformation()542
51.4.1SystemKernelDebugger-Information(0x23)544
51.4.2练习:StaAD_NtQSI.exe545
51.4.3破解之法545
51.5NtQueryObject()545
51.6ZwSetInformationThread()549
51.6.1练习:StaAD_ZwSIT.exe549
51.6.2破解之法550
51.7TLS回调函数550
51.8ETC551
51.8.1练习:StaAD_FindWindow.exe551
51.8.2破解之法551
51.9小结553

第52章动态反调试技术554
52.1动态反调试技术的目的554
52.2异常554
52.2.1SEH554
52.2.2SetUnhandledException-Filter()558
52.3Timing Check562
52.3.1时间间隔测量法562
52.3.2RDTSC563
52.4陷阱标志565
52.4.1单步执行566
52.4.2INT 2D569
52.50xCC探测572
52.5.1API断点573
52.5.2比较校验和575

第53章高级反调试技术577
53.1高级反调试技术577
53.2垃圾代码577
53.3扰乱代码对齐578
53.4加密/解密581
53.4.1简单的解码示例581
53.4.2复杂的解码示例582
53.4.3特殊情况:代码重组584
53.5Stolen Bytes(Remove OEP)584
53.6API重定向587
53.6.1原代码588
53.6.2API重定向示例 #1588
53.6.3API重定向示例#2589
53.7Debug Blocker(Self Debugging)593
53.8小结595

第八部分调试练习
第54章调试练习1:服务598
54.1服务进程的工作原理598
54.1.1服务控制器598
54.1.2服务启动过程599
54.2DebugMe1.exe示例讲解600
54.2.1安装服务600
54.2.2启动服务602
54.2.3源代码604
54.3服务进程的调试606
54.3.1问题在于SCM606
54.3.2调试器无所不能606
54.3.3常用方法606
54.4服务调试练习606
54.4.1直接调试:强制设置EIP606
54.4.2服务调试的常用方法:“附加”方式609
54.5小结615

第55章调试练习2:自我创建616
55.1自我创建616
55.2工作原理617
55.2.1创建子进程(挂起模式)617
55.2.2更改EIP618
55.2.3恢复主线程618
55.3示例程序源代码618
55.4调试练习620
55.4.1需要考虑的事项620
55.4.2JIT调试621
55.4.3DebugMe2.exe622
55.5小结626

第56章调试练习3:PE映像切换627
56.1PE映像627
56.2PE映像切换628
56.3示例程序:Fake.exe、Real.exe、DebugMe3.exe628
56.4调试1631
56.4.1Open? 输入运行参数631
56.4.2main()函数632
56.4.3SubFunc_1()634
56.4.4CreateProcess(“fake.exe”,CREATE_SUSPENDED)635
56.4.5SubFunc_2()635
56.4.6SubFunc_3()641
56.4.7ResumeThread()644
56.5调试2644
56.5.1思考645
56.5.2向EP设置无限循环645
56.6小结647

第57章调试练习4:Debug Blocker648
57.1Debug Blocker648
57.2反调试特征648
57.2.1父与子的关系649
57.2.2被调试进程不能再被其他调试器调试649
57.2.3终止调试进程的同时也终止被调试进程649
57.2.4调试器操作被调试者的代码649
57.2.5调试器处理被调试进程中发生的异常649
57.3调试练习:DebugMe4.exe650
57.4第一次调试650
57.4.1选定调试的起始位置650
57.4.2main()650
57.5第二次调试651
57.6第三次调试653
57.7第四次调试656
57.8第五次调试658
57.8.1系统断点658
57.8.2EXCEPTION_ILLEGAL_INSTRUCTION(1)659
57.8.3EXCEPTION_ILLEGAL_INSTRUCTION(2)660
57.9第六次调试661
57.9.140121D(第一个异常)661
57.9.2401299(第二个异常)665
57.10第七次调试667
57.10.1静态方法668
57.10.2动态方法669
57.11小结673

结束语674
索引676
前言/序言

本书将指引你进入美妙又刺激的代码逆向分析世界,开启一段神奇之旅!
软件逆向工程(代码逆向分析)是一种探究应用程序内部组成结构及工作原理的技术。欢迎各位来到代码逆向分析世界,经历各种神奇的冒险,迎接各种富有趣味的挑战。
不论是我们自己编写的程序,还是其他人编写的无源码程序,只要运用逆向分析技术,我们就能轻松窥探程序内部结构、掌握工作原理。灵活运用逆向分析技术可以在程序的开发与测试阶段发现Bug和漏洞,并直接修改程序文件或内存解决这些隐含的问题。而且,我们还可以借助逆向分析技术为程序添加新功能,使程序更强大。这就像是一种魔法,魅力无限。
学习逆向分析技术前并不需要准备太多。下面给各位讲讲我的经历。几年来,我一直维护着一个逆向分析技术学习博客,访客们问得最多的问题是:“究竟该怎样学习逆向分析技术?”我结合自身经验并分析了一些学习失败的案例后发现,失败的最大原因并不是学习本身的难度与要学内容的数量,而是对学习逆向技术的恐惧与忧虑——“我连C语言还不懂呢”、“一定要掌握汇编语言吗”、“OS架构我还没搞明白”、“不知道怎么用调试器”、“学完这么多内容才能真正开始学逆向分析技术啊”,以上这些担心正是迫使学习者们中途放弃的主要原因。其实,学习逆向分析技术与学习C语言、汇编语言、OS架构、调试器用法等内容是一样的。将这些内容全部掌握的人已经是专家了,当然不需要这个入门过程。
你仍对逆向分析技术一无所知?没关系,不必沮丧,这反而是件好事。因为你会在以后的学习过程中学到很多东西,会变得更聪明、更有价值,谁说这不是件好事呢?
如果你梦想成为逆向分析工程师,但不知如何入门;如果你是一名程序开发者,又对逆向分析技术非常感兴趣,那么本书将非常适合阅读。学习逆向分析技术并不像公式一样背下来就可以了,死记硬背的结果是你会不知道如何灵活运用。学习某些知识技术时,不仅要掌握其本身,还要知道它们的内部机制与工作原理,既知其然又知其所以然,这才是最重要的。所以,本书讲解相关知识与技术时,将讲解重点放在对其工作原理的分析与说明上,这将更有利于各位真正掌握它们。为什么本书非常适合作为逆向分析技术的入门书呢?以下是我的几点理由。
第一,开发与分析的经验。一名逆向分析工程师不仅要具备专业的逆向分析技术,还要具有一定的程序开发能力。我以前从事网络应用程序开发,后来开始做恶意代码分析工作,慢慢就对逆向分析技术熟悉起来。可以说,我是从程序开发者转变为逆向分析员的为数不多的人之一。程序开发与逆向分析这两项技术相辅相成、互为补充、共同发展,形成相得益彰的效果。日常工作中,它们就像一双翅膀应用于各类业务。分析程序时,人们自然就会从程序开发与逆向分析这两个角度着手。书中用到的几乎所有示例都基于我在逆向分析实践中获得的知识与经验,是我亲自开发的程序,紧扣各章主题,绝无累赘。
第二,培训与演讲的经验。我在公司慢慢有了资历,随之而来的培训、研讨会、演讲也逐渐多起来。我进行逆向分析技术培训时,面对的学员大都是初学者,这些机会非常有利于我了解他们遇到的困难与想知道的东西。所以,我一直在用心思考,如何用更易理解的方式传授要讲解的知识,这样就慢慢形成了自己特有的讲解技巧与风格。编写本书时,我又将这些培训经验应用到本书的组织结构、内容讲解、示例选择等各方面,以求将较为难懂的技术以更易懂的方式呈现给各位。
第三,丰富的沟通经验。我几年前就开设了一个逆向技术学习博客并运营至今。刚开始的想法非常简单,就是想归纳整理自己学到的逆向分析技术。后来访客越来越多,留下的问题也多起来。我感到很惊讶,之前一直以为韩国是逆向分析技术的“不毛之地”,结果关注逆向分析技术的人比我想得要多,并且他们关注的范围也非常广泛。这大大拓宽了我的视野,于是我开始访问其他逆向分析技术学习博客,接触到了更多文章与问题,慢慢了解了他们关注的部分。我在此过程中逐渐认识到,初学者们想知道的是逆向分析技术的系统的学习方法。他们入门之后迫切要学习的是专业的逆向分析技术与内部工作原理。有感于此,我就萌生了写一本系统学习逆向分析技术书的想法,就这样,在逆向分析与开发、培训、演讲、交流等经验基础上,这本逆向分析技术学习入门书诞生了。
那么,读者应该如何使用本书学习逆向分析技术呢?对此,我给出如下几点建议,供各位参考。
第一,技术书不是装饰书架的道具,它们是提高各位技术水平的工具。所以阅读时要勾画出重要部分,在书页空白处写下自己的想法与心得等。阅读时,在书页上记录相关技术、注意事项、技术优缺点、与作者的不同见解等,让它成为只属于你的书。读完这样一本逆向分析技术书后,不知不觉间就构建出自己独特的逆向分析世界,最终成为代码逆向分析专家。
第二,拥有积极乐观的心态。逆向分析是一项深奥的技术,会涉及OS底层知识。要学的内容很多,并且大部分内容需要亲自测试并确认才能最终理解。必须用积极乐观的心态对待这一过程,学习逆向技术无关聪明与否,只跟投入时间的多少有关。学习时,不要太急躁,请保持轻松的心态。
第三,不断挑战。逆向分析不尽如人意时,不要停下来,要尝试其他方法,不断挑战。要相信一定会有解决的方法,可能几年前早已有人成功过了。搜索相关资料并不断尝试,不仅能提高自身技术水平,解决问题后,心里还能感受到一种成就感。这样的成功经验一点点积累起来,自信心就会大大增强,自身的逆向分析水平也会得到明显提高。这种从经验中获得的自信会不知不觉地对逆向分析过程产生积极影响,让逆向分析往更好的方向发展。
希望本书能够帮助各位把“心愿表”上的愿望一一实现,也希望各位把本书讲解的知识、技术广泛应用到逆向分析过程中,发挥更大的作用。谢谢。
感谢
动笔容易写完难。我只身一人是无法完成本书的,写作过程中得到了很多人的关心、支持与鼓励,没有他们就不会有本书。借此机会,我向所有给予帮助的人表示最诚挚的谢意。
首先,感谢爱妻素英,谢谢你一直以来相信我、默默支持我,你的微笑是我的能量之源。还要感谢我的两个宝贝儿子浩俊、姜宪,你们的陪伴让疲劳烟消云散,让我心里始终充满幸福。还有我的父母,你们总是关心着我和我的工作。正是你们给了我战胜一切困难的勇气,衷心感谢你们。
其次,要感谢崔景哲先生,您的称赞与鼓励一直激励着我写完全书。还要感谢韩昌圭先生与郑宽镇先生,两位前辈写的推荐词使本书增色不少。我早在动笔时就嘱托二位为本书写推荐语了。请一定允许我为两位的新书写推荐词。
再次,向Insight出版社的韩基晟社长以及所有员工,特别是赵岩熹编辑表示最诚挚的谢意。他将一块粗糙的原石打磨成了珍贵的宝石,我以后写书也会无条件请他负责。
最后,对关注本书的同事、公司实习生,以及博客访客们表示感谢。你们总是热心地询问:“什么时候出书啊?”你们的关心最终促成我写完全书。还要感谢购买本书的读者们,你们的梦想与热情一直鼓舞着我。
李承远

规格参数

品牌 京东图书
品牌属地 中国
ISBN 9787115350183
著者 [韩]李承远
出版社 人民邮电出版社
印刷时间 2014-04-01
用纸 胶版纸
包装 平装
出版时间 2014-04-01
页数 679
译者 武传海
语言 中文
版次 1

免责声明

产品价格、包装、规格等信息如有调整,恕不另行通知。我们尽量做到及时更新产品信息,但请以收到实物为准。使用产品前,请始终阅读产品随附的标签、警告及说明。

查看详情
加入收藏
{{ $isZh ? coupon.coupon_name_sub : coupon.coupon_ename_sub | formatCurrency }}
{{__("Buy Directly")}} {{ itemCurrency }}{{ item.directly_price }}
数量
{{ quantity }}
{{ instockMsg }}
{{ limitText }}
{{buttonTypePin == 3 ? __("Scan to view more PinGo") : __("Scan to start")}}
由 京东图书 销售
送至
{{ __("Ship to United States only") }}
满$69免运费
正品保证

已加入购物车

继续逛逛

为你推荐

{{ item.brand_name }}

{{ item.item_name }}

{{ item.currency }}{{ item.market_price }}

{{ item.currency }}{{ item.unit_price }}

{{ item.currency }}{{ item.unit_price }}

优惠券

{{ coupon.coupon_name_new | formatCurrency }}
领取 已领取 已领完
{{ getCouponDescStr(coupon) }}
{{ coupon.use_time_desc }}
即将过期: {{ formatTime(coupon.use_end_time) }}

分享给好友

取消

亚米礼卡专享价

使用礼卡支付即可获得礼卡专享价

规则说明

礼卡专享价是部分商品拥有的特殊优惠价格;

购买礼卡专享价商品时,若在结算时使用电子礼卡抵扣支付,且礼卡余额足够支付订单中所有礼卡专享价商品的专享价总和,则可以启用礼卡专享价;

不使用礼卡支付,或礼卡余额不满足上一条所述要求时,将无法启用礼卡专享价,按照普通售价计算,但您仍然可以购买这些商品;

在购买礼卡专享价商品时,若余额不足,可以在购物车或结算页中点击“充值”按钮对礼卡进行购买和充值;

商品若拥有礼卡专享价,会显示“专享”的特殊价格标记;

如有疑问,请随时联系客服;

礼卡专享价相关规则最终解释权归亚米所有。

由 亚米 销售

服务保障

Yami 满$49免运费
Yami 无忧退换
Yami 从美国发货

配送信息

  • 美国

    标准配送 $5.99(不包含阿拉斯加,夏威夷),最终价满$49免运费

    本地配送$5.99(加州,纽约州,新泽西,麻省和宾夕法尼亚,以上州部分地区);最终价满$49免运费

    两日达(包含阿拉斯加夏威夷)运费$19.99起

退换政策

亚米网希望为我们的客户提供最优秀的售后服务,让所有人都能放心在亚米购物。亚米自营商品在满足退换货条件的情况下,可在收到包裹的30天之内退换商品(食品因商品质量问题7天内可退换;为了确保每位客户都能获得安全和高质量的商品,对于美妆类产品,一经开封或使用即不提供退款或退货服务,质量问题除外;其他特殊商品需联系客服咨询)。
感谢您的理解和支持。

查看详情

由 亚米 销售

亚米电子礼品卡使用规则

若购买时选择自动充值,订单完成后礼卡将自动充值到您的账户中;

若购买时选择发送邮件,订单完成后系统将自动发送卡号和密码到您填写的邮箱;

发送邮件时,任何用户均可使用邮件中的卡号密码进行礼卡充值,请妥善保管邮件信息。

如接收邮件遇到问题,请联系客服处理;

发送邮件时,若礼卡没有被兑换,可以补发邮件。若已经被其他用户兑换,则无法补偿;

亚米网电子礼卡可用于购买自营或第三方商品;

亚米网电子礼卡没有有效期限制,长期有效;

亚米网电子礼卡的金额,可分多次使用;

亚米网电子礼卡业务规则,最终解释权归亚米网所有。

退换政策

已消费的电子礼卡不支持退款。

京东图书 销售

服务保障

Yami 满$49免运费
Yami 最优售后
Yami 美国本土发货

配送信息

  • 美国

    标准配送 $5.99(不包含阿拉斯加,夏威夷),最终价满$49免运费

    本地配送$5.99(加州,纽约州,新泽西,麻省和宾夕法尼亚,以上州部分地区);最终价满$49免运费

    两日达(包含阿拉斯加夏威夷)运费$19.99起

退换政策

提供30天内退还保障。产品需全新未使用原包装内,并附有购买凭据。产品质量问题、或错发漏发等,由商家造成的失误,将进行补发,或退款处理。其它原因需退货费用由客户自行承担。

由 京东图书 销售

服务保障

Yami 跨店满$69免运费
Yami 30天退换保障

亚米-中国集运仓

由亚米从中国精选并集合各大优秀店铺的商品至亚米中国整合中心,合并包裹后将一次合包跨国邮寄至您的地址。跨店铺包邮门槛低至$69。您将在多商家集合提供的广泛选品中选购商品,轻松享受跨店铺包邮后的低邮费。

退换政策

提供30天内退换保障。产品需在全新未使用的原包装内,并附有购买凭据。产品质量问题、错发、或漏发等由商家造成的失误,将进行退款处理。其它原因造成的退换货邮费客户将需要自行承担。由于所有商品均长途跋涉,偶有简易外包压磨等但不涉及内部质量问题者,不予退换。

配送信息

亚米中国集运 Consolidated Shipping 运费$9.99(订单满$69 包邮)

下单后2个工作日中国商家发货,所有包裹抵达亚米中国整合中心(除特别情况及中国境内个别法定节假日外)会合并包裹后通过UPS发往美国。UPS从中国发货后到美国境内的平均时间为10个工作日左右,根据直发单号可随时跟踪查询。受疫情影响,目前物流可能延迟5天左右。包裹需要客人签收。如未签收,客人须承担包裹丢失风险。

由 京东图书 销售

服务保障

满$69免运费
正品保证

配送信息

Yami Consolidated Shipping 运费$9.99(订单满$69包邮)


下单后1-2个工作日内发货。 物流时效预计7-15个工作日。 如遇清关,交货时间将延长3-7天。 最终收货日期以邮政公司信息为准。

积分规则

不参加任何折扣活动以及亚米会员积分制度。

退换政策

提供30天内退还保障。产品需全新未使用原包装内,并附有购买凭据。产品质量问题、或错发漏发等,由商家造成的失误,将进行补发,或退款处理。其它原因需退货费用由客户自行承担。

Yami

下载亚米应用

返回顶部

为你推荐

品牌故事

京东图书

为您推荐

Yami
欣葉
2种选择
欣叶 御大福 芋头麻薯 180g

周销量 600+

$1.66 $1.99 83折
Yami
欣葉
2种选择
欣叶 御大福 芋头麻薯 180g

周销量 600+

$1.66 $1.99 83折
Yami
欣葉
2种选择
欣叶 御大福 芋头麻薯 180g

周销量 600+

$1.66 $1.99 83折
Yami
欣葉
2种选择
欣叶 御大福 芋头麻薯 180g

周销量 600+

$1.66 $1.99 83折
Yami
欣葉
2种选择
欣叶 御大福 芋头麻薯 180g

周销量 600+

$1.66 $1.99 83折
Yami
欣葉
2种选择
欣叶 御大福 芋头麻薯 180g

周销量 600+

$1.66 $1.99 83折

评论{{'('+ commentList.posts_count + ')'}}

分享你的感受,帮助更多用户做出选择。

写评论
{{ totalRating }} 写评论
  • {{i}}星

    {{i}}星

    {{ parseInt(commentRatingList[i]) }}%

Yami Yami
{{ comment.user_name }}

{{ showTranslate(comment) }}收起

{{ strLimit(comment,800) }}查看全部

Show Original

{{ comment.content }}

Yami
查看更多

{{ formatTime(comment.in_dtm) }} 已购买 {{groupData}}

{{ comment.likes_count }} {{ comment.likes_count }} {{ comment.reply_count }} {{comment.in_user==uid ? __('Delete') : __('Report')}}
Yami Yami
{{ comment.user_name }}

{{ showTranslate(comment) }}收起

{{ strLimit(comment,800) }}查看全部

Show Original

{{ comment.content }}

Yami
查看更多

{{ formatTime(comment.in_dtm) }} 已购买 {{groupData}}

{{ comment.likes_count }} {{ comment.likes_count }} {{ comment.reply_count }} {{comment.in_user==uid ? __('Delete') : __('Report')}}

暂无符合条件的评论

评论详情

Yami Yami

{{ showTranslate(commentDetails) }}收起

{{ strLimit(commentDetails,800) }}查看全部

Show Original

{{ commentDetails.content }}

Yami
查看更多

{{ formatTime(commentDetails.in_dtm) }} 已购买 {{groupData}}

{{ commentDetails.likes_count }} {{ commentDetails.likes_count }} {{ commentDetails.reply_count }} {{commentDetails.in_user==uid ? __('Delete') : __('Report')}}

请输入内容

回复{{'(' + replyList.length + ')'}}

Yami Yami

{{ showTranslate(reply) }}收起

{{ strLimit(reply,800) }}查看全部

Show Original

{{ reply.reply_content }}

{{ formatTime(reply.reply_in_dtm) }}

{{ reply.reply_likes_count }} {{ reply.reply_likes_count }} {{ reply.reply_reply_count }} {{reply.reply_in_user==uid ? __('Delete') : __('Report')}}

请输入内容

取消

End

发表评论
商品评分

请输入评论

  • 一个好的昵称,会让你的评论更受欢迎!
  • 修改了这里的昵称,个人资料中的昵称也将被修改。
感谢你的评论
你的好评可以帮助我们的社区发现更好的亚洲商品。

举报

取消

确认删除该评论吗?

取消

历史浏览

品牌故事

京东图书