首页
社区
课程
招聘
[五年一剑]看雪论坛鼎力打造---《加密与解密(第三版)》正式出版[附:网购地址]
发表于: 2008-6-7 22:40 811322

[五年一剑]看雪论坛鼎力打造---《加密与解密(第三版)》正式出版[附:网购地址]

2008-6-7 22:40
811322


图书进展

2008.6.6 印刷厂印刷中……
2008.6.18 样书己出,下周即可批量上市(注:样书是出版社检查使用,没问题即签单批量印刷)
2008.6.27 装订厂被水淹了,要延时一段时间才能批量上市
2008.7.01 开始陆续发货
2008.7.02 互动出版网上架首日销售即突破400册!

网上书店

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 0
支持
分享
最新回复 (719)
雪    币: 50161
活跃值: (20610)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
2
所需要的预备知识

在阅读本书前,读者需要如下基础知识:

1.汇编语言(必须掌握)
读者应该对汇编语言有大致的了解。这方面的书籍品种很多,如《IBM PC汇编语言程序设计》,《王爽汇编》等,虽然大多数书以DOS汇编为讲解平台,但对理解汇编指令功能依然有益。

2.C编程语言(可选)
并不是必须的,但读者如果熟悉和了解C语言对阅读本书是很有帮助的。

3.Win32编程(可选)
建议掌握一些Win32编程,不论研究加密与解密,还是编程,都应该了解Win32编程。Win32编程是API方式的Windows程序设计,学习Windows API能使读者更深入地了解Windows工作方式。此类书籍推荐您阅读Charles Petzold所著的《Windows程序设计》,该书堪称经典之作,它以C语言为讲解平台。

希望准备学习加密与解密的朋友,先花点时间掌握这方面的知识,对自己的学习大有帮助。
2008-6-7 22:45
0
雪    币: 50161
活跃值: (20610)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
3
图书信息

出版发行:电子工业出版社
开 本:1194×889 1/16 [I](说明:现国内外纸张规格分大度(1194×889)和正度(1092×787)开切,一般书用的是1092×787)[/I]
页 码:544
价 格: ¥59.00元
字 数:1018千字
出版日期:2008-06


看雪软件安全图书

看雪学院网站创建于2000年,一直遵循纯技术主题的发展策略,不但在行业中树立了令人尊敬的专业形象,更使一大批专业人士和专家聚集在这里,形成了一个技术交流的网上家园,已经成为中国软件安全领域公认的最权威的技术站点。正是由于这个优势,看雪网站组织相关技术领域的朋友撰写安全相关的图书。欢迎有志于展示自己才华和实力的朋友一起参与进来。
目前这套系列图书有《加密与解密(第三版)》,《0day安全:漏洞分析技术》,《.net的安全研究》等。


封面




内容简介

本书以加密与解密为切入点,讲述了软件安全领域许多基础知识和技能,如调试技能、逆向分析、加密保护、外壳开发、虚拟机设计等。读者在掌握本书的内容,很容易在漏洞分析、安全编程、病毒分析、软件保护等领域扩展,这些知识点都是相互的,彼此联系。国内高校对软件安全这块领域教育重视程度还不够,许多方面还是空白,而近年来社会和企业对软件安全技术人才需求逐年上升。从就业角度来说,掌握这方面技术,可以提高自身的职场竞争能力;从个人成长角度来说,研究软件安全技术有助于掌握许多系统底层知识,是提升职业技能的重要途径。。作为一名合格的程序员,除了掌握需求分析,设计模式等,如能掌握一些系统底层知识,熟悉整个系统的底层结构,对自己的工作必将获益良多。
本书可以作为大中专学校或培训机构的软件安全辅助教材,是安全技术爱好者、调试人员、程序开发人员不可多得的一本好书。


出版发行:电子工业出版社
开 本:889×1194 1/16
印张:
字数: 千字
印 次:2008年6月第1次印刷
定 价:

历史回顾

2001年9月,《加密与解密(第一版)》
2002年7月,《加密与解密(第一版)》繁体版
2003年6月,《加密与解密(第二版)》
2004年6月,《加密与解密(第二版)》繁体版
2008年6月, 自第二版以来,间隔年,《加密与解密(第三版)》正式出版











获奖




上传的附件:
2008-6-7 22:46
0
雪    币: 50161
活跃值: (20610)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
4
前    言

  软件安全是信息安全领域的重要内容,涉及到软件相关的加密、解密、逆向分析、漏洞分析、安全编程以及病毒分析等。目前,国内高校对软件安全教育重视程度不够,许多方面还是空白。随着互联网应用的普及和企业信息化程度的不断提升,社会和企业对软件安全技术人才需求逐年上升,在计算机病毒查杀、网游安全、网络安全、个人信息安全等方面人才缺口很大,相关职位待遇较高。从就业角度来看,掌握软件安全相关知识和技能,不但可以提高自身的职场竞争能力,而且有机会发挥更大的个人潜力,获得满意的薪酬;从个人成长方面来说,研究软件安全技术有助于掌握许多系统底层知识,是提升职业技能的重要途径。作为一名合格的程序员,除了掌握需求分析、设计模式等,如能掌握一些系统底层知识,熟悉整个系统的底层结构,对自己的工作必将获益良多。

  本书以软件加密与解密为切入点,讲述了软件安全领域相关基础知识和技能。读者在阅读了本书的内容后,很容易在漏洞分析、安全编程、病毒分析等领域得到扩展。这些知识点的相互关联性,将促使读者开阔思路,使所学融会贯通,领悟更多的学习方法,提升自身学习能力。

  本书是《加密解密》的第三版,此书今天能够与读者见面,完全是广大读者的热情和鼓舞带来的成果,作者深表谢意。

关于看雪学院

  本书作者是软件安全主题网站——“看雪学院”的站长。看雪软件安全网站(www.pediy.com)由kanxue(作者网名)创建于2000年。网站历经8年多的发展,脱颖而出,凭借自身实力,已经成为中国软件安全领域公认的最权威的技术站点,影响深远。

  2000年初,笔者想找一些研究软件加解密的朋友交流一下,但十分令人遗憾的是,那时国内这方面的技术资料很缺乏,不成系统,大家的交流也十分有限。因此,笔者自己建立了一个主页“看雪学院”,期望与兴趣相投的朋友共同探讨加密与解密的知识。当初这个简单的网站,就是今天看雪软件安全网站的雏形,并且是当时国内唯一从技术角度研究软件加解密的站点。很短的时间,这个站点就获得了大家的认同,并在广大网友的支持下,健康地成长起来。随着我们的努力,网站推出的软件调试论坛逐渐成为国内知名度最高的软件安全论坛,吸引了众多高手。

  本着知识共享,一切免费的建站宗旨,看雪软件安全网站汇聚了大量高水平的技术文章,至今为止原创了数千余篇精华文章,极大地推动了国内软件安全技术的发展。2007年论坛改名为看雪软件安全论坛,论坛在保持已有的软件加密与解密研究方面外,在漏洞分析、系统底层、病毒分析、Rootkit等技术领域进行全面扩展,逐步发展为信息安全的综合服务网站。

  多年来,看雪软件安全网站一直遵循纯技术的发展策略,不但在行业中树立了令人尊敬的专业形象,更使一大批专业人士和专家聚集在这里,形成了一个技术交流的网上家园,带动了大批对软件安全感兴趣的网友加入进来,构建起了一个围绕软件安全主题的活跃的大社区,历久弥新。正是看到这种技术气氛,不少知名的公司都很关注论坛技术人才,如微软公司信息安全部门、珠海金山毒霸公司、深圳腾讯公司、360安全中心、启明星辰以及部分网游公司等。

  为了推进软件安全技术为社会和企业服务的理念,我们正在努力提升看雪网站的社会作用和价值,从而为关注信息安全的大众,提供更好的服务和技术产品。

  看雪软件安全网站,汇聚了许多志趣相投的朋友,经历了风风雨雨的8年,一直走到今天实属不易。作为网站站长和此书的作者,本人在此由衷地感谢所有关心和支持我们的共同事业,参与共同发展的朋友们!每到网站最困难的时候,是你们伸出无私的援助之手,才让网站渡过了一个个难关,能有今天的大好局面!在此特别鸣谢以下朋友和机构的大力支持:

