逆向破解学习方法-读Nisy的帖子感觉找到了方向

逆向破解界的大牛很多,小菜我很佩服他们,有很多人都自己架设网站了,也有很多人从事安全研究了,而还有很多人像我一样还在彷徨,没有学习的方向,这是最可怕的,今天我浅谈一下学习方向和方法,如有不足之处,希望大牛们给与批评。

       首先看一篇帖子:Nisy写的一篇文章,原帖发于看雪,也是关于学习建议的,内容如下:

       “Nisy              2010-03-24, 00:56:39

         送给有志于学习软件和致力于研究软件逆向的朋友们
          第七期今年四月末开班,科锐软件教育在看雪那边也有介绍连接,想必很多人都听说过。我本人也在科锐这里学习了一段时间了,感觉很不错,钱老师和方老师教学都非常严谨,授课都比较用心。
         我简单介绍一下吧,这边的教学不同于某些培训机构,这里是实打实的搞教育,每期学员只招三十个左右,因为要保证教学质量。入学的时候会有一个小测,针对C语言的,不难就是考考基本的语法。如果入学考试未通过,交再多的钱科锐也是拒收的。教学一共四阶段,每阶段都会有一次考试,如果未能通过考试,强制免费重修(免费是建立在不缺勤,不违纪的前提上哦,否则按(违纪天数/该阶段总天数)*该阶段的学费 来收取相应的学费)。
         这边的学费是按阶段来收取的,官方曾给出的学习时间在6~8个月,其实总时间比这个还要长一些。比如四期班大约用了11个月,5期班差不多也是这个时间。这边的教学原则就是以学生为本,根据学生的掌握情况适当的调整教学进度。
         第一阶段是C语言、C++语言和数据结构,讲的比较有深度,一些内容是站在逆向的角度进行讲解的,这一阶段非常重要,C和C++语言我们可以认为是运行在单操作系统的平台,这一阶段我们可以不必考虑操作系统的复杂因素单纯来打下坚实的编程根基。为什么大家都比较重视C语言呢,一种编程语言,编译器越强大,越便于程序的开发,但可能会不利于我们学习掌握其底层实现的细节。汇编语言是最底层的语言,可以让我们接触到最底层,但不利于学习编程的展开,C语言是过度于汇编语言和高级语言的一种语言,可以让我们更好的、更深入的了解到程序运行的本源,指针的灵活运用更可以使我们随意的掌控内存的数据。掌握好C语言是学习逆向的基础,之后的C++主讲类的思想及其相关要点,为我们二阶段学习MFC理解其框架原理奠定一个基础。数据结构是程序设计中不可获取的部分,也作为一阶段的重点之一。
          第二阶段首先讲数据关系,依托SQL来讲数据关系,数据关系和数据结构是程序设计的灵魂,非常之重要,也是学习逆向所需要掌握的基础之一。数据关系一定要当成重点来掌握。以WIN操作系统为例,多任务的操作系统本身就是一个复杂的数据库。里边遍布了数据关系,各种表错综有序,我们将来在逆向系统一些API的时候,就会证明我们曾推测出操作系统中必然存在的一些数据关系。总之,这里很重要。然后是WIN 的 SDK、 MFC的应用和原理。MFC的框架原理部分方老师深入浅出,将MFC剖析的淋漓尽致,非常精彩。也为我们将来分析框架程序打下了一个坚实的基础。二阶段其中的一个小项目就是MfcSpy,O(∩_∩)O~ MFC之后要讲解COM组件,这个很热门又很复杂神秘的东西。这一阶段的项目要更有挑战性,到时候你就知道了~
         第三阶段就到了软件逆向分析了喽,但是如果你前两阶段未通过,那也只能望梅止渴了^_^ 我身边的朋友现在正开发机房自己的调试器,命令行下的Debug,要实现基本的调试功能F7、F8,以及可以设置无限个内存断点等。这个也是三阶段的项目之一。这一阶段就是印证前两阶段的一些东西了,所以学习逆向,前两阶段很重要。这一阶段讲的内容想必大家都应该清楚,先是汇编语言,然后有PE结构、线程进程注入、异常机制、各种表等、然后是调试器、软件逆向等。这一阶段主要是钱老师主讲,钱老师可谓是圈子里边低调的大师级的人物,无论是技术还是人品,本人甚是钦佩。
         第四阶段更重要了,四阶段的内容可以说是老师们的真传了,包括方老师讲解的3环下手动实现内存和硬盘的读写(手动模拟WIN的API),溢出漏洞的利用等等圈子里边一些很实用的技术等。这一部分算是全盘的一个总结了,也是大家将知识融会贯通,理论应用于实践的一个接轨。学到这里,能顺利通过科瑞的第四阶段,就可谓初出茅庐了,可喜可贺了。看雪有不少科瑞毕业学员留下的精华帖,都是很有技术含量的。
        写到这,算是把科瑞教学的情况简单的介绍一遍了。这边的教学时间官方承诺的是6~8个月,其实会更长一些,因为每期教学都可能会增加一些新的内容,也会根据上期教学的反馈来重点讲解一些该阶段的重点难点等。学费上是按阶段收取,每阶段大约4000左右,具体的可咨询下科锐的客服。搞教育本身就不是一个暴利的行业,一个教育机构一旦以盈利为主,离被社会的唾骂和抛弃也就不远了。科锐这边就是实打实的搞逆向教学,从每期的人数、入学考试和强制重修等措施上边已经对教学的质量做了很多的保障。 这些都可以从老钱的严谨治学态度上得到应证。怎么说呢,搞教育授人知识,为国内培养一批从事于软件逆向的生力军,推动软件逆向这个行业的发展,本身就是一件乐事,只有身处其中才能体会到其中的快乐。我也期待有志于学习软件和致力于研究软件逆向的青年来到科锐学习,为自己迈入编程和逆向这个神秘的大门找到一条捷径。
          基本上介绍完了,未了再添一句,科锐毕业后是没有国家文凭的,需要文凭以示留念的自己印一个好了 O(∩_∩)O~ 其实科锐的授课内容本身就是一个从事软件行业人员的学习和成长的顺序。丝丝相扣,循序渐进。如果你不方便来这边学习,建议各位可以参考这边的教学内容来按部就班的扎实根基。看过上边的文字,各位应该相信我打的每一个字,认识我的朋友都知道我的为人,不要说我是托,否则会被旁人耻笑的。与君子交,一杯清茶足以。
