ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

逆向入门crackme01

2021-12-30 12:34:29  阅读:142  来源: 互联网

标签:语句 逆向 函数 寄存器 程序 跳转 执行 crackme01 入门


前言

通过160个crackme系列视频练习入门逆向(大家可以一起追更学习,比较适合没基础的新手入门)

所谓逆向,也是和web一样分析程序的逻辑,只不过可能注重的点不一样,语言也不一样,不过不同语言是没有什么本质区别的,都是实现一些人设计的需求,思路的复现,只要我们把重点放在分析程序的设计思路上时,语言的隔阂就会大大减小,就像学英语,不是为了记几个单词和句子,而是将其转化为能理解的东西,拓宽我们了解世界的渠道,不管你是汇编,是php,是c,是Java,是中美日韩各种乱七八糟的语言,我想我们都是有一套共同的认知系统的

工具:OllyDbg、ExeInfo查壳工具、IDA

01 abexcm5

运行该程序,输入字符串,会检查是否正确

OD打开,先学习一下如何看汇编语句,它是一句句指令组成,关键字开头,代表执行什么操作,后面是需要的对哪些对象执行该操作

看不太懂,先学习一下基础知识

基础知识

程序数据都是以机器码的形式存储在硬盘中的,程序要执行时,会装载到内存,内存是cpu和硬盘之间的数据缓冲区,cpu读取内存中的指令,执行对应的操作

寄存器是cpu内部的存储设备,在执行指令时,控制器把需要用到的数据拿到寄存器,运算器进行运算,最后将结果返回到内存,在寄存器中cpu运算不需要IO传输,速度最快,但是数量有限,下图是执行3+1的过程,EAX是通用寄存器的名称(x86只有几个,都有单独的名称)

写一个c函数,这是计算一个3x^2+4x+5值的函数,main函数调用,很简单,编译运行,生成exe文件

查看exe文件的汇编代码,这是main函数的

c = dword ptr -4
// 这是一个变量var_4
// dword 双字 就是四个字节(一个字节存储8位无符号数也例如01110111)
// ptr是指针 指向一个地址 是栈(什么是栈?)偏移4位的位置
// 将此位置的数据赋值给c,占4个字节32位
push rbp (rbp64位/ebp32位 是栈底指针寄存器)
...

看了一些文章对此过程的粗浅理解

标签:语句,逆向,函数,寄存器,程序,跳转,执行,crackme01,入门
来源: https://www.cnblogs.com/bitset/p/15748125.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有