菜单

python逆向入门教程,python入门教程

2019年1月12日 - Php

亟待的留言我发你。

3、调试原理

动用调试器,能够对程序举办动态跟踪和剖析,特别是关联到exploit、fuzzer和病毒分析的时候,动态分析程序的能力就显示非常首要了。调试程序时,假如得以得到源代码,调试起来就容易一些,也就是晶莹剔透的白盒测试,假若没有源代码,也就是黑盒测试,想要得到可以的结果,这就非得具有无瑕的逆向技术和逆向工具的帮扶。黑盒测试包括用户格局与根本格局三种情景,两者有不同的权限。

CPU的寄存器可以对少量的多寡举办飞速的存取访问,在X86指令集里,一个CPU有多个通用寄存器:EAX、EDX、ECX、ESI、EDI、EBP、ESP和EBX,以及另外的寄存器,上边逐个介绍。
EAX:累加寄存器,除了用于存储函数的回到值外也用于执行总括的操作,许多优化的X86指令集都专门规划了针对EAX寄存器的读写和测算指令。

EDX:数据寄存器,本质上是EAX寄存器的拉开,援助EAX寄存器完成更多复杂的乘除操作。
ECX:计数寄存器,用于循环操作,总计是向下而不是提高的,由大减到小。
ESI:Source
Index,源操作数指针,存储着输入的数据流的职务,用于读,高效地拍卖循环操作的多少。
EDI:Destination
Index,目标操作数指针,存储了总括结果存储的职位,用于写,高效地拍卖循环操作的数码。
ESP:Stack
Pointer,栈指针,负责函数的调用和栈的操作,函数调用时压栈参数和再次回到地址,指向栈顶即再次来到地址。
EBP:Base
Pointer,基指针,负责函数的调用和栈的操作,函数调用时压栈参数和重返地址,指向栈底。
EBX:唯一一个从未例外用途的寄存器,作为额外的多寡存储器。
EIP:Instruction Pointer,指令指针,总是指向当时要实施的命令。

熟稔调试器的爱人们都清楚断点,断点其实就是一个调试事件,此外事件如经典的段错误(Segment
Fault)等。断点包括软件断点、硬件断点和内存断点,用于暂停被实践顺序。

软件断点:一个单字节的通令,将控制权转移给调试器的断点处理函数。汇编指令是CPU执行的吩咐的高档代表方法,如下面的汇编指令MOV
EAX,
EBX,告诉CPU把仓储在EBX寄存器里的东西放到EAX寄存器,但是CPU并不清楚这一个汇编指令,必须换车为可知让CPU识此外操作码8BC3,假如这一操作暴发在地址0x44332211,为了在这一个地点设置断点,暂停CPU,需要从2个字节的操作码8BC3中换出一个单字节的操作码,这些单字节的操作码也就是3号中断指令,INT3,一条能让CPU暂停的下令,对应的操作码为0xCC,具体如上边的代码片段所示。当调试器被告知在对象地方设置一个断点时,它首先读取目的地址的首先个字节的操作码然后保存起来,同时把地方存储在里面的中止列表中,接着,调试器把3号中断指令对应的操作码0xCC写到刚才的地方,当CPU执行到替换后的操作码的时候,CPU暂停,并触及一个INT3事件,此时调试器就能捕捉到这个事件,然后调试器通过EIP判断那多少个中断地址是否是我们设置的断点,假诺是,就把相应的操作码写回以復苏程序的健康运作。软件断点包括一回性断点和连绵断点,前者生效三遍,后者直接生效,不见效后将其从中断列表移除。需要小心的是,当我们转移了被调试程序的内存数据时,同时改变了运转时软件的CRC即循环冗余代码校验和,CRC是一种校验数据是否被更改的编制,广泛应用于文件、内存、文本、网络数据包等其他想监视数据的地点,它将早晚限制内的数据举办hash总括,然后将hash值同从前的hash值举行相比较,判断数据是否改变,为了在这种特有的场所下也能调试程序,就要选择下边介绍的硬件断点了。

地址: 操作码 汇编指令
0x44332211: 8BC3 MOV EAX, EBX
0x44332211: CCC3 MOV EAX, EBX

