反汇编,这部分我只能说是略懂一二。

如果去学习反汇编?

 

听到反汇编有点高大上,其实如果有一个合理的学习材料跟步骤,还是比较容易学习的。

如果你想学习程序逆向,反汇编,认为应该必须先学习汇编,然后才是学习Ollydbg,exe程序的PE文件结构,脱壳等等。

推荐书跟视频:

《汇编语言》王爽,非常好,写的比较易懂。

看雪论坛的《加密与解密》非常经典

小甲鱼 系列视频 讲的 非常易懂,强烈推荐

零基础入门学习汇编语言  http://blog.fishc.com/category/assembly  (他是按照《汇编语言》王爽 来讲的)

解密系列-基础篇   http://blog.fishc.com/category/base    (他讲的解密系列,参考《加密与解密》)

解密系列-系统篇(PE结构) http://blog.fishc.com/category/pe

解密系列-调试篇(Ollydbg使用)http://blog.fishc.com/category/debug

推荐学习步骤:

大体上应该: 汇编--> PE 文件结构 --> Ollydbg 使用 --> 脱壳 -->......

  1. 首先学习汇编,看小甲鱼零基础入门学习汇编语言视频 和《汇编语言》王爽  学习汇编。
  2. 然后看小甲鱼解密系列视频,按顺序看下来
  3. 然后逛论坛,推荐:吾爱破解论坛  http://www.52pojie.cn/forum.php

 

OllyDbg

OllyDbg 使用教程 (二)

2015-05-06

参考 书:《加密与解密》 视频:小甲鱼 解密系列 视频  程序破解 程序见下图,破解目标:使我们能够验证成功。 图片1 由于输入肯定会用到获取对话框文本的API,所以在反汇编面板 按Ctrl+G搜索GetDlgItemTextA,试试看。 图片2 也可以按Ctrl+N 打开程序的导入表。查看程序导入了那些函数,选中GetDlgItemTextA,右键 选择在反汇编窗口中跟随输入函数 ...

汇编

汇编简单入门教程(十四)直接定址表

2015-05-06

参考: 《汇编语言》 王爽 第16章 1. 描述单元长度的标号 普通的标号:a,b assume cs:code code segment a:db 1,2,3,4,5,6,7,8 b:dw 0 start: mov si,offset a mov di,offset b mov ah,0 mov cx,8 s: mov al,cs:[si] add cs:[di],ax inc si lo ...

汇编

汇编简单入门教程(十三) 直接定址表

2015-05-06

参考: 《汇编语言》 王爽 第16章 1. 描述单元长度的标号 普通的标号:a,b assume cs:code code segment a:db 1,2,3,4,5,6,7,8 b:dw 0 start: mov si,offset a mov di,offset b mov ah,0 mov cx,8 s: mov al,cs:[si] add cs:[di],ax inc si lo ...

汇编

汇编简单入门教程(十二)int指令、端口

2015-05-06

参考: 《汇编语言》 王爽 第13、14章 一、int指令 1. int指令引发的中断 int n指令,相当于引发一个n号中断。 执行过程相当于: (1)取中断类型吗n。 (2)标志寄存器入栈;设置IF=0,TF=0。 (3)CS,IP入栈 (4)(IP)=(n*4),(CS)=(n*4+2) 例子1:编写、安装中断7ch,实现求一个word型数据的平方,用ax存放这个数据。 assume ...

汇编

汇编简单入门教程(十一)内中段

2015-05-06

参考: 《汇编语言》 王爽 第12章 中断是指CPU在执行完当前指令后收到某种信息(中断信息),就不在接向下执行,而去对接收到的信息进行处理。中断信息可以来自CPU内部和外部,分内中断,外中断。 1. 内中断的产生 下面4中情况会产生内中断: (1)除法错误。如:div除法溢出 (2)单步执行。如debug中的单步调试 (3)执行into指令。 (4)执行int指令 2. 处理中断信息 中断 ...

汇编

汇编简单入门教程(十)标志寄存器、串传送指令

2015-05-06

参考: 《汇编语言》 王爽 第11章 CPU内部有一种特殊的寄存器叫标志寄存器(flag),它与ax,bx,cx等其他寄存器不同,它不是用来存放数据的,而是用来存放状态的。flag寄存器是按位器作用的,即只有0和1。 flag寄存器的结构: 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 OF DF IF SF ZF AF PF CF 在debug中标志位的表示: ...

汇编

汇编简单入门教程(九)call和ret

2015-05-06

参考: 《汇编语言》 王爽 第10章 call和ret都是转移指令。 1. ret和retf ret指令:用栈中的数据,修改IP内容,从而实现近转移 相当于: pop ip retf指令:用栈中的数据,修改CS和IP,从而实现远转移 相当于: pop ip pop cs 例子:ret assume cs:code,ss:stack stack segment db 16 dup(1) sta ...

汇编

汇编简单入门教程(八)转移指令

2015-05-06

参考: 《汇编语言》 王爽 第9章 可以修改ip或者同时修改cs和ip的指令统称为转移指令。 8086CPU转移行为分为: 段内转移:只修改ip 段间转移:同时修改cs和ip 段内转移按ip修改的范围可分为: 短转移:ip修改范围 -128~127 近转移:ip修改范围 -32768~32767 转移指令分为: 无条件转移指令。如 jmp 条件转移指令 循环指令。如 loop 过程。 中断。 ...