Reverse
文章平均质量分 58
欧晨eli
达·芬奇说:“理论脱离实践是最大的不幸,实践应以好的理论为基础。”
展开
-
ml.exe编译器常用选项
不同版本的masm在用法上有很大不同,这里所指的是masm6.14及以上版本的编译器ml.exe的命令行用法。ml [/选项] 汇编源文件列表 [/link 链接选项]例如ml /c /coff /Cp Test.asm(多个选项之间一定要加空格)下边是ml的选项/AT允许支持微型内存模式。对与.COM文件格式的要求互相冲突的代码给出错误信息。注意该选项和.MODEL TINY伪指令并不完全相同/Bl filename 选择其他的连接器/c 只编译,不连接/coff 生...转载 2022-04-12 14:55:13 · 973 阅读 · 0 评论 -
SSE 汇编指令集 CVTSI2SS CVTSS2SI CVTTSS2SI 作用
SSECVTSI2SS – 把一个64位的有符号整型转换为一个浮点值,并把它插入到一个128位的参数中。内部指令:_mm_cvtsi64_ssCVTSS2SI – 取出一个32位的浮点值,并取整(四舍五入)为一个64位的整型。内部指令:_mm_cvtss_si64CVTTSS2SI – 取出一个32位的浮点值,并截断为一个64位的整型。内部指令:_mm_cvttss_si64SSE2CVTSD2SI – 取出最低位的64位浮点值,并取整为一个整型。内部指令:_mm_cvtsd_si64CVTS.转载 2022-02-11 16:47:10 · 5416 阅读 · 0 评论 -
单精度浮点数与16进制数转换源程序(正负数都能转换)
//遵循ieee754标准 #include <stdio.h>#include <math.h>typedef unsigned char u8;typedef unsigned int u32;float HextoFloat(u32 val);u32 FloattoHex(float val);int main(void){ float a,b; u32 c,d; while(1) { printf("请输入一个小数:"); .转载 2022-02-11 16:02:38 · 849 阅读 · 0 评论 -
PC逆向之代码还原技术,第一讲基本数据类型在内存中的表现形式.浮点,指针寻址公式
目录代码还原技术一丶简介代码还原二丶代码还原中的数据类型表现形式1.整数类型2.无符号整数3.有符号整数4.浮点数数据类型5.浮点编码4.Double类型解析.三丶浮点汇编1.浮点栈2.浮点汇编3.使用内联浮点汇编实现加法四丶布尔类型地址丶指针丶引用表达形式1.指针的寻址方式常量 #define与const定义总结:END代码还原技术一丶简介代码还原例子一:我们很多人都学习过汇编.但是汇编的核心知识就是我能看转载 2022-02-11 14:56:16 · 724 阅读 · 0 评论 -
C语言的入口函数
起因因为调试Rust,在main函数打了断点看了调用堆栈的信息.顺便看看C语言中在调用main函数之前的堆栈信息.这里主要以控制台程序为例.C语言中调用main函数的堆栈信息先看一下调用的关系图:在C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\crt\src\vcruntime目录中,找到了exe_main.cpp文件,#de..转载 2022-02-10 17:14:01 · 1958 阅读 · 0 评论 -
___security_cookie机制,防止栈溢出
从研究底层和汇编以来,已经多次接触到“栈溢出”这个名词了。这次在汇编码中看到了个不明就里的 ___security_cookie ,查了下,原来是编译器的安全检查机制。转载一篇文章:首先,security cookie并不是windows系统自带的保护机制,并不是说一个确实存在溢出漏洞的程序,放到带security cookie保护的环境中,就不能正常溢出了。那么,到底是什么是security cookie呢?我觉得从广义上讲,它应该是一种保护栈的机制,提供这种保护的,是程序本身,编译进程转载 2022-02-10 16:32:33 · 1159 阅读 · 0 评论 -
1-2 Windows下启动函数(真正的入口函数) 之 寻找入口函数与_security_init_cookie
上一节详细介绍了/MT /MD之间的区别。在这一节中,我们首先要找到win32程序真正的启动函数。win32程序分为两种:1.控制台(/SUBSYSTEM:CONSOLE )2.GUI(/SUBSYSTEM:WINDOWS)首先看控制台版本的:写一段最简单的,或者就直接使用编译器参数的默认main函数,如下:// EntryFunction.cpp : 定义控制台应用程序的入口点。// #include "stdafx.h" int _tmain(int arg.转载 2022-02-10 16:30:26 · 922 阅读 · 0 评论 -
关于C++对象作为返回值的背后详解
基本数据类型(双精度浮点数除外)作为返回值时都是通过寄存器eax来保存返回的数据。对象作为返回值时,在进入函数前申请空间作为返回对象,并将空间首地址进行压栈传入,函数体内部创建对象,完成操作后,会执行数据拷贝到返回对象中。通过反汇编查看,发现并没有利用这个返回对象,在函数退出后,会再次在栈上分配空间作为临时对象,将返回对象的数据再次传入到临时对象中来,之后的所有操作都是围绕着这个临时对象来处理的参考:关于C++对象作为返回值的背后详解 - 简书...原创 2022-01-28 15:36:10 · 1407 阅读 · 0 评论 -
lea指令小结
lea指令小结对于寄存器来说:第二个操作数是寄存器必须要加[],不然报错,这里lea就是取[寄存器]的值,如:mov eax,2lea ebx,[eax];执行后ebx=2mov ebx,eax;等同于上句lea ebx,eax;编译器报错: error A2070: invalid instruction operands对于变量来说加不加[]都是一样的效果,都是取变量的地址,相当于指针如:num dword 2lea ebx,numlea eax,[num]; eax为原创 2022-01-20 14:51:04 · 4120 阅读 · 0 评论 -
反调试技术总结(看雪)
大概是在一年半以前我在自己CSDN博客上写了详解反虚拟机技术和详解反调试技术,没想到看的人还很多,有人甚至给我发私信发邮件,在百度和谷歌搜索“反调试”和“反虚拟机”,第一条结果就是我的文章。我决定在看雪也分享一下。当然我只是做了个整理收集的工作,没有一条技术和一行代码是我原创的,参考链接会附在最后。反调试技术,恶意代码用它识别是否被调试,或者让调试器失效。恶意代码编写者意识到分析人员经常使用调试器来观察恶意代码的操作,因此他们使用反调试技术尽可能地延长恶意代码的分析时间。为了阻止调试器的分析..转载 2021-12-07 10:12:18 · 3122 阅读 · 2 评论