![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
逆向笔记
sanqiuai
QQ群746836277
展开
-
ue4游戏dump
ue4 dump原创 2023-02-10 09:39:41 · 4241 阅读 · 2 评论 -
unity游戏dump
unity游戏dump转载 2023-01-27 20:15:04 · 1321 阅读 · 0 评论 -
windows下LIB和DLL的区别与使用
共有两种库:一种是LIB包含了函数所在的DLL文件和文件中函数位置的信息(入口),代码由运行时加载在进程空间中的DLL提供,称为动态链接库dynamic link library。一种是LIB包含函数代码本身,在编译时直接将代码加入程序当中,称为静态链接库static link library。共有两种链接方式:动态链接使用动态链接库,允许可执行模块(.dll文件或.exe文件)仅包含在运行时定位DLL函数的可执行代码所需的信息。静态链接使用静态链接库,链接器从静态链接库LIB获取所有被引用函数,转载 2022-05-27 15:20:00 · 666 阅读 · 0 评论 -
C++模板的汇编原理
template<typename ADDRESS>ADDRESS add(ADDRESS pAddr1, ADDRESS pAddr2){ return (ADDRESS)pAddr1 + (ADDRESS)pAddr2;}int main(){ MessageBeep(1); float f1 = 1.11, f2 = 2.22; double d1 = 1.1111, d2 = 2.2222; int i1 = 1, i2 = 2; add(f1, f2); ad原创 2022-05-06 16:09:56 · 135 阅读 · 0 评论 -
虚函数表和虚函数表指针的汇编分析
1.什么是虚函数?2.虚函数有什么用?3.怎样才产生虚函数表?4.虚函数表存放在什么位置?5.虚函数表长什么样?6.为什么用虚函数实现多态时需要用到指针或者引用,而不能直接赋值?假设有这么一个需求class Creature{ public: int hp; int mp; char* name; void Attack(); void Defend(); void Dead(); Creature(char* name);};class Player:p原创 2022-05-02 02:02:46 · 1085 阅读 · 0 评论 -
C++类对象调用时的汇编表示
C代码Class.hclass Creature{ public: int hp; int mp; char* name; void Attack(); void Defend(); void Dead(); Creature(char* name);};class Player:public Creature{public: int nSmart; int nPower; void Buy(); Player(char* name);};Cla原创 2022-05-01 14:38:12 · 306 阅读 · 0 评论 -
汇编下循环对数组访问的分析
C代码DWORD FindRole(PDWORD pRoleArray, int Roleid);static PDWORD pRoleAddrArray=NULL;int main(){ pRoleAddrArray = (PDWORD) malloc(sizeof(DWORD)*8); for (int i = 0; i < 8; i++) { pRoleAddrArray[i] = 0x11111111 * i ; } DWORD role = FindRole(pRo原创 2022-04-30 17:44:06 · 593 阅读 · 0 评论 -
VS你想干神么
2.3.其他受害者//https://blog.csdn.net/newstarao/article/details/6293159VS:你不写BUG,我就帮你写,我就是BUG的制造机纯恶心人是吧原创 2022-04-30 00:00:19 · 126 阅读 · 0 评论 -
如何使用WINSCP连接windows服务器
前沿 winscp是一款非常好用的文件传输工具,但往往在windows系统上,使用是SFTP模式会出现无法连接的情况其最主要的原因,是因为windows系统默认没有开启SSH协议 前置准备 在自己的电脑上,下载winscp软件在服务器的主机上,下载OpenSSH软件,这个软件可以直接上我的云盘获得 地址:(提取码:uvxj) 第一步 在服务器上解压下载好的openssh, 并在解压的文件夹内,打开powersell 注:服务器默认是以管理员身份打开,如果没有,则手动使用管理员模式打开 在命令转载 2022-04-26 00:41:35 · 6505 阅读 · 2 评论 -
汇编:循环语句
whilevoid while01(){ int i = 0; while (i<20) { i++; }}i<20:jgei<=20:jgi>20:jlei>=20:jlpush ebpmov ebp,espsub esp,44push ebxpush esipush edimov dword ptr ss:[ebp-4],0cmp dword ptr ss:[ebp-4],14jge 0623_x86_x64_asm.41184原创 2022-04-25 01:35:06 · 636 阅读 · 0 评论 -
X64下分析调用约定的汇编代码
C代码和X86的一样int _cdecl cd_call(int a1, int a2, int a3, int a4, int a5){ int t_a1 = a1; int t_a2 = a2; int t_a3 = a3; int t_a4 = a4; int t_a5 = a5; return t_a1 + t_a2 + t_a3 + t_a4 + t_a5;}int _stdcall std_call(int a1, int a2, int a3, int a4,原创 2022-04-24 21:58:35 · 627 阅读 · 0 评论 -
X86下分析四种调用约定的汇编代码
C代码int _cdecl cd_call(int a1, int a2, int a3, int a4, int a5){ int t_a1 = a1; int t_a2 = a2; int t_a3 = a3; int t_a4 = a4; int t_a5 = a5; return t_a1 + t_a2 + t_a3 + t_a4 + t_a5;}int _stdcall std_call(int a1, int a2, int a3, int a4, int a5)原创 2022-04-24 14:07:37 · 302 阅读 · 0 评论 -
printf的宽窄字符输出的学习笔记
写代码的时候遇到一点问题LPSTR a1 = "abc"; printf("窄字符abc=%s,size=%llu\n", a1,sizeof("abc")); LPSTR a2 = "我是"; printf("窄字符我是=%s,size=%llu\n", a2, sizeof("我是")); LPWSTR a3 = L"abc"; printf("宽字符abc=%ls,size=%llu\n", a3, sizeof(L"abc")); LPWSTR a4 = L"我是"; printf(原创 2022-04-22 19:49:15 · 1085 阅读 · 4 评论 -
清理vs临时文件,优化VS项目大小的代码
REM www.yjxsoft.com 清理项目垃圾文件 //del *.log *.ipch *.aps *.user /sdel *.exe *.dll /sdel *.sdf /sdel *.ilk *.pdb *.exp *.tlog *.lastbuildstate /sdel *.obj *.pch *.idb/spause原创 2022-04-22 16:25:41 · 394 阅读 · 0 评论 -
git命令学习笔记
git init 把该目录变成git可以管理的仓库git status 查看本地文件更改的状态git add . 添加文件到暂存区。git add [包含相对路径的文件名] 例如 git add abc/123.txt ,意思是仓库下的abc文件夹下的123.txt文件,不要是/abc/123.txtgit rm [包含相对路径的文件名] 在工作区和暂存区删除了一个文件。要删除的文件没有修改过,就是说和当前版本库文件的内容相同。git rm -f [包含原创 2022-04-15 23:14:46 · 176 阅读 · 0 评论 -
BAT命令-清理VS项目的垃圾文件和优化VS项目大小
REM 清理项目垃圾文件 //del *.log *.ipch *.aps *.user /sdel *.exe *.dll /sdel *.sdf /sdel *.ilk *.pdb *.exp *.tlog *.lastbuildstate /sdel *.obj *.pch *.idb/spause原创 2022-04-14 21:55:40 · 503 阅读 · 1 评论 -
win10 x64 内核结构体
nt!_EPROCESS +0x000 Pcb : _KPROCESS +0x2d8 ProcessLock : _EX_PUSH_LOCK +0x2e0 UniqueProcessId : Ptr64 Void +0x2e8 ActiveProcessLinks : _LIST_ENTRY +0x2f8 RundownProtect : _EX_RUNDOWN_REF +0x300 Flags2 : Uint原创 2021-08-27 06:28:21 · 958 阅读 · 0 评论 -
保护模式阶段性测试
1.# define _CRT_SECURE_NO_WARNINGS # include<Windows.h># include<stdio.h>void JumpToZero();void hookfunc();int ReadMemory(OUT PVOID buffer, IN DWORD dwAddr, IN DWORD dwLength);DWORD g_KernelValue;DWORD g_PDTIndex;DWORD g_PTTIIndex;DW.原创 2021-08-21 07:26:29 · 186 阅读 · 0 评论 -
学c++自己遇到的一些问题
定义了一个结构体类型struct A{ int a; void func() { }};结构体在栈中分配int main(){ A a; printf("%d",a.a); return 0;}无法编译 C4700使用了未初始化的局部变量“a”编译器没有生成默认的构造函数和析构函数当我手动创建了构造函数和析构函数之后,编译器调用了我创建的构造函数和析构函数。打印结果为1结构体在堆中分配 int main(){ A *a = new A; print原创 2021-04-20 18:00:28 · 107 阅读 · 0 评论 -
c到c++的转换
当使用win32api的时候我们都会发现一个句柄的东西被多次传入api中MessageBox (句柄, 显示内容,标题,MB_OK) ;句柄最终指向的是一个结构体,很多api同时为一个结构体进行操作可能这就是面向过程的语言进行面向对象编程吧先定义一个结构体,进行初始化,调用一个函数并传入该结构体的地址struct animal{ int type; int height; int weight; char* name;};void attack(animal* a){ prin原创 2021-04-19 17:57:42 · 358 阅读 · 0 评论 -
c语言的汇编表示(指针数组和数组指针)
c语言的汇编表示(指针数组和数组指针)c的两大支柱:数组和指针,优良的继承并发扬了它的爹的两大特性:地址加偏移。什么是数组那就得先说明什么是数组当我们定义了一个数组时,虽然没有赋值,编译器已经给我们划分好了空间int main(){ int a[10]; printf("%d", sizeof(a));//结果为40,情理之中}此时数组里面的值都是垃圾数据,比如a[0]=4011276318,如果开启了缓冲区溢出检查的话,编译器还会爆异常所以数组就是在栈中从上到下依次排序的相同变量原创 2021-04-18 18:34:09 · 685 阅读 · 1 评论 -
c语言的汇编表示 数组,指针和字符串
c语言的汇编表示 数组,指针和字符串1.void func(int a[]){}int main (){ int a[10]; func(a[1]); //报错 原因:a[1]被当作是一个int类型 ,并不奇怪 return 0;}int main (){ int a[10]; func(a[1]); //这样就没有问题 return 0;}void func(int a){}2.void func(int a[11]){ //居然可以在形参中定义带有大原创 2021-04-17 22:56:11 · 621 阅读 · 0 评论 -
C语言的汇编表示(指针)
C语言的汇编表示(指针)什么是地址对32位操作系统而言,内存被抽象为一个4GB大小的空间(虽然我们的实际物理内存可能远大于4GB,我的电脑的物理内存就是32GB),4GB非常大,所以以一个字节为单位来管理内存,如何再众多的内存单元中定位特指的内存单元呢,地址(门牌号),每一块内存单元都有唯一的地址与之对应,4GB大的内存恰恰要4字节大小的地址才能容纳下什么是指针指针通常是指针变量的简称,int变量,可以容纳四个字节,char变量,可以容纳1个字节,指针变量也就是类型中存在的变量可以容纳4个字节,通常原创 2021-04-17 18:43:32 · 1209 阅读 · 1 评论 -
c语言的汇编表示(数据的存储)
c语言的汇编表示(变量的存储)day_03c源码int main (){char a=1;char* pa = &a;}汇编代码char a=‘c’;00BC1903 mov byte ptr [ebp-5],1char* pa = &a;00BC1907 lea eax,[ebp-5]00BC190A mov dword ptr [ebp-0Ch],eax其堆栈形式:ebp-0c e7 ->pa原创 2021-04-16 18:55:47 · 205 阅读 · 1 评论 -
2021-04-15
c语言的汇编表示(函数传参)day02函数申明_cdcall 和_stdcall 传参从右到左压栈例如:a(1,2,3,4);汇编代码push 4;push 3;push 2;push 1;call a;函数申明_fastcall 传参a(1,2,3,4);汇编代码push 4;push 3;mov edx,2;mov ecx ,1;call a;edx和ecx寄存器用来暂时存储函数的参数eax的用途是保存函数的返回值那esi,edi,ebx的寄存器有什么作用呢在原创 2021-04-15 15:27:39 · 49 阅读 · 0 评论 -
**c语言的汇编表示(函数部分)day01**
c语言的汇编表示(函数部分)day01_2021_4_13俗话说不学汇编的c程序员不是一个出色的c程序员,写这一篇文章目的主要是记录我的逆向学习,以供以后复习使用学习汇编结合c一起学习会比较容易(很多学习编程的人第一步学习的就是c,应该利用起来),所以如何观察反汇编代码非常重要,我这里使用的是vs2019反汇编之前所需要做的功课,有一些优化我们暂时不需要用到可以取消掉1.配置属性,c/c++,优化,已禁用2.c/c++常规,支持仅我的代码调试 否3.c/c++代码生成,基本运行时检查,默认值**原创 2021-04-13 22:07:21 · 170 阅读 · 0 评论