逆向
文章平均质量分 82
阿拉垮神登
这个作者很懒,什么都没留下…
展开
-
crackme--Cruehead-CrackMe-3
总结算法:程序是一个KeyFile类型,需要一个文件存在才能成功破解。校验值如果与文件中的第15位到18位相同,那么就破解成功。破解可以按照它给的要求去完成这么一个Key文件,又或者是找到关键跳转点对其进行强制跳转或NOP填充的修改。下面就是按照要求的一段VB代码,VB的逻辑有些乱,看着感觉有些不对。将异或后的值累加,再将累加和与12345678进行异或,如果这异或的结果与字符串之后四位的值相等就破解成功。基本就是重复一遍算法,然后将前14位得到的结果补充到后四位上,来完成文件的创建。之后对进入函数查看。原创 2022-09-03 20:31:52 · 231 阅读 · 0 评论 -
C语言----指针
函数指针指向的可以是数据区也可以是代码区,又因为函数指针的类型,所以用函数指针指向数据区的具有函数功能的硬编码数据也是可以执行的。结合数组本身的特点,数组是一块连续分配内存的存储单元,所以存储的数据是连续存放的。在使用不同类型的数组指针指向数组时,注意指针的类型宽度,这会决定在对指针指向地址偏移后取该地址下的几个字节的数据。指针的出现主要是为了存储地址,赋值时可以直接将变量的地址赋给指针。这里可以看出指针其实还可以有多种表达形式,不同的表达形式对应的反汇编代码是一样的,所以编译器执行的操作也是一样的。...原创 2022-07-17 13:22:46 · 1403 阅读 · 0 评论 -
C语言-switch
C语言-switchswitch(情况){ case 1: //执行代码; break; case 2: //执行代码; break; case 3: //执行代码; break; case 4: //执行代码; break; default: //如果没有以上的情况,则执行default中的语句 break;}以上是switch使用的基本格式,它会通过输入的情况跳转到对应的 c原创 2022-04-17 00:09:04 · 511 阅读 · 0 评论 -
C语言结构体
C语言结构体:数据类型数据大小char1字节short2字节int4字节float4字节double8字节longlong8字节数组自己设置结构体自己设置在我们存储数据时,往往根据数据大小来选择数据类型。当我们要设置一组数据进行存储的时候基础的数据类型就无法满足我们的要求了,我们就开始考虑数组或者是结构体。数组与结构体的区别在哪儿?区别就在数组存储的是同一个类型的数据,而结构体可以存储多个类型的数据。 结构体st原创 2022-04-15 21:21:14 · 395 阅读 · 0 评论 -
C语言-参数-返回值-局部变量-数组
C语言-参数-返回值-局部变量-数组: 返回值char Funtion(){ //10000行代码 return 10;}//c语言角度:这里定义的函数类型是char(字符型),表示我将返回的的数据是一个字符型数据//汇编语言角度:我创建了个函数,函数的返回值是一个字节int main(){ char i = Funtion(); return 0;}//因为我们设置的是返回一个字符型返回值,所以对应的用一个字符型变量去接收对应的反汇编:call Fu原创 2022-04-15 21:17:38 · 652 阅读 · 0 评论 -
C语言函数反汇编
C语言函数反汇编 从反汇编的角度,看C是怎么创建函数的。在创建函数的过程中系统做了哪些准备,数据被存放在那里,又是如何完成函数操作的,参数与局部变量在底层硬件中又是怎么流动的?函数的创建与堆栈操作密切相关空函数主函数带参函数无参、有局部变量的函数带参且有局部变量的函数 分别从这些函数入手,查看反汇编代码,发现异同,从而加深C语言函数定义的正向理解,以及函数的反汇编代码。空函数与主函数://空函数与主函数#include "stdio.h"void Plus(){ }原创 2022-03-24 23:35:35 · 4074 阅读 · 1 评论 -
逆向学习笔记
滴水逆向一: 信息的存储:一切信息在电脑中的存储方式都是用二进制存储。为了方便显示和,电脑将二进制数以十六进制数显示,八位二进制数为一字节,一字节是系统操作的基本单位,系统通常用两个十六进制数来表示一字节。 PE文件结构:pe文件结构是在Windows上运行的可执行文件必须遵守的格式。(程序从哪里开始,数据存在哪里,程序放在哪里)十六进制的3c转换成十进制就是60,表示从六十以后四个字节就是三十二位信息的起始点,但并不是程序运行的起点。依照顺序依次查找,最终定位到00000111,原创 2022-03-18 12:45:37 · 2350 阅读 · 0 评论 -
缓冲区溢出(栈溢出)
栈溢出(缓冲区溢出)在了解栈溢出之前,我们需要了解几个概念:堆栈是什么以及汇编语言中的call指令的特点。堆栈: 堆栈是一个特定的存储器或寄存器,其本质就是存储数据的内存。在实际应用中,堆栈会用于存储临时变、函数调用、中断切换时保存和恢复现场数据。 如图所示,堆栈就是内存中的某一片区域,每一个堆栈的内存单元都有唯一一个物理地址,且内存单元的大小都统一是4个字节大小。并不是esp和ebp之间的范围才是堆栈,整个区域都是堆栈,而esp(栈顶)和esp(栈底)的作用只是定位数据的位置。原创 2022-04-15 12:17:02 · 6301 阅读 · 3 评论