首页 > TAG信息列表 > ECX
stdshared_ptr 采坑记录
std::shared_ptr 采坑记录 class MyClass { public: MyClass(); ~MyClass(); int GetNumber(); private: }; MyClass::MyClass() { printf(__FUNCTION__); } MyClass::~MyClass() { printf(__FUNCTION__); } int MyClass::GetNumber() { printf(__FUNCTION__); returnDelphi System.Insert -从指定位置开始,将子字符串插入字符串(或将动态数组插入动态数组)
Delphi System.Insert -从指定位置开始,将子字符串插入字符串(或将动态数组插入动态数组) 原型: procedure _Insert{ source : ShortString; var s : openstring; index : Integer }; asm { ->EAX Pointer to source string } { EDX Pointer to destinatio为什么 C# 访问 null 字段会抛异常?
一:背景 1. 一个有趣的话题 最近在看 硬件异常 相关知识,发现一个有意思的空引用异常问题,拿出来和大家分享一下,为了方便讲述,先上一段有问题的代码。 namespace ConsoleApp2 { internal class Program { static Person person = null; static void Main(stC++构造、析构,四个调用约定
1).识别构造 1.构造函数优先调用 2.ecx传参,且函数内部会将ecx给this赋值(this可能是一块内存空间,也可能是寄存器变量)且返回this指针 3.可以点击this指针,可能会有多次调用 注: 构造析构都是thiscall,不能修改ecx单机部署方案
单机部署方案 约定 操作系统:Centos 7.0 x64 域名: 文档内域名规划参见 系统部署/准备/域名 操作权限: root 服务清单 supervisorctl > 3.0 neo4j 3.5.x mysql 5.7delete与delete []的区别
一直很好奇delete 和 delete []有什么不同?今天我从汇编的角度看一看 测试源代码 #include <iostream> int main() { char* data1 = new char[10]; char* data2 = new char[10]; std::cout << data1 << data2 << std::endl; delete[] data1; delete data2;函数调用约定, 以及特殊种类
C/C++函数调用约定 调用方式 参数 栈恢复 __fastcall ecx,edx,esp n __stdcall esp 0 __cdecl esp n __stdcall(class) ecx,esp n __cdecl(class) ecx,esp 0 __fastcall(class) ecx,edx,esp n 以上为VS2010, 实际程序有些特殊约定方式(其他编译器,反调试——8——虚拟机检测
反调试——8——虚拟机检测 其实虚拟机检测也无外乎就是检测一些虚拟机特有的特征,然后来判断是否是在虚拟机里面,比如说这里(查看系统中运行的服务): 但是不能直接盲目的通过VMware这六个关键字母就判断是在虚拟机里面了,因为你的电脑如果开了虚拟机,也会有一些VMware开头的虚拟11.10-10-12分页
目录 0.Win7设置10-10-12分页 1.10-10-12分页规则 2.10-10-12分页PDE PTE属性探测 <1>.P位 <2>.R/W位 <3>.U/S位 <4>.PS位 <5>.A位 <6>.D位 3.PDT PTT 基址 4.MmIsAddressValid(Win x86 10-10-12) 5.代码实例 <1>.通过代码给0线性地址挂物理页并读写 <2>.0线性地址实现SHELLCODE10.任务门(Task Gate)
目录 0.任务门描述符 1.任务门执行流程 2.任务门权限检查 3.任务门示例 <1>.任务门 <2>.任务门详细版本 <3>.任务门进R1 <4>.任务门进R1详细版本 0.任务门描述符 高4字节 15-12(BIT) P == 1(有效段描述符) DPL == 11/00(段描述符权限 0/3 Windows未使用1 2环) S == 0(系统网络游戏逆向分析-7-人物背包遍历
网络游戏逆向分析-7-人物背包遍历 前面我们找到了使用人物背包的函数调用,但是并不完美,因为我们需要处理一些参数,比如说用背包第二个物品,就需要push 1像数组一样从0 1 2 4 5 6这样来数,这对于程序员来说没问题,但是对于使用者肯定是不好的,所以我们需要得到背包的内容,来遍历背包,再生成shellcode并自动提取:
//生成shellcode并自动提取: #include <stdio.h> #include <Windows.h> int main(int argc, char * argv[]) { DWORD Start, End, Len; goto GetShellCode; __asm { ShellCodeStart: mov ebx, dword ptr fs : [0x30] mov ecxIF多分支逆向分析
IF多分支逆向分析 案例 CPP代码 #include "stdafx.h" int cnt; void Function(int x, int y) { if (x == 1) { cnt = 1; } else if (y == 1) { cnt = 1; } else { cnt = 0; } } int main(int argc, char* argv[]) { Function(2,3); return 0; } 反汇编代码 00401068【reverse】逆向3 寻找地址
【reverse】逆向3 寻找地址 寻址公式一:[立即数] 读取内存的值: mov eax,dword prt ds:[0x13FFC4] 将内存编号为0x13FFC4、0x13FFC5、0x13FFC6、0x13FFC7的数据写入eax中 向内存中写入数据 mov dword prt ds:[0x13FFC4],eax 将eax的数据写入内存编号为0x13FFC4、0x13FFC5、0x13FFCpwnable_orw
pwnable_orw 1.ida分析 首先程序的第一个函数实现了一个沙盒的功能,禁止提权和只能调用一部分的函数。 所以大概思路就是写入shellcode打开flag然后读出来。 2.查看可用函数 刚好open,read,write函数都可以使用。 3.解决 exp from pwn import * from LibcSearch两个64位数值的相减(AT&T汇编)
代码如下: .section .data data1: .quad 7252051615 data2: .quad 5732348928 output: .asciz "The result is %qd\n" .section .text .globl main main: nop movl data1, %ebx movl data1+4, %eax movl data2, %edx movl data2+4网络游戏逆向分析-3-通过发包函数找功能call
网络游戏逆向分析-3-通过发包函数找功能call 网络游戏和单机游戏的分析有相似点,但是区别还是很大的。 网络游戏和单机游戏的区别: 网络游戏是需要和服务器进行交互的,网游中的所有功能几乎都会先发送封包数据到服务器,然后有服务器做出判断后反馈给客户端,客户端才会产生对应的相关进入32位保护模式之路
; haribote-os boot asm ; TAB=4 BOTPAK EQU 0x00280000 DSKCAC EQU 0x00100000 DSKCAC0 EQU 0x00008000 ; BOOT_INFO CYLS EQU 0x0ff0 ; 设定启动区 LEDS EQU 0x0ff1 VMODE EQU 0x0ff2 ; 关于颜色数目的信息 颜色的位数 SCRNX EQU 0x0ff4 ; 分辨率OD入门笔记
指令 解释 OD汇编指令 NOP 无操作 PUSH 将数据压如堆栈中 POP 出栈(与PUSH相反) PUSHAD 所有通用寄存器的内容按一定顺序压入到堆栈中,相当于 ’PUSH EAX,PUSH ECX,PUSH EDX,PUSH EBX,PUSH ESP,PUSH EBP,PUSH ESI, PUSH EDI’ POPAD 该指令与PUSHAD正好相反,它从大神论坛 逆向分析 Internet Download Manager 序列号算法 附IDM注册机完整源码
## 1\. 前言 ### **idm version : 6.38 Build 23** ## 2.算法逆向 ### IDM的序列号验证函数定位在: ### 下面是在IDA下的代码分析: ```.text:00510010 push ebp.text:00510011 lea ebp, [esp-1FCh].text:00510018 sublinux_0.11-memory.c-get_free_page
unsigned long get_free_page (void) { register unsigned long __res asm ("ax"); __asm__ ("std ; repne ; scasb\n\t" "jne 1f\n\t" "movb $1,1(%%edi)\n\t" "sall $12,%%ecx\n\t" "让程序进入ring0级执行
让程序进入ring0级执行 在保护模式下,ring0有至高无上的权限,他一直是很多***程序员追求的目标,在NT平台上,MS对系统表格作了保护,不能在象win9x那样,去直接修改系统表格,但是还是有不少办法能够进入ring0的,例如,在国内,最早sinister利用编写驱动程序的方法进入ring0,这也【老刘谈算法】多次多项式的快速求值——字符串转双字函数分析(2)
在Masm32Lib中给出了3个十进制的字符串转双字函数,其1和其2如下, a2dw.Asm; ######################################################################### ; -------------------------------------- ; This procedure was written by Iczelion ;【老刘谈算法】直接从内存中找答案——字符串转双字函数分析(3)
a2dw.asm; ######################################################################### ; -------------------------------------- ; This procedure was written by Iczelion ; -------------------------------------- .386【老刘谈算法】这位运算玩的真溜—strlen函数的汇编实现分析
首先挂下代码,;原函数作者为Agner Fog,出处为MASM32开发包,在此表示感谢。 ;中文注释修改&添加 By 老刘。 .486 .model flat, stdcall option casemap :none .code OPTION PROLOGUE:NONE OPTION EPILOGUE:NONE align 4 StrLen