C++与x64汇编混合编程——WX逆向学习(五)

逆向分析 · 2024-01-15

寄存器区别

32位:

eax ebx ecx edx esi edi esp ebp
eip
eflags

64位:

rax rbx rcx rdx rsi rdi rsp rbp r8 r9 r10 r11 r12 r13 r14 r15
rip
rflags

寄存器位数从32位变成64位,新增了几个寄存器

函数调用约定

_cdecl
_stdcall
_thiscall
_fastcall

在64位下,大部分情况下使用_fastcall

返回值

rax eax ax al
64 32 16 8
QWORD
DWORD
WORD
BYTE

返回值放到rax里

参数传递

快速调用约定:
32位:使用2个寄存器
64位:使用4个寄存器,如果有更多参数,则使用堆栈,且顺序固定为:rcx > rdx > r8 > r9 > 堆栈

使用printf("%d %d %d",a,b,c)四个参数演示:
32位:
push c
push b
push a
push "%d %d %d"
call printf
add esp,16

64位:
sub rsp,28h
mov r9,c
mov r8,b
mov rdx,a
lea rcx,"%d %d %d"
call printf
add rsp,28h

C++混合编程

  • 32位,使用关键字:__asm{}
  • 64位,有2种方式

    1. 使用Intel编译器
    2. 写一个独立asm文件,然后进行调用
wx逆向 学习笔记
  1. Daviddipse 19 天前

    Приветствую вас!
    Хочу обсудить проблему генитальных бородавок и их лечение.
    Многие люди сталкиваются с генитальными бородавками, но мало говорят о методах профилактики и лечения.
    Мне посоветовали несколько подходов: от лекарственных препаратов до аппаратных процедур.
    Слышал, что криодеструкция может быть болезненной. Это правда?
    Мне кажется, что лазерное удаление — наиболее перспективный вариант, но я ещё не решил.
    Есть ли риск заражения партнера после лечения?
    Заранее благодарю всех, кто поделится опытом.
    генитальные бородавки на половых губах http://genitalnyeborodavki.ru/ .

  2. Avtoservis_neSl 2024-12-02

    Эксперты по ремонту автомобилей в столице, где качество и надежность гарантированы.
    Автосервисы в москве на карте http://crabcar.ru/ .

  3. latlkwbvia 2024-12-01

    《很高兴遇见你》爱情片高清在线免费观看:https://www.jgz518.com/xingkong/11095.html

  4. XRArilk 2024-11-27

    Hello!

    Good cheer to all on this beautiful day!!!!!

    Good luck :)

  5. mqwvhusrwo 2024-11-27

    《狂暴》剧情片高清在线免费观看:https://www.jgz518.com/xingkong/80793.html