海城金航网络科技有限公司阿男为网站提供网站空间
雅联网络服务有限责任公司李智勇为论坛提供独立服务器
南京慧速科技发展有限公司刘小荣为论坛提供独立服务器
感谢陈超达为服务器安全维护所做的大量工作

本书的缘起

  当今的信息社会里,安全技术越来越重要了,如何普及软件安全知识是作者始终关注的一个大问题。正是为了更好地将软件安全知识普及到社会各个领域的愿望,促成了本书的问世。

  依托看雪学院的技术背景,由作者主编和主导的看雪软件安全系列书籍,目前己出版发行了《加密与解密——软件保护技术及完全解决方案》(简体版,繁体版)、《加密与解密(第二版)》(简体版,繁体版)、《软件加密技术内幕》等书籍;基于电子资料的形式,历年发行的《看雪论坛精华》被众多网站转载,保守计算,其下载量已经超过数百万份,极大地推动了国内软件安全技术的发展。
      
  这是一本很难写的书,因为2000年时,软件安全是一个全新的领域。从Windows 95面世以来的6年内,市面上没有一本这方面的书,网上也缺乏相关资料。为了填补国内Windows平台上加密与解密书籍的空白,作者与看雪论坛的一流好手努力合作,克服种种困难,于2001年9月推出了国内第一本全面介绍Windows平台下软件加密与解密技术的书籍,这就是本书的第一版《加密与解密——软件保护技术及完全解决方案》。

  在第一版中,我们试图从软件加密和解密这两个方面对当今流行的软件保护技术进行分析。希望读者看过此书之后,能够对各种流行的软件保护与破解技术有所了解。

  第一版一面世就得到了广大读者的喜爱和认可,获得了2002年全国优秀畅销书奖(科技类)!在全国很多计算机专业书店获得了名列前茅的销售业绩,而且一年来在著名的华储网销售排行中都被排在前几名内。次年,本书在台湾发行了繁体版,得到了台湾读者的热烈欢迎。


  
  2003年6月以本书第一版为基础,完成了本书的第二版《加密与解密》。
笔者从2004年开始第三版的更新准备工作,这个版本编写时间比较长,前后用了四年多的时间才得已完稿。这是所有参与者共同的努力,是他们把自己才华中最精彩部分展现给大家了。

  现在读者看到的这本500多页的图书,几乎包含了当今Windows 32位环境下软件保护技术的绝大部分内容,从基本的跟踪调试到深层的拆解脱壳;从浅显的分析注册到中高级软件保护与分析,其跨度之广、内容之深,国内至今尚无同类出版物能与之比肩。

第三版的变化

  第三版是在《加密与解密》第二版与《软件加密技术内幕》两本书的基础上完成的,删除了第二版中的过时内容,将《软件加密技术内幕》一些知识点补充融合进来,结构更加合理。

1.讲解通俗,突出基础
本书加强了基础部分的篇幅,系统讲解软件逆向的整个基本流程,包括动态分析、静态分析,以及逆向分析的基础知识。比如重点讲解了逆向必备工具OllyDbg和IDA的用法,并详细讲述逆向分析的基础知识,初学者通过相关几章的学习,可以轻松入门。

2.案例丰富,覆盖面广
书中提供了大量的案例分析,方便读者理论与实践相结合。通过实际操作,提高读者的调试分析能力。

3.加强了密码学算法
密码学算法越来越多地应用在软件保护领域,调试软件必须对比较知名的密码学算法有一定的了解。“加密算法”这一章,讲解了常见密码学算法的应用。

4.新增.Net技术
随着微软.Net平台的推广,越来越多的开发者开始关注.Net程序的安全。.Net这章向读者普及了.Net安全的基本知识。

5.加强脱壳基础知识的篇幅
脱壳一章的结构和内容规划,参考了大量的建议,组织更加合理,完全为脱壳新手量身定做。

6.软件保护技术实施
相关章节详细研究了大量极具商业价值的保护技术,包括反跟踪技术、外壳编写基础、虚拟机的设计等,读者完全可以将这些技术应用到自己软件保护之中去。

7.二次开发与补丁技术
“代码的二次开发”一章中讲解如何在没有源码的情况下,扩充程序功能,打造开发接口;“补丁技术”一章讲解如何自己编程实现内存补丁或内存注册机。

本书预备知识

  在阅读本书前,读者应该对汇编语言有大致的了解。汇编语言是大学计算机的必修课,这方面的书籍品种很多,如《IBM PC汇编语言程序设计》,虽然大多数书以DOS汇编为讲解平台,但对理解汇编指令功能依然有益。

  读者如果熟悉和了解C语言对阅读本书是很有帮助的。

  建议掌握一些Win32编程,不论研究加密与解密,还是编程,都应该了解Win32编程。Win32编程是API方式的Windows程序设计,学习Windows API能使读者更深入地了解Windows工作方式。此类书籍推荐您阅读Charles Petzold所著的《Windows程序设计》,该书堪称经典之作,它以C语言为讲解平台。

  到此为止,作者将不再假设你已经具有任何加解密的经验了。

适合的读者

本书适合以下读者:
 软件安全技术相关工作者:本书是软件安全研究的一本不错的技术字典;
 对调试技术感兴趣的读者:提高读者的调试技能,增强软件的质量;
 对软件保护感兴趣的软件开发人员:更好地保护你的作品;
 大中专在校学生:通过本书掌握的相关知识和技能,将使你获得职场竞争的秘密武器;
 其他:关注个人信息安全、计算机安全技术,并且想了解技术内幕的朋友,可以从中获得答案。

内容导读





特别致谢

