前言:本文章部分代码参考自野火的例程本人使用的是野火家的指南者开发板,芯片型号是STM32f103VET6有纰漏请指出,转载请说明。学习交流请发邮件1280253714@qq.com源代码在这里1定时器原理B站这位UP主讲51单片机定时器工作原理讲得很好2STM32定时器简介stm32有3种定时器,分别是基本定时器、通用定时器、高级定时器基本定时器是一个16位的只能向上计数的定时器,只能定时,没有外部IO通用定时器是一个16位的可以向上/下计数的定时器,可以定时,可以输出比较,可以输入捕捉,每个定时器有四个外部IO高级定时器是一个16位的可以向上/下计数的定时器,可以定时,可以输出比较,可以输
文章目录STM32中文参考手册V10.pdfTIM1的四路PWMTIM2的四路PWMTIM3的四路PWMTIM4的四路PWMSTM32中文参考手册V10.pdf下图是定时器相关引脚:在《STM32中文参考手册V10.pdf》有写:TIM1的四路PWMTIM1的PWM是带互补输出的,较为高级和复杂,有兴趣可以参考其他介绍文章,这里的代码让7个引脚输出PWM。调用: TIM1_PWM_Init(7200,0);/*10KHz*/ TIM_SetCompare1(TIM1,2000); TIM_SetCompare2(TIM1,2000); TIM_SetCompare3(TIM1,2000); T
LyScript插件提供的反汇编系列函数虽然能够实现基本的反汇编功能,但在实际使用中,可能会遇到一些更为复杂的需求,此时就需要根据自身需要进行二次开发,以实现更加高级的功能。本章将继续深入探索反汇编功能,并将介绍如何实现反汇编代码的检索、获取上下一条代码等功能。这些功能对于分析和调试代码都非常有用,因此是书中重要的内容之一。在本章的学习过程中,读者不仅可以掌握反汇编的基础知识和技巧,还能够了解如何进行插件的开发和调试,这对于提高读者的技能和能力也非常有帮助。4.10.1搜索内存机器码特征首先我们来实现第一种需求,通过LyScript插件实现搜索内存中的特定机器码,此功能当然可通过scan_me
堆栈是计算机中的两种重要数据结构堆(Heap)和栈(Stack)它们在计算机程序中起着关键作用,在内存中堆区(用于动态内存分配)和栈区(用于存储函数调用、局部变量等临时数据),进程在运行时会使用堆栈进行参数传递,这些参数包括局部变量,临时空间以及函数切换时所需要的栈帧等。栈(Stack)是一种遵循后进先出(LIFO)原则的线性数据结构。它主要用于存储和管理程序中的临时数据,如函数调用和局部变量。栈的主要操作包括压栈(添加元素)和弹栈(移除元素)。堆(Heap)是一种树形数据结构,通常用于实现优先队列。堆中的每个节点都有一个键值(key),并满足特定性质。最常见的堆类型是二叉堆(包括最大堆和最小
所谓的应用层钩子(Application-levelhooks)是一种编程技术,它允许应用程序通过在特定事件发生时执行特定代码来自定义或扩展其行为。这些事件可以是用户交互,系统事件,或者其他应用程序内部的事件。应用层钩子是在应用程序中添加自定义代码的一种灵活的方式。它们可以用于许多不同的用途,如安全审计、性能监视、访问控制和行为修改等。应用层钩子通常在应用程序的运行时被调用,可以执行一些预定义的操作或触发一些自定义代码。通常情况下,第三方应用在需要扩展一个程序功能是都会采用挂钩子的方式实现,而由于内存数据被修改后磁盘数据依然是原始数据,这就给扫描这些钩子提供了便利,具体来说钩子扫描的原理是通过
LyScript插件中默认提供了多种内存特征扫描函数,每一种扫描函数用法各不相同,在使用扫描函数时应首先搞清楚不同函数之间的差异,本章内容将分别详细介绍每一种内存扫描函数是如何灵活运用,并实现一种内存查壳脚本,可快速定位目标程序加了什么壳以及寻找被加壳程序的入口点。计算机中的壳定义加壳通常指对可执行文件或者动态链接库等二进制文件进行加密或压缩等处理,以使得这些文件难以被反汇编或破解。通常情况下,加壳会增加二进制文件的大小,并在程序运行时增加一定的开销。加壳技术通常被用于保护软件的知识产权和防止软件被盗版。通过加壳,软件开发者可以使得软件更难被破解和复制,从而保护自己的商业利益。计算机中查壳的原
钩子劫持技术是计算机编程中的一种技术,它们可以让开发者拦截系统函数或应用程序函数的调用,并在函数调用前或调用后执行自定义代码,钩子劫持技术通常用于病毒和恶意软件,也可以让开发者扩展或修改系统函数的功能,从而提高软件的性能和增加新功能。4.5.1探索反汇编写出函数原理钩子劫持技术的实现一般需要在对端内存中通过create_alloc()函数准备一块空间,并通过assemble_write_memory()函数,将一段汇编代码转为机器码,并循环写出自定义指令集到堆中,函数write_opcode_from_assemble()就是我们自己实现的,该函数传入一个汇编指令列表,自动转为机器码并写出到堆
发现漏洞的第一步则是需要寻找到可利用的反汇编指令片段,在某些时候远程缓冲区溢出需要通过类似于jmpesp等特定的反汇编指令实现跳转功能,并以此来执行布置好的ShellCode恶意代码片段,LyScript插件则可以很好的完成对当前进程内存中特定函数的检索工作。一般而言远程缓冲区溢出攻击通常利用的是一些具有缓冲区溢出漏洞的函数或是特定的汇编指令片段,如:strcpy:该函数将一个字符串复制到另一个字符串缓冲区中,但不会检查缓冲区的大小,因此很容易导致缓冲区溢出。gets:该函数将用户输入的数据读入字符串缓冲区中,但不会检查缓冲区的大小,因此很容易导致缓冲区溢出。sprintf:该函数将一个字符串
通过运用LyScript插件并配合pefile模块,即可实现对特定PE文件的扫描功能,例如载入PE程序到内存,验证PE启用的保护方式,计算PE节区内存特征,文件FOA与内存VA转换等功能的实现,首先简单介绍一下pefile模块。pefile模块是一个用于解析Windows可执行文件(PE文件)的Python模块,它可以从PE文件中提取出文件头、节表、导入表、导出表、资源表等信息,也可以修改PE文件的一些属性。可以用于分析针对Windows平台的恶意软件、编写自己的PE文件修改工具等场景。使用pefile模块可以快速方便地定位到PE文件的一些关键信息,例如程序入口点、程序头、代码的开始和结束位置
x64dbg是一款开源、免费、功能强大的动态反汇编调试器,它能够在Windows平台上进行应用程序的反汇编、调试和分析工作。与传统的调试器如Ollydbg相比,x64dbg调试器的出现填补了Ollydbg等传统调试器的不足,为反汇编调试工作提供了更高效、更可靠的解决方案。正是因为有了这些优点,才能使其成为当今最受欢迎的反汇编调试软件之一。x64dbg官方地址:https://x64dbg.com/x64dbg和Ollydbg虽都是Windows平台上的调试器工具,但它们有一些不同之处:支持架构:Ollydbg仅支持x86架构,而x64dbg支持x86和x64架构,因此x64dbg可以调试64位