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

本套教程15天(黑马技术员的授课时间算的)

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

学前情状搭建

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

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

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、奥莱DLL、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\#。

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

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等第,使用了DCR-V0到DXC607共四个与众不一致的调节和测量检验贮存器,这么些贮存器特地用于管理硬件断点。D君越0到DEvoque3存款和储蓄硬件断点地址,意味着同不正常候内最两只可以有4个硬件断点,D本田CR-V4和DENCORE5保留,D福睿斯6是情形存放器,说明被断点触发的调养事件的体系,D奥迪Q57是开关存放器,同期也蕴藏了断点的例外门类,满含指令推行时制动踏板、数据足以写入时暂停、有数量读或许写但不推行时行车制动器踏板。硬件断点使用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,…

14-15 天内容为 飞机战争项目练习

直白上海教室吧

图片 2

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

亟需的留言笔者发你。

发表评论

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

网站地图xml地图