首先真诚感谢我的父母、妻子、女儿对我的大力支持,使得我顺利完成此书的编写!我所有的荣耀都属于你们。
谨此对电子工业出版社博文视点公司所有相关人员致以真诚的谢意!
特别感谢电子工业出版社博文视点公司总经理郭立所做的大量工作!
特别感谢上海盛大网络发展有限公司徐海峡、王峰、刘庆民、蒋渭华、李明、张子雁、史昕峰、彭伟、张静盛等对本书的大力支持!
特别感谢微软公司大中华区首席安全官江明灶和微软的战略安全架构专家裔云天对本书的支持!
特别感谢珠海金山毒霸事业部陈勇、赵闽的技术支持!
特别感谢看雪软件安全论坛核心管理团队CCDebuger、Ivanov、riijj、michael的支持!
特别感谢看雪软件安全论坛各版主及各技术小组成员,对本书的大力支持!他们是:
(1)北极星2003、笨笨雄、crackabcer、cnbragon、linhanshi、LOVE、monkeycz、逍遥风、小虾、zmworm
(2)软件调试小组:aker、hawking、elance、theOcrat
(3)虚拟机技术小组:bughoho、linxer、wangdell、Isaiah
(4)外壳开发小组:forgot、dummy、bithaha
(5)工具开发小组:doskey、netsowell、freecat、wak、menting
(6)编程技术小组:北极星2003、没有风、CCDeath、Combojiang、Sislcb
(7)PTG翻译小组:arhat、thinkSJ、kkbing、aalloverred、月中人、alpsdew、jdxyw、Jhlqb、mjahuolong
(8).Net小组:tankaiha、backer、dreaman、inraining、kkbing、lccracker、oep1、rick、slan、tracky、 菩提!、MegaX
感谢CCDebuger对“第2章  动态分析技术”和“第13章  脱壳技术”校对!
感谢gzgzlxg对“第3章  静态分析技术”提出的修正和补充意见!
感谢zmworm对工具IDA使用的补充建议!
感谢Intel公司中国企业应用技术支持部的段夕华对“第4章 逆向分析技术”提出的宝贵修正意见!
感谢WiNrOOt翻译的www.datarescue.com 提供的IDA简易教程,IDA部分参考了一下!
感谢riijj为“5.6 网络验证”一节提供的实例!
感谢cnbragon参与的“第6章  加密算法”!
感谢cyclotron参与的“8.3 伪编译”!
感谢tankaiha参与的“第9章  .Net平台加解密”!
感谢Hume对“第11章  结构化异常处理”提供的技术支持!
感谢DiKeN参与的“13.10 静态脱壳”!
感谢softworm参与的“13.9.2 Themida的SDK分析”!
感谢forgot参与的“14.2.4 简单的多态变形技术”、“第15章  反跟踪技术”!
感谢Hying参与的“第16章  外壳编写基础”!
感谢bughoho参与的“第17章  虚拟机的设计”!
感谢afanty参与的“14.1 防范算法求逆”!
感谢并参考老罗(www.luocong.com)“矛与盾的较量——CRC实践篇”!
感谢Lenus在内存Dump和内存断点方面给予的技术支持!
感谢TiANWEi翻译的SoftICE手册!
感谢wynney签名制作帮助!
感谢skylly为脱壳一章提供的脚本制作的技术支持!
感谢hnhuqiong提供的ODbgScript脚本教学!
感谢linhansh在工具方面提供的帮助!
感谢VolX为本书配套光盘映像文件提供的Aspr2.XX_unpacker.osc脚本!
感谢CoDe_Inject对“18.2.4 DLL劫持技术”一节提供的帮助!
感谢武汉科锐软件培训中心(www.51asm.com )Backer为“18.2.4 DLL劫持技术”提供lpk.cpp!
感谢frozenrain,jero,mocha,NWMonster,petnt,sudami,tankaiha,wynney,XPoy,王清,小虾等朋友为术语表所做的工作!
感谢Sun Bird,JoJo,kvllz等人对本书的大力支持!
感谢fonge等诸多看雪论坛会员持续一年多来的发帖签名支持新书!
同时,也要感谢那些共同参与《加密与解密》(第一、二版)、《软件加密技术内幕》组稿的看雪软件安全论坛的众多一流好手,是他们的参与和奉献才让此书得以顺利完成。
这次的第三版改动较大,参考引用了如下朋友在《加密与解密》(第一、二版)中的文章:
(1)Blowfish在第一版参与的“第5章  软件保护技术”;
(2)Fisheep参与的“浮点指令小结”和“信息隐藏技术”;
(3)吴朝相(http://www.souxin.com)参与的“认识壳”;
(4)mr.wei参与的“DeDe用法”;
(5)感谢pll621在扩展PE功能开拓性的研究。
(6)娃娃(王凌迪)提供的“MD5算法”资料。
参考并引用了如下朋友在《软件加密技术内幕》中的文章:
(1)Hying的Anti_Dump;
(2)Hume 的“第4章  Windows下的异常处理”;
(3)王勇的“编写PE分析工具”;
(4)罗翼的“3.3 利用调试API制作内存补丁”;
(5)郭春杨的“在Visual C++中使用内联汇编”;
(6)Ljtt参与的“花指令”、“SMC技术实现”、“壳的加载过程”;
(7)dREAMtHEATER翻译的Matt Pietrek  An In-Depth Look into the Win32 Portable Executable File Format。

  在此,还要感谢看雪软件安全论坛其他朋友的支持和帮助!是你们提供的帮助,才使得我能够完成此书。如果以上未提及对您的谢意,在此,我表示由衷的感谢!

反馈信息
  我们非常希望能够了解读者对本书的看法。如果您有什么问题或自己的学习心得,欢迎发到看雪软件安全网站——看雪学院。

技术支持:http://www.pediy.com

kanxue
2008.5.1于上海
上传的附件:
2008-6-7 22:46
0
雪    币: 50161
活跃值: (20610)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
5
作 者 简 介

本书由看雪软件安全网站(看雪学院)站长段钢主持编著。在本书的编写过程中,参与创作的每位作者倾力将各自擅长的专业技术毫无保留地奉献给广大读者,使得本书展现出了极具价值的丰富内容。如果读者在阅读本书后,能够感受到管窥技术奥秘带来的内心的喜悦,并愿意与大家分享这份感受,这是作者最大的愿望。

主 编:段 钢
编 委:(按章节顺序排列)
Blowfish,沈晓斌,丁益青,单海波,王勇,赵勇,唐植明,softworm,afanty,李江涛,林子深,印豪,冯典,罗翼,林小华,郭春杨

编委档案

Blowfish

看雪首席版主。经验丰富的大龄程序员。1992年上大学始接触电脑,1997年读研期间接触网络并自学加密解密技术,一发不可收拾,其时常在教育网BBS灌水。喜多方涉猎,亦能抓住一点深入钻研,对逆向分析技术尤为痴迷。多年来常在看雪论坛灌水,见证了论坛的风风雨雨,也结识了一些不错的朋友。
参与章节:
第5章  5.1 序列号保护方式
第14章  14.5 软件保护的若干忠告

沈晓斌

看雪核心专家团队成员。看雪论坛ID为cnbragon,现攻读密码学专业硕士学位。最初的爱好是网络安全,进而研究软件的逆向工程,对密码学的兴趣由此而发。对密码学的各个方面都有所涉猎,尤其擅长密码学在软件保护中的应用研究。独立完成了一个加密算法库CryptoFBC。译作有《程序员密码学》。
个人主页:www.cnbragon.cn
参与章节:第6章  加密算法

丁益青

看雪技术专家。看雪论坛ID为cyclotron,复旦大学在读硕士研究生,复旦大学日月光华BBS黑客与系统安全版版主,致力于Windows环境下可执行文件的加密解密与逆向工程研究。主要作品有EmbedPE、IDT Protector、PEunLOCK等。
个人主页:cyclotron.yculblog.com
参与章节:第8章  8.3 伪编译

单海波

看雪核心专家团队成员。看雪论坛ID为tankaiha,生于六朝古都南京,硕士研究生毕业,现任某研究所工程师,工作之余好与计算机为伴。2002年接触汇编并热衷于病毒技术学习,后偶遇看雪学院,遂终日游戏于程序加密与解密,不可自拔。2006年与kanxue及坛中数位好友成立.net安全小组DST(Dotnet Reverse Team),共同探讨.net平台下的软件安全技术。
个人主页:http://vxer.cn/blog
参与章节:第9章  .Net平台加解密

王  勇

看雪技术专家。毕业于石油大学(华东)计算机科学与技术专业。擅长C/C++、ASM和驱动程序开发。对面向对象程序设计和Windows系统底层的研究有丰富的经验。很高兴这次能与各位高手一起合作,也希望能与编程爱好者及加密解密爱好者更多的交流。
主页:http://www.w-yong.com
参与章节:第10 章  10.15 编写PE分析工具

赵  勇

看雪技术专家。来自江苏江阴,计算机业余爱好者,兴趣爱好广泛。
参与章节:第13章  13.6 附加数据

唐植明

看雪技术核心权威。看雪论坛ID为DiKeN,2002年毕业于兰州大学,计算机科学与技术专业。爱好逆向工程,iPB(inside Pandora's Box)组织创始人(在这儿更是要感谢组织的兄弟姐妹们,大家团结友好,互相学习,为iPB的成功作出了巨大努力),曾在2002年编写过《加密与解密实战攻略》算法部分。
参与章节:第13章  13.10 静态脱壳

softworm

看雪技术天才。70后一代,非计算机专业的业余爱好者。1998年开始接触逆向与破解,迄今已近10年,终于达到了“知道自己不知道”的境界。感兴趣的方向包括壳、虚拟机保护、病毒引擎、Rootkit。后两项还处于只知道名字的水平,愿与有共同爱好的朋友一起学习。
E-mail:softworm2003@hotmail.com
参与章节:第13章  13.9.2 Thmedia的SDK分析

afanty

看雪技术专家。多年专业研究软件加解密技术。
参与章节:第14章  14.1 防范算法求逆

李江涛

看雪技术核心权威。看雪论坛ID为ljtt,喜欢学习编程技术,常用编程语言为VC/MASM。对PB、VFP的反编译有深入的研究,写过DePB、FoxSpy等程序。平时大多数时间都在电脑上耕作,最大的希望是能够领悟到编程的精髓,写一个自己比较满意的作品。
E-mail:shellfan@163.com
参与章节:第14章  14.2.2 SMC技术实现

林子深

看雪技术导师。看雪论坛ID为forgot,1989年生,看雪论坛外壳开发小组组长。熟悉Win32平台和80x86汇编,擅长代码的逆向,对壳的研究比较多。
E-mail:forgot@live.com
参与章节:
第12章  12.4.1 虚拟机介绍
第14章  14.2.4 简单的多态变形技术
第15章  反跟踪技术

印  豪

看雪资深技术权威。看雪论坛ID为Hying,擅长加壳技术,拥有独立创作的加密利器。
E-mail:newhying001@163.com
参与章节:第16章  外壳编写基础

冯  典

看雪技术天才。看雪论坛ID为bughoho,1990年生,来自四川,看雪论坛虚拟机开发小组组长,目前工作主要是从事逆向研究。
个人自述:记得14岁时家里买了台电脑,使我对编程有了极大的兴趣。16岁上高一时已对读书彻底不感兴趣,于是退学(现在的我才发现,我并不是对读书感兴趣,而是对教育制度的反感)。后来听了家人的意见,转读四川新华电脑学校,感受颇多,一月之后便退学,至于为什么我就不说了。17岁时,一个偶然的机会,使我对逆向有了浓厚的兴趣,并接触到看雪论坛,也认识到了kanxue。承蒙kanxue抬举,让我执笔虚拟机这一章,由于我并不是一个才高八斗的人,所以写得也没有那么的妙笔生花、鬼斧神工了。
参与章节:第17章  虚拟机的设计

罗  翼

看雪技术专家。资深程序员,由加解密知识起接触编程,对Windows底层机制有多年的研究经验。后由于工作需要,接触C++/ATL/COM等技术。现致力于研究各种Moder C++的元素的应用范围及其对降低程序复杂度所起的作用,热切关注ISO C++以及分布式计算相关内容的进展。
参与章节:
第18章  18.2.1 跨进程内存存取机制
18.2.2  Debug API机制
18.2.3 利用调试寄存器机制

林小华

看雪资深版主。看雪论坛ID为linhanshi,武汉大学电力系统及其自动化专业,『工具分区』区版主,对论坛的工具版块发展做出了重大贡献。
个人主页:http://blog.csdn.net/linhanshi
参与章节:第18章  18.4 补丁工具

郭春杨

看雪技术专家。看雪论坛ID为Yonsm,软件工程师,从事视频编解码和多媒体软件设计工作。对Windows和Windows Mobile系统有比较深入的了解。
主页:WWW.Yonsm.NET
E-mail:Yonsm@163.com
参与章节:附录B  在Visual C++中使用内联汇编
2008-6-7 22:46
0
雪    币: 50161
活跃值: (20610)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
6
目录



















上传的附件:
2008-6-7 22:47
0
雪    币: 50161
活跃值: (20610)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
7
为了降低书的成本,故本书不提供光盘,但提供光盘映像文件下载,此映像文件仅为购书者服务,下载地址详见书的前言(光盘下载部分),读者下载时,根据下载页面提示,就可获得此映像文件。

光盘映像文件目录


注意:从光盘上拷贝文件到硬盘时,要注意改变文件属性,取消“只读”属性,否则可能会出现一些奇怪的错误。

光盘:
├─Autorun.exe  ;运行仅显示书的封面,单击退出,并打开光盘目录。
├─chap01 第1章  基础知识
│  ├─1.2 Windows操作系统
│  │  ├─1.2.4 Windows 9x与Unicode
│  │  │  ├─bin
│  │  │  └─src
│  │  └─1.2.5 NT与Unicode
│  │      ├─bin
│  │      └─src
│  └─1.4 认识PE格式
├─chap02 第2章  动态分析技术
│  ├─2.1 OllyDbg调试器
│  │  ├─2.1.4 基本操作
│  │  │  ├─bin
│  │  │  │  ├─ASCII版
│  │  │  │  └─Unicode版
│  │  │  └─src
│  │  ├─2.1.5 断点
│  │  │  ├─1.INT 3断点
│  │  │  │  ├─bin
│  │  │  │  └─src
│  │  │  └─6.条件断点
│  │  ├─2.1.6 插件
│  │  │  ├─ODbgScript 入门系列
│  │  │  │  └─脚本样例
│  │  │  └─插件开发SDK
│  │  └─OllyDBG工具
│  └─2.2 SoftICE调试器
│      ├─INT3
│      ├─SoftICE中文手册
│      └─Winice.dat文件
│          ├─Windows 2000-XP
│          └─Windows9x
├─chap03 第3章  静态分析技术
│  ├─3.1 文件类型分析
│  │  ├─3.1.1 PEiD工具
│  │  └─3.1.2 FileInfo工具
│  ├─3.2 静态反汇编
│  │  ├─3.2.1 反汇编引擎
│  │  ├─3.2.12 结构体
│  │  │  ├─C头文件样例
│  │  │  └─结构体
│  │  │      ├─bin
│  │  │      └─src
│  │  ├─3.2.13 枚举类型
│  │  │  ├─bin
│  │  │  └─src
│  │  ├─3.2.15 IDC脚本
│  │  │  ├─实例1.查看输入函数
│  │  │  ├─实例2.用IDC分析加密代码
│  │  │  └─实例3.查看输出函数
│  │  ├─3.2.16 FLIRT
│  │  ├─3.2.2 IDA Pro的简介
│  │  │  └─ReverseMe
│  │  │      └─SRC
│  │  └─相关工具
│  ├─3.3 可执行文件的修改
│  │  └─HIEW
│  └─3.4 静态分析技术应用实例
│      ├─3.4.1 解密初步
│      │  ├─bin
│      │  └─src
│      ├─3.4.2 逆向工程初步
│      │  └─己修改的
│      └─习题
│          └─ReverseMe
├─chap04 第4章  逆向分析技术
│  ├─4.1 启动函数
│  │  ├─bin
│  │  └─src
│  ├─4.2 函数
│  │  ├─4.2.1 函数的识别
│  │  │  ├─bin
│  │  │  └─src
│  │  ├─4.2.2 函数的参数
│  │  │  ├─1.利用堆栈传递参数
│  │  │  └─2.利用寄存器传递参数
│  │  │      ├─fastcall
│  │  │      │  ├─bin
│  │  │      │  └─src
│  │  │      └─this指针
│  │  │          ├─bin
│  │  │          └─src
│  │  └─4.2.3 函数的返回值
│  │      ├─1.用return操作符返回值
│  │      └─2.通过参数按传引用方式返回值
│  │          ├─bin
│  │          └─src
│  ├─4.3 数据结构
│  │  ├─4.3.1 局部变量
│  │  │  ├─bin
│  │  │  └─src
│  │  ├─4.3.2 全局变量
│  │  │  ├─bin
│  │  │  └─src
│  │  └─4.3.3 数组
│  │      ├─bin
│  │      └─src
│  ├─4.4 虚函数
│  │  ├─bin
│  │  └─src
│  ├─4.5 控制语句
│  │  ├─4.5.1 IF-THEN-ELSE语句
│  │  │  ├─bin
│  │  │  └─src
│  │  ├─4.5.2 SWITCH-CASE语句
│  │  │  ├─SWITCH-CASE语句
│  │  │  │  ├─bin
│  │  │  │  └─src
│  │  │  └─SWITCH-CASE语句跳表
│  │  │      ├─bin
│  │  │      └─src
│  │  ├─4.5.4 条件设置指令
│  │  │  ├─bin
│  │  │  └─src
│  │  └─4.5.5 纯算法实现逻辑判断
│  │      ├─bin
│  │      └─src
│  ├─4.6 循环语句
│  │  ├─bin
│  │  └─src
│  └─4.7 数学运算符
│      ├─4.7.1 整数的加法和减法
│      │  ├─bin
│      │  └─src
│      ├─4.7.2 整数的乘法
│      │  ├─bin
│      │  └─src
│      └─4.7.3 整数的除法
│          ├─bin
│          └─src
├─chap05 第5章  常见的演示版保护技术
│  ├─5.1 序列号保护方式
│  │  └─5.1.4 注册机制作
│  │      ├─1.明码比较软件的攻击
│  │      │  └─KeyMake工具
│  │      │      ├─keymake
│  │      │      └─KeyMake动画教学
│  │      └─2.非明码比较
│  │          └─serial
│  │              ├─keygen
│  │              │  ├─bin
│  │              │  └─src
│  │              └─内嵌汇编的keygen
│  │                  ├─bin
│  │                  └─src
│  ├─5.2 警告(Nag)窗口
│  │  └─己修改的
│  ├─5.3 时间限制
│  │  └─5.3.3 拆解时间限制保护
│  │      └─己修改的
│  ├─5.4 菜单功能限制
│  ├─5.5 KeyFile保护
│  │  └─keygen
│  ├─5.6 网络验证
│  │  ├─bin
│  │  │  └─crack
│  │  ├─idc脚本
│  │  └─src
│  │      ├─source_client
│  │      └─source_server
│  ├─5.7 CD-Check
│  ├─5.8 只运行一个实例
│  │  ├─修改后
│  │  └─原文件
│  └─习题
├─chap06 第6章  加密算法
│  ├─6.1 单向散列算法
│  │  ├─6.1.1 MD5算法
│  │  │  ├─MD5calculator
│  │  │  │  ├─bin
│  │  │  │  └─src
│  │  │  └─MD5KeyGenMe
│  │  │      ├─KeyGen
│  │  │      │  ├─bin
│  │  │      │  └─src
│  │  │      └─MD5KeyGenMe
│  │  │          ├─bin
│  │  │          └─src
│  │  └─6.1.2 SHA算法
│  │      ├─KeyGen
│  │      │  ├─bin
│  │      │  └─src
│  │      └─SHA1KeyGenMe
│  │          ├─bin
│  │          └─src
│  ├─6.2 对称加密算法
│  │  ├─6.2.1 RC4流密码
│  │  │  ├─bin
│  │  │  └─src
│  │  ├─6.2.2 TEA算法
│  │  │  ├─KeyGen
│  │  │  │  ├─bin
│  │  │  │  └─src
│  │  │  └─TEAKeyGenMe
│  │  │      ├─bin
│  │  │      └─src
│  │  ├─6.2.3 IDEA算法
│  │  │  ├─IDEAKeyGenMe
│  │  │  │  ├─bin
│  │  │  │  └─src
│  │  │  └─KeyGen
│  │  │      ├─bin
│  │  │      └─src
│  │  ├─6.2.4 BlowFish算法
│  │  │  ├─BlowfishKGM
│  │  │  │  ├─bin
│  │  │  │  └─src
│  │  │  └─keygen
│  │  │      ├─bin
│  │  │      └─src
│  │  └─6.2.5 AES算法
│  │      ├─AESKeyGenMe
│  │      │  ├─bin
│  │      │  └─src
│  │      └─keygen
│  │          ├─bin
│  │          └─src
│  ├─6.3 公开密钥加密算法
│  │  ├─6.3.1 RSA算法
│  │  │  ├─RSAKeyGenMe
│  │  │  │  ├─KeyGen
│  │  │  │  │  ├─bin
│  │  │  │  │  └─src
│  │  │  │  └─RSAKeyGenMe
│  │  │  │      ├─bin
│  │  │  │      └─src
│  │  │  └─RSA演示
│  │  │      ├─客户端
│  │  │      │  ├─bin
│  │  │      │  └─src
│  │  │      │      └─Release
│  │  │      └─服务端
│  │  │          ├─bin
│  │  │          └─src
│  │  │              └─Release
│  │  ├─6.3.2 ElGamal公钥算法
│  │  │  ├─ElgamalKGM
│  │  │  │  ├─bin
│  │  │  │  └─src
│  │  │  └─KeyGen
│  │  │      ├─bin
│  │  │      └─src
│  │  ├─6.3.3 DSA数字签名算法
│  │  │  ├─bin
│  │  │  └─src
│  │  └─6.3.4 椭圆曲线密码编码学
│  │      ├─bin
│  │      └─src
│  ├─6.4 其他算法
│  │  ├─6.4.1 CRC32算法
│  │  └─6.4.2 Base64
│  │      └─Base64inC
│  ├─6.5 常见加密库接口及其识别
│  │  ├─6.5.1 Miracl大数运算库
│  │  │  └─MiraclStudy
│  │  │      ├─bin
│  │  │      └─src
│  │  └─6.5.2 FGInt
│  │      └─FGIntStudy
│  │          ├─bin
│  │          └─src
│  └─tools
│      ├─calculator
│      │  ├─base64
│      │  ├─BigCalc
│      │  │  ├─bigcalc
│      │  │  └─calcpro
│      │  ├─BigIntCalc_by_readyu
│      │  ├─dm_Hash Calculator
│      │  ├─PPSIQS
│      │  ├─RDLP
│      │  └─离散对数
│      │      ├─dlptool_by_figugegl
│      │      └─DLPTool_by_readyu
│      ├─DSA
│      ├─MD5
│      └─RSA
│          └─RSATool
├─chap07 第7章  Delphi程序
│  ├─Delphi 5.0
│  ├─Delphi 6.0
│  │  └─src
│  └─Delphi 7.0
│      └─模块初始化
├─chap08 第8章  Visual Basic程序
│  ├─8.2 自然编译(Native)
│  │  └─8.2.2 VB程序比较方式
│  ├─8.3 伪编译(Pcode)
│  │  ├─8.3.1 虚拟机与伪代码
│  │  │  └─2.虚拟机实例分析
│  │  ├─8.3.2 动态分析VB P-code程序
│  │  ├─8.3.4 VB P-code攻击实战
│  │  └─tools
│  └─资料
│      ├─vb4实例
│      ├─VB结构文档
│      └─运行库
│          ├─VB3.0
│          ├─VB4.0
│          ├─VB5.0
│          └─VB6.0
├─chap09 第9章  .NET平台加解密
│  ├─9.1 .net概述
│  │  └─9.1.3 第一个.net程序
│  ├─9.2 MSIL与元数据
│  │  └─9.2.2 .net下的汇编MSIL
│  ├─9.3 代码分析技术
│  │  ├─9.3.1 静态分析
│  │  ├─9.3.2 动态调试
│  │  └─9.3.3 代码修改
│  │      ├─再编译patch
│  │      └─直接修改
│  ├─9.4 代码保护技术及其逆向
│  │  ├─9.4.1 强名称
│  │  ├─9.4.2 名称混淆
│  │  │  ├─sample1042_1
│  │  │  ├─sample1042_2
│  │  │  └─sample1042_3
│  │  ├─9.4.3 流程混淆
│  │  ├─9.4.4 压缩
│  │  │  └─bsp加壳
│  │  └─9.4.5 加密
│  │      ├─CodeVeil保护
│  │      └─国外壳
│  ├─9.5 深入.net
│  │  ├─9.5.1 反射与CodeDOM
│  │  ├─9.5.2 Unmaganed API
│  │  │  ├─Debugger
│  │  │  │  └─Debuggers under .NET
│  │  │  └─Profiler
│  │  │      └─一个只监测方法参数和返回值的profiler
│  │  └─9.5.3 Rotor、MONO与.net内核
│  │      └─Mono
│  │          └─Mono.Cecil, the most powerfull tool you've never heard of
│  └─工具
│      ├─加壳
│      │  ├─bsp
│      │  ├─Sixxpack11
│      │  └─Sixxpack20
│      ├─反混淆
│      │  ├─DeFlowOb
│      │  ├─deobfuscator
│      │  ├─DOBSTR
│      │  ├─dreaman的名称反混淆工具
│      │  └─rick的反混淆工具MetaEditor
│      ├─反编译
│      │  ├─ildasm修正版
│      │  └─Reflector
│      │      └─Reflector的插件
│      ├─强名称
│      │  ├─RE Assign
│      │  ├─snreplace
│      │  └─StrongNameRemove
│      ├─文件结构与元数据
│      │  ├─asmex
│      │  ├─CFF_Explorer
│      │  └─ResourceNet2
│      ├─脱壳
│      │  └─NETUnpack
│      └─调试
├─chap10 第10章  PE文件格式
│  ├─10.10 TLS初始化
│  ├─10.12 延迟装入数据
│  ├─10.15 编写PE分析工具
│  │  └─PEInfo_example
│  │      ├─bin
│  │      └─src
│  ├─10.1~10.7 实例
│  │  ├─PE32
│  │  ├─PE32+
│  │  └─VC头文件
│  ├─10.8 基址重定位
│  ├─10.9 资源
│  └─tools
│      ├─LordPE
│      └─Stud_PE
├─chap11 第11章  结构化异常处理
│  ├─11.2 SEH相关数据结构
│  └─11.3 异常处理回调函数
│      ├─bin
│      └─src
├─chap12 第12章  专用加密软件       
│  ├─12.1 认识壳
│  │  └─12.1.2 压缩引擎
│  │      ├─aPLib
│  │      ├─JCALG1
│  │      └─LZMA
│  ├─12.2 压缩壳
│  │  ├─12.2.1 UPX
│  │  └─12.2.2 ASPack
│  ├─12.3 加密壳
│  └─12.4 虚拟机保护软件
│      └─12.4.2 VMProtect简介
│          └─SDK
├─chap13 第13章  脱壳技术
│  ├─13.10 加密壳
│  │  ├─13.10.1 ASProtect
│  │  │  ├─Emulate standard system functions
│  │  │  ├─SDK修复
│  │  │  └─VolX脚本
│  │  └─13.10.2 Thmedia
│  ├─13.2 寻找OEP
│  │  ├─13.2.1 根据跨段指令寻找OEP
│  │  │  ├─加壳后的
│  │  │  └─没加壳
│  │  └─13.2.4 根据编译语言特点找OEP
│  │      ├─Borland C++
│  │      │  ├─Borland C++ 1999
│  │      │  └─Borland C++ 5.0
│  │      ├─Delphi
│  │      │  ├─Delphi 5.0
│  │      │  ├─Delphi 6.0
│  │      │  └─Delphi 7.0
│  │      ├─GCC
│  │      │  ├─CUI(控制台用户界面)
│  │      │  └─GUI(图形用户界面)
│  │      ├─Visual Basic
│  │      │  ├─Native
│  │      │  │  └─VB 6.0
│  │      │  └─P_code
│  │      │      └─VB 6
│  │      └─Visual C++
│  │          ├─Visual C++ 6.0
│  │          ├─Visual C++ 7.0
│  │          ├─Visual C++ 8.0
│  │          └─Visual C++ 9.0
│  ├─13.3 抓取内存映像
│  │  └─13.3.2 反DUMP技术(Anti-Dump)
│  │      └─Modify_the_read_right
│  │          ├─bin
│  │          └─src
│  ├─13.4 重建输入表
│  │  ├─13.4.2 确定IAT的地址和大小
│  │  ├─13.4.3 根据IAT重建输入表
│  │  │  ├─内存Dump取的程序
│  │  │  ├─加壳后的
│  │  │  ├─没加壳
│  │  │  └─输入表己重建的程序
│  │  └─13.4.4 ImportREC重建输入表
│  │      ├─apitest
│  │      ├─RebPE
│  │      ├─TestWin
│  │      └─tools
│  ├─13.5 DLL文件脱壳
│  │  ├─ReloREC
│  │  ├─加壳的
│  │  ├─动画演示
│  │  │  ├─13.5.1 寻找OEP
│  │  │  └─13.5.4 构造重定位表
│  │  ├─没加壳
│  │  └─脱壳后
│  ├─13.6 附加数据
│  │  ├─原文件
│  │  └─脱壳后
│  ├─13.7 PE文件的优化
│  │  ├─优化后文件
│  │  └─加壳的
│  ├─13.8 压缩壳
│  │  ├─13.8.1 UPX外壳
│  │  │  ├─1.UPXPR保护
│  │  │  │  └─tools
│  │  │  └─2.手动脱UPX的壳
│  │  │      ├─原文件
│  │  │      └─脱壳后的文件
│  │  └─13.8.2 ASPack外壳
│  │      ├─原文件
│  │      ├─己加ASPack壳
│  │      └─脱壳后
│  └─13.9 静态脱壳
│      ├─13.9.1 外壳Loader的分析
│      └─13.9.2 编写静态脱壳器
│          └─unaspack10804
├─chap14 第14章  软件保护技术
│  ├─14.2 抵御静态分析
│  │  ├─14.2.1 花指令
│  │  ├─14.2.2 SMC技术实现
│  │  └─14.2.4 简单多态变形技术
│  ├─14.3 文件完整性检验
│  │  ├─14.3.1 磁盘文件校验实现
│  │  │  ├─bin
│  │  │  └─src
│  │  │      ├─add2crc32
│  │  │      │  └─Release
│  │  │      └─crc32
│  │  │          └─Release
│  │  └─14.3.3 内存映像校验
│  │      ├─1. 对整个代码数据校验
│  │      │  ├─bin
│  │      │  └─src
│  │      │      ├─add2memcrc32
│  │      │      └─memcrc32
│  │      └─2. 校验内存代码片段
│  │          ├─bin
│  │          └─src
│  └─14.4 代码与数据结合技术
│      └─codeEncrypt
│          ├─codeEncrypt
│          │  └─Release
│          └─Encrypter
│              ├─bin
│              └─src
├─chap15 第15章  反跟踪技术
│  ├─15.1 由BeingDebugged引发的蝴蝶效应
│  │  ├─15.1.1 BeingDebugged
│  │  ├─15.1.2 NtGlobalFlag
│  │  └─15.1.3 Heap Magic
│  ├─15.2 回归Native用户态的梦魇
│  │  ├─15.2.1 CheckRemoteDebuggerPresent
│  │  ├─15.2.2 ProcessDebugPort
│  │  │  └─《Windows NT 2000 Native API Reference》
│  │  ├─15.2.3 ThreadHideFromDebugger
│  │  │  └─DisableDebugEvent
│  │  │      ├─bin
│  │  │      └─src
│  │  ├─15.2.4 Debug Object
│  │  ├─15.2.5 SystemKernelDebuggerInformation
│  │  ├─15.2.6 Native API
│  │  │  └─1.认识Native API
│  │  └─15.2.7 Hook和AntiHook
│  │      ├─2. AntiHook_Splicing
│  │      │  ├─一个小花招
│  │      │  ├─如何中断Themida的MessageBox对话框
│  │      │  └─对付API-splicing的一种简单方法
│  │      └─3. 小结
│  └─15.3 真正的奥秘:小技巧一览
│      ├─15.3.1  SoftICE检测方法
│      │  ├─Back Door
│      │  │  ├─bin
│      │  │  └─src
│      │  ├─BoundsChecker后门
│      │  ├─int1
│      │  │  └─Release
│      │  ├─int41
│      │  │  └─Release
│      │  ├─MeltICE
│      │  │  └─Release
│      │  ├─NticeService
│      │  │  └─Release
│      │  └─UnhandledExceptionFilter
│      │      └─Release
│      ├─15.3.2 OllyDbg检测方法
│      │  └─6.SetUnhandledExceptionFilter方法
│      ├─15.3.3 调试器漏洞
│      ├─15.3.4 防止调试器附加
│      └─15.3.5 父进程检测
│          └─CheckParentProc
│              ├─Win 2000&XP
│              │  ├─bin
│              │  └─src
│              └─Win98& 2000&XP
│                  ├─bin
│                  └─src
├─chap16 第16章  外壳编写基础
│  └─PE-Armor_VC版
│      ├─bin
│      └─src
├─chap17 第17章  虚拟机的设计
│      └─vm.rar
├─chap18 第18章  补丁技术
│  ├─18.1 文件补丁
│  │  └─patch
│  │      ├─VC版
│  │      │  ├─bin
│  │      │  └─src
│  │      └─汇编版
│  │          ├─bin
│  │          └─src
│  ├─18.2 内存补丁
│  │  ├─18.2.1 跨进程内存存取机制
│  │  │  ├─bin
│  │  │  └─src
│  │  ├─18.2.2 Debug API机制
│  │  │  ├─bin
│  │  │  └─src
│  │  ├─18.2.3 利用调试寄存器机制
│  │  │  ├─1.利用Single Step机制
│  │  │  │  ├─bin
│  │  │  │  └─src
│  │  │  └─2.利用ntdll.ntcontinue作为跳板
│  │  │      ├─bin
│  │  │      └─src
│  │  └─18.2.4 DLL劫持技术
│  │      ├─doc
│  │      ├─lpk
│  │      │  ├─bin
│  │      │  └─src
│  │      ├─tools
│  │      ├─ws2_32
│  │      │  ├─bin
│  │      │  └─src
│  │      └─原文件
│  ├─18.3 SMC补丁技术
│  │  ├─18.3.1 单层SMC补丁技术
│  │  │  ├─SMC后的文件
│  │  │  └─原文件
│  │  └─18.3.2 多层SMC补丁技术
│  │      ├─SMC后的文件
│  │      └─原文件
│  └─18.4 补丁工具
│      ├─CodeFusion的使用
│      └─tools
│          ├─CodeFusion
│          └─dup
├─chap19 第19章  代码的二次开发
│  ├─19.2 增加空间
│  │  ├─tools
│  │  │  └─CFF_Explorer
│  │  ├─原文件
│  │  │  └─pediy
│  │  │      ├─bin
│  │  │      └─src
│  │  └─增加区块
│  ├─19.3 获得函数的调用
│  │  ├─19.3.1 增加输入函数
│  │  │  ├─修改后
│  │  │  └─原文件
│  │  └─19.3.2 显式链接调用DLL
│  │      ├─修改后
│  │      └─原文件
│  ├─19.4 代码的重定位
│  │  ├─19.4.1 修复重定位表
│  │  │  ├─修改后
│  │  │  └─原文件
│  │  └─19.4.2 代码的自定位技术
│  │      ├─修改后
│  │      └─原文件
│  ├─19.5 增加输出函数
│  │  ├─原文件
│  │  └─增加输出函数
│  ├─19.6 消息循环
│  │  └─pediy
│  │      ├─bin
│  │      └─src
│  ├─19.7 修改WndProc扩充功能
│  │  ├─修改后的
│  │  └─原文件
│  └─19.8 增加接口
│      ├─19.8.1 用DLL增加功能
│      │  ├─原文件
│      │  └─用DLL增加功能
│      │      ├─bin
│      │      └─src
│      └─19.8.2 扩展消息循环
│          ├─修改后的程序
│          │  ├─bin
│          │  └─src
│          ├─原程序
│          └─增加菜单
├─附录A  浮点指令
│  └─bin
├─附录B  在Visual C++中使用内联汇编
└─document
    ├─API      ;API手册
    ├─Library   
    └─opcode

                 看雪软件安全网站
                 http://www.pediy.com
                                                   二〇〇八年六月
──────────────────────────────────────────────
             (c)2000-2008 PEdiy.com All rights reserved.By PEDIY
2008-6-7 22:47
0
雪    币: 50161
活跃值: (20610)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
8
部分样章,更多的样章出版社会放PDF出来,到时会转过来。

样章
2008-6-7 22:47
0
雪    币: 50161
活跃值: (20610)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
9
在阅读本书前,读者需要如下基础知识:

1.汇编语言(必须掌握)
读者应该对汇编语言有大致的了解。这方面的书籍品种很多,如《IBM PC汇编语言程序设计》,《王爽汇编》等,虽然大多数书以DOS汇编为讲解平台,但对理解汇编指令功能依然有益。

2.C编程语言(可选)
并不是必须的,但读者如果熟悉和了解C语言对阅读本书是很有帮助的。

3.Win32编程(可选)
建议掌握一些Win32编程,不论研究加密与解密,还是编程,都应该了解Win32编程。Win32编程是API方式的Windows程序设计,学习Windows API能使读者更深入地了解Windows工作方式。此类书籍推荐您阅读Charles Petzold所著的《Windows程序设计》,该书堪称经典之作,它以C语言为讲解平台。

希望准备学习加密与解密的朋友,先花点时间掌握这方面的知识,对自己的学习大有帮助。
2008-6-7 22:58
0
雪    币: 50161
活跃值: (20610)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
10
1.汇编语言

掌握汇编语言最好是找本书系统地看看。

8088 汇编速查手册
一、数据传输指令
───────────────────────────────────────
它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据.
1. 通用数据传送指令.
MOV 传送字或字节.
MOVSX 先符号扩展,再传送.
MOVZX 先零扩展,再传送.
PUSH 把字压入堆栈.
POP 把字弹出堆栈.
PUSHA 把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈.
POPA 把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈.
PUSHAD 把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压入堆栈.
POPAD 把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次弹出堆栈.
BSWAP 交换32位寄存器里字节的顺序
XCHG 交换字或字节.( 至少有一个操作数为寄存器,段寄存器不可作为操作数)
CMPXCHG 比较并交换操作数.( 第二个操作数必须为累加器AL/AX/EAX )
XADD 先交换再累加.( 结果在第一个操作数里 )
XLAT 字节查表转换.
── BX 指向一张 256 字节的表的起点, AL 为表的索引值 (0-255,即
0-FFH); 返回 AL 为查表结果. ( [BX+AL]->AL )
2. 输入输出端口传送指令.
IN I/O端口输入. ( 语法: IN 累加器, {端口号│DX} )
OUT I/O端口输出. ( 语法: OUT {端口号│DX},累加器 )
输入输出端口由立即方式指定时, 其范围是 0-255; 由寄存器 DX 指定时,
其范围是 0-65535.
3. 目的地址传送指令.
LEA 装入有效地址.
例: LEA DX,string ;把偏移地址存到DX.
LDS 传送目标指针,把指针内容装入DS.
例: LDS SI,string ;把段地址:偏移地址存到DS:SI.
LES 传送目标指针,把指针内容装入ES.
例: LES DI,string ;把段地址:偏移地址存到ES:DI.
LFS 传送目标指针,把指针内容装入FS.
例: LFS DI,string ;把段地址:偏移地址存到FS:DI.
LGS 传送目标指针,把指针内容装入GS.
例: LGS DI,string ;把段地址:偏移地址存到GS:DI.
LSS 传送目标指针,把指针内容装入SS.
例: LSS DI,string ;把段地址:偏移地址存到SS:DI.
4. 标志传送指令.
LAHF 标志寄存器传送,把标志装入AH.
SAHF 标志寄存器传送,把AH内容装入标志寄存器.
PUSHF 标志入栈.
POPF 标志出栈.
PUSHD 32位标志入栈.
POPD 32位标志出栈.

二、算术运算指令
───────────────────────────────────────
  ADD 加法.
ADC 带进位加法.
INC 加 1.
AAA 加法的ASCII码调整.
DAA 加法的十进制调整.
SUB 减法.
SBB 带借位减法.
DEC 减 1.
NEC 求反(以 0 减之).
CMP 比较.(两操作数作减法,仅修改标志位,不回送结果).
AAS 减法的ASCII码调整.
DAS 减法的十进制调整.
MUL 无符号乘法.
IMUL 整数乘法.
以上两条,结果回送AH和AL(字节运算),或DX和AX(字运算),
AAM 乘法的ASCII码调整.
DIV 无符号除法.
IDIV 整数除法.
以上两条,结果回送:
商回送AL,余数回送AH, (字节运算);
或 商回送AX,余数回送DX, (字运算).
AAD 除法的ASCII码调整.
CBW 字节转换为字. (把AL中字节的符号扩展到AH中去)
CWD 字转换为双字. (把AX中的字的符号扩展到DX中去)
CWDE 字转换为双字. (把AX中的字符号扩展到EAX中去)
CDQ 双字扩展. (把EAX中的字的符号扩展到EDX中去)

三、逻辑运算指令
───────────────────────────────────────
  AND 与运算.
OR 或运算.
XOR 异或运算.
NOT 取反.
TEST 测试.(两操作数作与运算,仅修改标志位,不回送结果).
SHL 逻辑左移.
SAL 算术左移.(=SHL)
SHR 逻辑右移.
SAR 算术右移.(=SHR)
ROL 循环左移.
ROR 循环右移.
RCL 通过进位的循环左移.
RCR 通过进位的循环右移.
以上八种移位指令,其移位次数可达255次.
移位一次时, 可直接用操作码. 如 SHL AX,1.
移位>1次时, 则由寄存器CL给出移位次数.
如 MOV CL,04
SHL AX,CL

四、串指令
───────────────────────────────────────
 DS:SI 源串段寄存器 :源串变址.
ES:DI 目标串段寄存器:目标串变址.
CX 重复次数计数器.
AL/AX 扫描值.
D标志 0表示重复操作中SI和DI应自动增量; 1表示应自动减量.
Z标志 用来控制扫描或比较操作的结束.
MOVS 串传送.
( MOVSB 传送字符. MOVSW 传送字. MOVSD 传送双字. )
CMPS 串比较.
( CMPSB 比较字符. CMPSW 比较字. )
SCAS 串扫描.
把AL或AX的内容与目标串作比较,比较结果反映在标志位.
LODS 装入串.
把源串中的元素(字或字节)逐一装入AL或AX中.
( LODSB 传送字符. LODSW 传送字. LODSD 传送双字. )
STOS 保存串.
是LODS的逆过程.
REP 当CX/ECX<>0时重复.
REPE/REPZ 当ZF=1或比较结果相等,且CX/ECX<>0时重复.
REPNE/REPNZ 当ZF=0或比较结果不相等,且CX/ECX<>0时重复.
REPC 当CF=1且CX/ECX<>0时重复.
REPNC 当CF=0且CX/ECX<>0时重复.

五、程序转移指令
───────────────────────────────────────
 1>无条件转移指令 (长转移)
JMP 无条件转移指令
CALL 过程调用
RET/RETF过程返回.
2>条件转移指令 (短转移,-128到+127的距离内)
( 当且仅当(SF XOR OF)=1时,OP1<OP2 )
JA/JNBE 不小于或不等于时转移.
JAE/JNB 大于或等于转移.
JB/JNAE 小于转移.
JBE/JNA 小于或等于转移.
以上四条,测试无符号整数运算的结果(标志C和Z).
JG/JNLE 大于转移.
JGE/JNL 大于或等于转移.
JL/JNGE 小于转移.
JLE/JNG 小于或等于转移.
以上四条,测试带符号整数运算的结果(标志S,O和Z).
JE/JZ 等于转移.
JNE/JNZ 不等于时转移.
JC 有进位时转移.
JNC 无进位时转移.
JNO 不溢出时转移.
JNP/JPO 奇偶性为奇数时转移.
JNS 符号位为 "0" 时转移.
JO 溢出转移.
JP/JPE 奇偶性为偶数时转移.
JS 符号位为 "1" 时转移.
3>循环控制指令(短转移)
LOOP CX不为零时循环.
LOOPE/LOOPZ CX不为零且标志Z=1时循环.
LOOPNE/LOOPNZ CX不为零且标志Z=0时循环.
JCXZ CX为零时转移.
JECXZ ECX为零时转移.
4>中断指令
INT 中断指令
INTO 溢出中断
IRET 中断返回
5>处理器控制指令
HLT 处理器暂停, 直到出现中断或复位信号才继续.
WAIT 当芯片引线TEST为高电平时使CPU进入等待状态.
ESC 转换到外处理器.
LOCK 封锁总线.
NOP 空操作.
STC 置进位标志位.
CLC 清进位标志位.
CMC 进位标志取反.
STD 置方向标志位.
CLD 清方向标志位.
STI 置中断允许位.
CLI 清中断允许位.

六、伪指令
───────────────────────────────────────
  DW 定义字(2字节).
PROC 定义过程.
ENDP 过程结束.
SEGMENT 定义段.
ASSUME 建立段寄存器寻址.
ENDS 段结束.
END 程序结束.
2008-6-7 23:04
0
雪    币: 50161
活跃值: (20610)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
11
2.C编程语言
并不是必须的,但读者如果熟悉和了解C语言对阅读本书是很有帮助的。
2008-6-7 23:06
0
雪    币: 50161
活跃值: (20610)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
12
3.Win32编程

推荐找Charles Petzold所著的《Windows程序设计》看看

Google可以找到电子版。
2008-6-7 23:08
0
雪    币: 485
活跃值: (12)
能力值: ( LV9,RANK:490 )
在线值:
发帖
回帖
粉丝
13
怪不得去图书大厦没找到
2008-6-7 23:10
0
雪    币: 50161
活跃值: (20610)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
14
欢迎各位补充相关的学习资料,我会把相关资料链接索引整理上来。
2008-6-7 23:24
0
雪    币: 231
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
哈哈,看来不用等多久了!
2008-6-7 23:38
0
雪    币: 302
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
封面挺酷。。。
6号,7号印刷
8号,9号送货
恩恩,估计10号差不多可以上架了。
2008-6-7 23:39
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
看雪大哥.这本WINDOWS编程买不到了啊.
2008-6-7 23:48
0
雪    币: 239
活跃值: (59)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
零售价:xx?
2008-6-7 23:59
0
雪    币: 2181
活跃值: (109)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
如果是10号 就是俺生日那天
2008-6-8 00:01
0
雪    币: 623
活跃值: (10)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
20
希望寂寞能在生日那天买到
2008-6-8 00:07
0
雪    币: 2181
活跃值: (109)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
7楼.PE知识


1.PE格式结构图 BY.rgbsky
用图将PE结构描述一遍,比较直观
下载地址:http://pediy.com/document/PE.rar


2.hjjdebug系列PE 文件格式启发学习
PE 文件格式启发式学习1 -- 文件头,节表,导入表
http://bbs.pediy.com/showthread.php?t=64701
PE 文件格式启发式学习2 -- 导出表,重定位表
http://bbs.pediy.com/showthread.php?t=65620
PE 文件格式启发式学习3 -- 资源表
http://bbs.pediy.com/showthread.php?t=65998


3.《可执行文件头的变形技术》电子版正式下载
http://bbs.pediy.com/showthread.php?t=66180


更多资料
Microsoft Visual C++提供的WINNT.H里有PE数据结构的完整定义。
推荐文档:
ah007翻译的“PE文件格式”1.9版
qduwg翻译的PE文件格式
Iczelion's 的PE文件格式
微软官方提供的PE文档(英文)(Revision 8.1- March 27, 2008)
微软官方提供的PE文档(Revision 8.1)(zhzhtst翻译成中文)
探索PE文件内幕—— Win32可移植可执行文件格式之旅(zhzhtst翻译)
深入剖析Win32可移植可执行文件格式(zhzhtst翻译)
详细见 http://bbs.pediy.com/showthread.php?t=20366 2楼

  

只是简单的整理下论坛帖子,如有不对请看雪老师从新编辑.
2008-6-8 00:08
0
雪    币: 101
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
我要买一本 不过必须是老大签过字的我才要  呵呵
2008-6-8 00:18
0
雪    币: 101
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
我要买一本 不过必须是老大签过字的我才要  呵呵
2008-6-8 00:19
0
雪    币: 200
活跃值: (163)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
shs
24
我也会买的,呵呵。。
2008-6-8 00:48
0
雪    币: 321
活跃值: (271)
能力值: ( LV13,RANK:1050 )
在线值:
发帖
回帖
粉丝
25
好啊,终于快盼来了。
2008-6-8 01:20
0
游客
登录 | 注册 方可回帖
返回
//