硬件断点:在小块区域内安装断点,属于CPU级别,使用了DR0到DR7共六个奇特的调试寄存器,这一个寄存器专门用于管理硬件断点。DR0到DR3存储硬件断点地址,意味着同一时间内最两只好有4个硬件断点,DR4和DR5保留,DR6是情形寄存器,表达被断点触发的调剂事件的连串,DR7是开关寄存器,同时也蕴藏了断点的不比档次,包括指令执行时暂停、数据可以写入时停顿、有数量读或者写但不实施时刹车。硬件断点使用1号中断指令INT1,负责硬件中断和步进事件。硬件断点的特色是同一时间只好设置四个断点,而且断点起效果的区域唯有两个字节,倘使想要跟踪一大块内存数据,请使用下边介绍的内存断点。

内存断点:用于大块区域,不是当真的断点,而是改变了内存中某个块或者页的权限。一个内存页是操作系统处理的纤维的内存单位,一个内存页被申请成功后,就有着了一个权限集,如可执行页、可读页、可写页,这些决定了内存该怎样被访问,任何对珍重页的拜访都会抓住这些,之后页面复苏访问前的状态。

以上就是本文的全体内容,希望对我们的读书抱有匡助,也目的在于我们多多扶助帮客之家。

http://www.bkjia.com/Pythonjc/1294210.htmlwww.bkjia.comtruehttp://www.bkjia.com/Pythonjc/1294210.htmlTechArticlepython逆向入门教程,python入门教程 1、开发条件
我们在Windows
10上上马python逆向之旅,首先起始搭建开发环境,python解释器使用最新的3.6.1,…

本套教程15天(黑马程序员的任课时间算的)

2、ctypes

首先介绍一下ctypes,它是一个用来Python的外表函数库,提供了与C语言兼容的数据类型,允许调用动态链接库或共享库中的函数,还足以打包这多少个库。下边是ctypes中的数据类型与C语言、Python中的数据类型的对应关系。

图片 1

ctypes中的数据类型全部因而class来促成,在Python中加载C库涉及如下多少个类。

  1. class ctypes.CDLL
    加载共享库,使用规范C函数调用惯例即cdecl,再次回到类型为int。
  2. class ctypes.OleDLL
    加载共享库,只用于Windows平台,使用stdcall函数调用惯例,再次回到类型为HRESULT。
  3. class ctypes.WinDLL
    加载共享库,只用于Windows平台,使用stdcall函数调用惯例,重回类型为int。
  4. class ctypes.PyDLL
    类似于CDLL,与眼前多少个例外的是,在函数调用期间不会释放GIL,Global
    Interpreter Lock。
  5. class ctypes.LibraryLoader(dlltype)
    dlltype为CDLL、OleDLL、WinDLL、PyDLL,这么些类有一个加载共享库的函数LoadLibrary。

加载C库更简短的法子是运用如下多少个优先成立的类实例。

ctypes.cdll
ctypes.oledll
ctypes.windll
ctypes.pydll
ctypes.pythonapi

地方提到了函数调用惯例cdecl和stdcall,cdecl的意味是函数的参数从右往左依次压入栈内,函数的调用者在函数执行到位之后承受函数的平衡,常用于X86架构的C语言里,重返值存储在EAX寄存器中,从汇编代码的角度来看,函数参数从右往左依次压栈,然后调用函数,最终修改栈指针ESP为原本的职务。stdcall,参数传递的依次也是从右到左,不过栈的平衡处理由函数自己做到,而不是调用者,再次来到值同样存储在EAX中,也就是说,函数参数压栈、函数调用之后并未像cdecl一样的栈指针ESP移动。

上面的例子在Python中调用C的printf函数,printf属于“C:\Windows\System32\msvcrt.dll”,也就是Linux上的“libc.so”。

from ctypes import *

msvcrt = cdll.msvcrt
message = b"Hello World\n"
msvcrt.printf(b"Message is %s", message)

地点的代码输出“Message is Hello
World”。此外,ctypes还允许在Python中定义结构和一道等其它高级效能,详细介绍请参考https://docs.python.org/3.6/library/ctypes.html?highlight=ctypes\#。

14-15 天内容为 飞机大战项目演练

1、开发条件

俺们在Windows
10上起来python逆向之旅,首先先河搭建开发条件,python解释器使用最新的3.6.1,IDE使用PyCharm社区版2017.1.3,下载地址如下所示,下载完成后一贯双击安装包安装即可,随后设置PyCharm的Project
Interpreter为刚刚安装的Python解释器就足以了。

【Python】https://www.python.org/downloads/
【PyCharm】http://www.jetbrains.com/pycharm/download/\#section=windows

学前环境搭建

python逆向入门教程,python入门教程

一贯上图吧

4-13 天内容为Python基础教程

图片 2

有点大,总共有19G差不多!

1-3 天内容为Linux基础命令

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图