逆向学习笔记
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
类型:访问,写入,执行
以上是关于逆向学习笔记的主要内容,如果未能解决你的问题,请参考以下文章