- 博客(7)
- 收藏
- 关注
原创 软件保护技术1
前面两篇学习笔记中,关于crackme的学习,那两个小例子就反映了软件保护中验证用户合法性这一必要环节,这一环节通常采用注册码验证的方式实现。用户码U:用于区别用户的身份注册码R:用于验证用户身份注册机:把R=f(U)中的小f称为注册机验证函数:把F(U,R)中的大F称为验证函数在软件保护的初级阶段中,验证函数与注册机没有本质的区别,即:F(U,R)=f(U)-R。但是上面这种方法很危险,验证函数...
2018-02-11 09:36:11 583
原创 crackme #2 Afkayas.1
简单描述一下过程,具体的解释就省略了,初次接触crackme的可以选择看上一篇crackme#1,会详细很多~~首先我们用OD打开Afkayas.1.exe,F9运行一下,任意输入name/serial:弹框后在OD中F12暂停一下,然后Alt+k查看一下堆栈段:我们看最后一行,调用弹框rtcMsgBox函数,调用这个函数的位置在0040261C处,我们先进入msvbvm5
2018-01-31 19:46:30 314
原创 栈帧
栈帧是什么?利用EBP(栈帧指针)寄存器访问栈内局部变量、参数、函数返回地址等的手段。为单个过程,一个函数调用分配的那部分栈称为栈帧,一个栈帧的底部由EBP指向,作为在该栈帧内访问所有内容的基准(所有访问地址都以该EBP为准相对偏移),ESP则在移动着,作为该栈帧的顶部。栈帧的作用是什么?在程序中用于声明局部变量,调用函数。在函数调用时,将ESP当前的值保存在EBP中,之后以E
2018-01-28 11:24:17 548
原创 函数调用约定
函数调用约定是对函数调用时如何传递参数的一种约定。、 主要的函数调用约定有cdecl、stdcall、fastcall.一、cdecl 主要早C语言中使用,调用者负责处理栈。主要有两条:(1)函数参数以逆序顺序入栈(2)由调用者负责清理压入栈的函数参数。下面我们来看一个实例进行分析:C源代码:#include#includelong add(long
2018-01-28 10:03:09 197
原创 栈
上一篇学习完寄存器,准备开始学习栈帧,但是什么是栈?下面大致了解一下栈的作用主要作用有:暂时保存函数内的局部变量、调用函数时传递参数、保存函数返回后的地址。栈其实是一种数据结构,由高地址向低地址扩展,按照FILO后进先出的原则存储数据。下面看一下栈的示意图:一个进程中,ESP(栈顶指针)初始状态指向栈底端,随着数据的压入(PUSH),ESP上移(向低地址移动),当执行POP指令
2018-01-27 11:41:36 135
原创 IA-32寄存器
在学习栈帧之前补充一点关于IA-32寄存器的内容:寄存器共有四类:1.通用寄存器:用于传送和暂存数据,也可用于参与算术逻辑运算,并保存运算结果。IA-32中八个通用寄存器都是32位,用来保存常量和地址等。如下图:EAX:(针对操作数和结果数据的)累加器,另外还多用于函数返回值中,用于保存返回值。EBX:(DS段中的数据指针)基址寄存器ECX:(字符串和循环操作的)计数器
2018-01-27 11:13:25 1831
原创 PE文件结构学习1
PE是可移植的执行体——Portable Executable File Format一、PE文件种类:可执行系列有两种.exe和.scr.scr 1.是Windows专用的屏幕保护程序的扩展名;2.在AutoCAD中是脚本文件,以记事本方式打开,如果安装了AutoCAD 2004就会被自动改为脚本;3.SCR文件可以转换为EXE文件来运行而不影响内容;window
2018-01-26 09:43:30 465
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人