Nisy/PYG 03.24 写于武汉科锐”
我觉得Nisy的想法很不错,就拿我说吧,名为大学生,对学校开的那些课程已经不感兴趣了,因为我现在特别感兴趣的是逆向安全,软件编程。接触逆向一年了,感觉技术还是不到家,反思了一下,觉得为了长久发展,有必要从基础好好的学学了。Nisy的重点是科瑞的教学,也就是我们的学习顺序,或者说方法。
      “第一阶段是C语言、C++语言和数据结构,讲的比较有深度,一些内容是站在逆向的角度进行讲解的,这一阶段非常重要,C和C++语言我们可以认为是运行在单操作系统的平台,这一阶段我们可以不必考虑操作系统的复杂因素单纯来打下坚实的编程根基。为什么大家都比较重视C语言呢,一种编程语言,编译器越强大,越便于程序的开发,但可能会不利于我们学习掌握其底层实现的细节。汇编语言是最底层的语言,可以让我们接触到最底层,但不利于学习编程的展开,C语言是过度于汇编语言和高级语言的一种语言,可以让我们更好的、更深入的了解到程序运行的本源,指针的灵活运用更可以使我们随意的掌控内存的数据。掌握好C语言是学习逆向的基础,之后的C++主讲类的思想及其相关要点,为我们二阶段学习MFC理解其框架原理奠定一个基础。数据结构是程序设计中不可获取的部分,也作为一阶段的重点之一。
          第二阶段首先讲数据关系,依托SQL来讲数据关系,数据关系和数据结构是程序设计的灵魂,非常之重要,也是学习逆向所需要掌握的基础之一。数据关系一定要当成重点来掌握。以WIN操作系统为例,多任务的操作系统本身就是一个复杂的数据库。里边遍布了数据关系,各种表错综有序,我们将来在逆向系统一些API的时候,就会证明我们曾推测出操作系统中必然存在的一些数据关系。总之,这里很重要。然后是WIN 的 SDK、 MFC的应用和原理。MFC的框架原理部分方老师深入浅出,将MFC剖析的淋漓尽致,非常精彩。也为我们将来分析框架程序打下了一个坚实的基础。二阶段其中的一个小项目就是MfcSpy,O(∩_∩)O~ MFC之后要讲解COM组件,这个很热门又很复杂神秘的东西。这一阶段的项目要更有挑战性,到时候你就知道了~
         第三阶段就到了软件逆向分析了喽,但是如果你前两阶段未通过,那也只能望梅止渴了^_^ 我身边的朋友现在正开发机房自己的调试器,命令行下的Debug,要实现基本的调试功能F7、F8,以及可以设置无限个内存断点等。这个也是三阶段的项目之一。这一阶段就是印证前两阶段的一些东西了,所以学习逆向,前两阶段很重要。这一阶段讲的内容想必大家都应该清楚,先是汇编语言,然后有PE结构、线程进程注入、异常机制、各种表等、然后是调试器、软件逆向等。这一阶段主要是钱老师主讲,钱老师可谓是圈子里边低调的大师级的人物,无论是技术还是人品,本人甚是钦佩。
         第四阶段更重要了,四阶段的内容可以说是老师们的真传了,包括方老师讲解的3环下手动实现内存和硬盘的读写(手动模拟WIN的API),溢出漏洞的利用等等圈子里边一些很实用的技术等。这一部分算是全盘的一个总结了,也是大家将知识融会贯通,理论应用于实践的一个接轨。学到这里,能顺利通过科瑞的第四阶段,就可谓初出茅庐了,可喜可贺了。看雪有不少科瑞毕业学员留下的精华帖,都是很有技术含量的。”

         我觉得教学课程安排的很好,所以建议大家有的放失的按这个步骤去学习,最后祝大家学有所成。

