逆向学习笔记

Posted 向往生

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了逆向学习笔记相关的知识,希望对你有一定的参考价值。

背景

花了1500报了一个暑期学习班,重新从基础开始学习逆向

笔记第0课

关于学习方法的课:

1.按顺序学习,不要遗漏知识点,稳扎稳打,走得更远

2.善于思考,观察;

3.学习之后要练习,要提问。

第一课

1.通常exe的启示地址是0x401000;

2.EXE和DLL的区别:结构相同,但exe可以直接运行,DLL是可被exe调用的库函数;

3.系统领空和程序领空的区别

4.未运行时,可以通过光标点击CALL 函数,回车进入查看,小键盘-号返回

6.MessageBoxA是系统弹窗函数,可在此设置断点,在弹出之前断下来;

7.在Command窗口输入:?MessageBoxA,可以查到它的绝对地址;

8.Ctrl+G可以跳转到制定地址,相当于是goto;

第三课

1.破解95%是在根据零碎信息猜测开发者的程序流程;

2.Ctrl+N(Alt+E)呼出“模块”窗口,可以看到程序调用的DLL以及DLL里的API,输如函数名可以筛选。

 下断点的几种方式:

1.F2;

2.在命名窗口输入:bp 函数标识(绝对地址)

第四课

F9运行

通过两种方式切入:

1.搜索字符串,双击进入程序代码段;

2.通过系统函数如MessageBoxA下断点,在右下角的堆栈窗口,看到调用函数,Enter进入

到了关键函数代码段后,点击函数段首,OD会有一个“转到CALL来自,就进入他的上级调用函数”

3.修改跳转条件,使程序不进入失败(则会进入成功);

4.修改的方式是:将跳到此处的条件跳转,改为nop,不发生跳转,或是找到成功的位置,将有条件跳转转为JMP无条件跳转

5.导出:右键,“复制到可执行文件”,保存所有修改,右键,保存文件,存为新的exe即可。

作业已完成(2022年7月15日07:58:48)

第六课-第十课

关于断点:

1.CC断点,Int3断点,普通断点,是通过将汇编指令码改为0xCC(int3中断的汇编指令码),使系统产生中断来终止程序的断点方法

好处:可以设置无限个,坏处:容易被程序检测到,易被反调试(MOV EAX 0X4010330,TEST EAX CC,je 401000#把某地址的值复制到EAX寄存器,如果EAX寄存器是0XCC,则跳回起始点)

2.在指令下断点时,有两种设置方法:

bp MessageBoxA:在MessageBoxA函数的段首位置下断点;

bpx MessageBoxA:在所有MessageBoxA函数被调用之前下断点;

看到此处感慨一下:系统的学习逆向工具和技术,让我有种兴奋的感觉,进入程序运行的世界里,使用“Enter”和“-”进行程序进入和推出,那感觉就像小孩从不会走路到会走路,又像盲人睁开眼睛,黑夜里有了电筒。而断点的设置,就像一种魔法,时间静止魔法。

3.内存断点

原理:将指定的内存块地址设置为PAGE_NOACCESS(目标程序不可访问),待访问地址=你设置的地址时,触发异常,中断程序

类型:访问和写入

限制:只能有一个,,且不在断点窗口显示

删除方法:断点--->删除内存断点

区段设置内存断点:ctrl+M,或是点击图标“M”,进入内存页面,点击模块的不同段,设置区段内存断点,可以调试调用DLL的分散体程序;

5.回到用户程序领空的三种方法:

1.F8单步执行到系统函数的返回

2.Alt+F9运行到用户程序程序领空

3.在堆栈窗口,选择返回地址,点击Enter(或右键选择“在汇编窗口跟随”)

6.硬件断点

硬件断点的原理:将硬件地址,大小和访问方式,写入CPU的调试寄存器DRx里,当程序运行的PC指针等于DR0-DR3寄存器里的值时,CPU会发出信息给调试软件(OD或X64dbg),调试软件中断程序运行。出处:《ollydbg中的内存断点和硬件断点有什么区别? - 知乎

数量限制:4个,重载程序后不消失;

呼出方法:调试-->硬件断点,command窗口输入:HE 40100A

类型:访问,写入,执行

以上是关于逆向学习笔记的主要内容,如果未能解决你的问题,请参考以下文章

逆向学习笔记

什么是Android逆向?如何学习安卓逆向?Android逆向自学笔记入门到实战

《逆向工程核心原理》学习笔记:高级逆向分析技术

《逆向工程核心原理》学习笔记:高级逆向分析技术

《逆向工程核心原理》学习笔记:高级逆向分析技术

《逆向工程核心原理》学习笔记:高级逆向分析技术