本资源为非常不错的一套王网传资源,是继之前上传的基础班的升级版,更加全面,资源过大,上传乃是下载链接,如失效请留言!!!资源远大于5积分,不多说,下面直接上目录: APC机制 I5 J$ i: U0 f1 r: O9 B( Q" b │ 01 APC的本质.mp4 │ 02 备用Apc队列.mp4: U8 p7 ]3 f" w$ b0 ?5 Z9 `0 H8 G* [ │ 03 APC挂入过程.mp48 g! H4 s1 V; ]+ b4 Y9 H0 L- B │ 04 内核APC执行过程.mp4 │ 05 用户APC执行过程.mp4 │ ├─事件等待' x% `" J' } ?& S: t' ]# I5 \5 G │ 01临界区.mp4- o( U$ W9 O+ ` ~0 u4 ~, @. \ │ 02 自旋锁.mp4) c3 ~. J& L, V& s. Q8 x/ [. w │ 03 线程等待与唤醒.mp4# b* ^" k$ d# O3 f8 t8 a3 k │ 04 WaitForSingleObject函数分析.mp4$ V7 L' C3 I( W │ 05 事件.mp4 │ 06 信号量.mp4 │ 07 互斥体.mp4 │ ├─保护模式- }! n! C$ O/ s" Q │ 014 中断门.mp4, B' i, r7 Y: B3 |! N( ^6 { l9 F │ 015 陷阱门.mp4 │ 017 任务段_下.mp4, |/ M# A: K3 T7 i* Q/ ? I& o& D; p │ 018 任务门.mp46 m. D+ f4 _/ V) ~9 S& B │ 019 10-10-12分页.mp4 │ 020 PDE_PTE.mp4 │ 021 PDE_PTE属性(P_RW).mp43 ~/ ]1 x5 {4 u: {$ I │ 022 PDE_PTE属性(US_PS_A_D).mp4 │ 023 页目录表基址.mp4 │ 024 页表基址.mp4$ A f' [+ g6 }5 F; e │ 025 2-9-9-12分页.mp4 │ 026 2-9-9-12分页(下).mp4- ~' ~9 i0 T5 f" p2 U$ j │ 027 TLB.mp4 │ 028 中断与异常.mp4 │ 029 控制寄存器.mp46 j2 l3 j) O# {% {4 w │ 030 PWT_PCD属性.mp4 │ 031 保护模式阶段测试.mp4 │ _001 保护模式.mp4, I; c5 X ~) t1 d1 }8 S# f3 i: b │ _002 段寄存器结构.mp48 n- |- i( H$ ^* f │ _003 段寄存器属性探测.mp4 │ _004 段描述符与段选择子.mp4 │ _005 段描述符属性_P位_G位.mp4 │ _006 段描述符属性_S位_TYPE域.mp4 │ _007 段描述符属性_DB位.mp4 │ _008 段权限检查.mp4 │ _009 代码跨段跳转流程.mp4& S# i9 i- \0 D" @1 U- P │ _010 代码跨段跳转实验.mp4" @* S2 Y- a- S6 n7 n: ~ │ _011 长调用与短调用.mp4 │ _012 调用门_上.mp4; [) _2 c8 A5 F% }! u% ]: ~. N │ _013 调用门_下.mp4 │ ├─内存管理 │ 01 线性地址的管理.mp4; ? |+ ^5 i& } │ 02 Private Memory.mp4* @3 B( Y6 ^ y- { │ 03 Mapped Memory.mp4 │ 04 物理内存的管理.mp4' [8 C6 q \1 H8 w" H2 ]0 Y │ 05 无处不在的缺页异常.mp4 │ ├─句柄表 │ 01 句柄表.mp4 │ 02 全局句柄表.mp4 │ 5 h" u" i& {+ G4 T+ E ├─异常 │ 01 CPU异常记录.mp4 │ 02 模拟异常记录.mp4: K0 J( d1 n4 ] Q │ 03 内核异常的处理流程.mp4 │ 04 用户异常的分发.mp4 │ 05 VEH.mp4 C F6 A% j# M* @- h% N │ 06 SEH.mp4 │ 07 编译器扩展SEH课堂代码_1.mp42 I" @1 i1 b% G6 o4 O% j: t │ 08 编译器扩展SEH_2.mp4 │ 09 编译器扩展SEH_3.mp4 │ 10 编译器扩展SEH_4.mp4 │ 11 未处理异常.mp4. m' z+ `$ v- R/ K. `/ \2 M, S │ ├─消息机制0 y7 o3 ?7 X7 Z, F" I( Q │ 01 消息队列在哪.mp4$ {& n5 ]* g' H, W# k6 |+ M │ 02 窗口与线程.mp4 │ 03 消息的接收.mp4- a8 k- Q8 {! I* T8 L7 j │ 04 消息的分发.mp4- M* `$ q% z, y, R │ 05 内核回调机制.mp4 │ 0 ]( v: v$ e% _/ v, e ├─系统调用: |5 y7 Y% q' w, J │ 001 API函数的调用过程(3环部分).mp4; }0 Z8 P$ g# I6 \! _ y │ 002 API函数的调用过程(3环进0环 上).mp4- g. o" u+ M1 Y) x │ 003 API函数的调用过程(3环进0环 下).mp46 p* w2 @* j9 ?% Z3 e$ \: ? │ 004 API函数的调用过程(保存现场).mp44 G8 |/ j3 ^8 ?1 D9 Y │ 005 API函数的调用过程(系统服务表).mp4 │ 006 API函数的调用过程(SSDT).mp4 │ ! A- ~, L8 M. l ├─软件调试% a8 o, z* m) E$ M( \" P D! m7 x4 B │ 01 调试对象.mp4 c- K+ k3 F( v3 p2 R9 E$ n$ f: Z6 k) @ │ 02 调试事件的采集.mp4 │ 03 调试事件的处理.mp4( w" W. m) o: D3 P7 ? │ 04 异常的处理流程.mp4 │ 05 软件断点.mp4 │ 06 内存断点.mp4 │ 07 硬件断点.mp4 │ 08 单步异常.mp4% P5 e* U+ M# a1 j3 D6 n; n │ 09 单步步过.mp4 │ 10 硬件HOOK过检测.mp46 H5 q2 K& X1 u$ ]/ E │ ├─进程与线程 │ 001 进程结构体.mp4 │ 002 线程结构体.mp41 `5 e+ [1 U) j │ 003 KPCR.mp4 │ 004 等待链表_调度链表.mp41 m! T& `3 t' U& U# A- @+ _ │ 005 模拟线程切换.mp4& ?, D% H/ z- d# _& \$ X- X$ U │ 006 Windows线程切换_主动切换.mp4 │ 007 Windows线程切换_时钟中断切换.mp4/ s& N% Y5 B" @2 g │ 008 Windows线程切换_时间片管理.mp48 X( v. g" T0 ~- k! v* Q │ 009 Windows线程切换_TSS.mp4 n+ A9 L5 B2 t* M# H │ 010 Windows线程切换_FS.mp4 │ 011 Windows线程切换_线程优先级.mp4 A! a% n1 c. Y5 y# ~ L4 P │ 012 进程挂靠.mp4 │ 013 跨进程写内存.mp4, E0 ^0 U I1 h │ $ {. ?; O) C* w1 K. q) K └─驱动开发 01 驱动开发环境配置.mp4* W) g2 z& T/ _; @1 V" n 02 第一个驱动程序.mp4 03 如何调试驱动程序.mp4; [8 U2 T) B' V 04 内核编程基础.mp4 05 内核空间与内核模块.mp4 06 0环与3环通信(常规方式).mp46 O: Z; `3 `( L 07 SSTD HOOK.mp46 D t( {, u1 D/ x) h! ]: g 08 Inline Hook.mp4 09 多核同步之临界区.mp40 l& ^, e3 J( E1 d( b2 S 10 多核同步之自旋锁.mp4 11 重载内核
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值