其他案例请查看,aes解码,密钥123456789,密文U2FsdGVkX1/Bd4k8ZAij4D8oMKFwS3bBvmalzk3NT7UEJTw7/qemqhDLwG4nl9H9/nO3Xk0Ebmv0W50P9akHkb0F2ubxR31a6lldXh/T1P5UbUFht0mf2SUJwAKMq1bg






其他案例请查看,aes解码,密钥123456789,密文U2FsdGVkX1/Bd4k8ZAij4D8oMKFwS3bBvmalzk3NT7UEJTw7/qemqhDLwG4nl9H9/nO3Xk0Ebmv0W50P9akHkb0F2ubxR31a6lldXh/T1P5UbUFht0mf2SUJwAKMq1bg
x32dbg/x64dbg逆向之反向分析全局变量
1) 逆向之反向分析全局变量介绍
咱们第一个逆向分析的来点简单的,先适应一下,顺便带这各位把C语言简单的过一遍,后面咱们再深入进去。
有之前汇编开发前期基础,这些对咱们来说已经是小儿科,无非就是mov赋值操作, 以及lea获取地址,movsd符号扩展等基本的操作。
咱们记牢以下关键规则哦,因为在后面使用x32/x64dbg进行调试分析时会频繁用到
ds:指向数据段(全局/静态变量)
ss:指向栈段(局部变量)
2)C语言案例代码
咱们在学习逆向分析的同时,同步梳理C和C++基础知识点,一正一反(正向开发,逆向分析)为后续深耕底层技术打好基础哦。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdbool.h>
// ===================== All Common C Global Data Types =====================
// Basic integer types
char g_char = 0;
unsigned char g_uchar = 0;
short g_short = 0;
unsigned short g_ushort = 0;
int g_int = 0;
unsigned int g_uint = 0;
long g_long = 0;
unsigned long g_ulong = 0;
long long g_llong = 0;
unsigned long long g_ullong = 0;
// Floating-point types
float g_float = 0.0f;
double g_double = 0.0;
long double g_ldouble = 0.0L;
// Boolean type
bool g_bool = false;
// String & character array
// char pointer
char* g_pChar = NULL;
// double char pointer
char** g_ppChar = NULL;
// char array
char g_charArr[100] = { 0 };
// Void pointer
void* g_pVoid = NULL;
// Custom struct
struct Student
{
// Bit-field type
unsigned int age : 8;
unsigned int sex : 1;
int id;
};
struct Student g_stu;
// Union type
union Data
{
int num;
char ch;
float f;
};
union Data g_union;
// Enum type
enum Color
{
BLACK, WHITE, RED, BLUE
};
enum Color g_color;
// Array pointer & function pointer
int g_arr[5] = { 0 };
// pointer to array
int (*g_pArr)[5] = &g_arr;
// function pointer
void (*g_pFunc)(int) = NULL;
// ==========================================================================
// Function pointer
void testFunc(int x)
{
printf("Function pointer call, x = %d\n", x);
}
int main(void)
{
g_char = 'Z';
g_uchar = 255;
g_short = 100;
g_ushort = 200;
g_int = 999;
g_uint = 1024;
g_long = 123456L;
g_ulong = 654321UL;
g_llong = 1122334455LL;
g_ullong = 9988776655ULL;
// float
g_float = 3.14f;
g_double = 6.28;
g_ldouble = 9.99L;
// bool
g_bool = true;
// string
g_pChar = (char*)"Hello All Types";
strcpy(g_charArr, "Char Array Content");
// void pointer point to int
int temp = 888;
g_pVoid = &temp;
// struct
g_stu.age = 20;
g_stu.sex = 1;
g_stu.id = 2025001;
// union
g_union.num = 520;
// enum
g_color = RED;
// call function pointer
g_pFunc = testFunc;
g_pFunc(666);
// Print all for verification
printf("char : %c\n", g_char);
printf("uchar : %u\n", g_uchar);
printf("short : %d\n", g_short);
printf("int : %d\n", g_int);
printf("long long : %lld\n", g_llong);
printf("float : %.2f\n", g_float);
printf("double : %.2lf\n", g_double);
printf("bool : %d\n", g_bool);
printf("str pointer : %s\n", g_pChar);
printf("char array : %s\n", g_charArr);
printf("enum color : %d\n", g_color);
printf("struct age : %d\n", g_stu.age);
printf("union num : %d\n", g_union.num);
return 0;
}
3)汇编反向分析全局变量
咱们就用之前讲过的规则,来一步步分析这段汇编代码,核心就抓一个关键点:只要指令里看到 ds:,那操作的肯定就是全局 / 静态变量;看到 ss:,操作的就是局部变量,照着这个思路看就行。
x64
开头准备部分(没啥实质业务逻辑)
这几步是函数的 标准开场:保存栈底地址,开辟栈空间,然后把栈里刚开辟的这块内存全部填成 0xCCCCCCCC(调试器里常用这个值标记未初始化的栈内存)。这里全是 ss: 栈段操作,跟全局变量没关系,就是搭个运行的基础环境。
00007FF70D7118F0 | 40:55 | push rbp | FileName.cpp:89
00007FF70D7118F2 | 57 | push rdi |
00007FF70D7118F3 | 48:81EC 08010000 | sub rsp,108 |
00007FF70D7118FA | 48:8D6C24 20 | lea rbp,qword ptr ss:[rsp+20] |
00007FF70D7118FF | 48:8D7C24 20 | lea rdi,qword ptr ss:[rsp+20] |
00007FF70D711904 | B9 0A000000 | mov ecx,A | 0A:'\n'
00007FF70D711909 | B8 CCCCCCCC | mov eax,CCCCCCCC |
00007FF70D71190E | F3:AB | rep stosd
这里出现了第一个 ds:读了一个全局值__security_cookie,然后和栈底地址做异或,再存回栈里。这是编译器加的 安全防护后面咱们再说,用来检测栈溢出的,不用纠结细节,知道是读全局值就行。 |
00007FF70D711910 | 48:8B05 29B70000 | mov rax,qword ptr ds:[<__security_cookie>] | rax:__enc$textbss$end+276
00007FF70D711917 | 48:33C5 | xor rax,rbp | rax:__enc$textbss$end+276
00007FF70D71191A | 48:8985 D8000000 | mov qword ptr ss:[rbp+D8],rax | rax:__enc$textbss$end+276
又是ds:,取了个文件名相关的全局字符串地址,调用了个内部函数,还是初始化相关的操作,直接跳过就行。
00007FF70D711921 | 48:8D0D E7060100 | lea rcx,qword ptr ds:[<__14F49BB1_FileName@cpp>] | FileName.cpp:15732480
00007FF70D711928 | E8 48FAFFFF | call project1.7FF70D711375 |
00007FF70D71192D | 90 | nop
咱们的Main赋值正式开始
00007FF70D71192E | C605 DBB80000 5A | mov byte ptr ds:[<char g_char>],5A | 将全局char变量 g_char 赋值为 'Z'(0x5A)
00007FF70D711935 | C605 D5B80000 FF | mov byte ptr ds:[<unsigned char g_uchar>],FF | 将全局unsigned char变量 g_uchar 赋值为255
00007FF70D71193C | B8 64000000 | mov eax,64 | 将100装入EAX
00007FF70D711941 | 66:8905 CCB80000 | mov word ptr ds:[<short g_short>],ax | 将AX中的100写入short变量 g_short
00007FF70D711948 | B8 C8000000 | mov eax,C8 | 将200装入EAX
00007FF70D71194D | 66:8905 C4B80000 | mov word ptr ds:[<unsigned short g_ushort>],ax | 将AX中的200写入unsigned short变量 g_ushort
00007FF70D711954 | C705 BEB80000 E7030000 | mov dword ptr ds:[<int g_int>],3E7 | 将int变量 g_int 赋值为999
00007FF70D71195E | C705 B8B80000 00040000 | mov dword ptr ds:[<unsigned int g_uint>],400 | 将unsigned int变量 g_uint 赋值为1024
00007FF70D711968 | C705 B2B80000 40E20100 | mov dword ptr ds:[<long g_long>],1E240 | 将long变量 g_long 赋值为123456
00007FF70D711972 | C705 ACB80000 F1FB0900 | mov dword ptr ds:[<unsigned long g_ulong>],9FBF1 | 将unsigned long变量 g_ulong 赋值为654321
00007FF70D71197C | 48:C705 A9B80000 F776E54 | mov qword ptr ds:[<__int64 g_llong>],42E576F7 | 将64位整数1234567895写入g_llong
00007FF70D711987 | 48:B8 CFA2605302000000 | mov rax,25360A2CF | 将64位立即数10000000079装入RAX
00007FF70D711991 | 48:8905 A0B80000 | mov qword ptr ds:[<unsigned __int64 g_ullong>],rax | 将RAX写入unsigned long long变量 g_ullong
00007FF70D711998 | F3:0F1005 BC940000 | movss xmm0,dword ptr ds:[<__real@4048f5c3>] | 将float常量加载到XMM0
00007FF70D7119A0 | F3:0F1105 84B80000 | movss dword ptr ds:[<float g_float>],xmm0 | 将float值写入g_float
00007FF70D7119A8 | F2:0F1005 90940000 | movsd xmm0,qword ptr ds:[<__real@40191eb851eb851f>] | 将double常量加载到XMM0
00007FF70D7119B0 | F2:0F1105 88B80000 | movsd qword ptr ds:[<double g_double>],xmm0 | 将double值写入g_double
00007FF70D7119B8 | F2:0F1005 90940000 | movsd xmm0,qword ptr ds:[<__real@4023fae147ae147b>] | 将long double对应常量加载到XMM0
00007FF70D7119C0 | F2:0F1105 80B80000 | movsd qword ptr ds:[<long double g_ldouble>],xmm0 | 将值写入g_ldouble
00007FF70D7119C8 | C605 43B80000 01 | mov byte ptr ds:[<bool g_bool>],1 | 将bool变量 g_bool 赋值为true
00007FF70D7119CF | 48:8D05 FA920000 | lea rax,qword ptr ds:[<"Hello All Types"...>] | 获取字符串"Hello All Types"地址
00007FF70D7119D6 | 48:8905 73B80000 | mov qword ptr ds:[<char *g_pChar>],rax | 将字符串地址保存到g_pChar
00007FF70D7119DD | 48:8D15 04930000 | lea rdx,qword ptr ds:[<"Char Array Content"...>] | 获取字符串"Char Array Content"地址
00007FF70D7119E4 | 48:8D0D 75B80000 | lea rcx,qword ptr ds:[<char *g_charArr>] | 获取字符数组g_charArr地址作为目标缓冲区
00007FF70D7119EB | E8 37F7FFFF | call project1.7FF70D711127 | 调用字符串复制函数(类似strcpy)
00007FF70D7119F0 | 90 | nop | 空操作,占位
00007FF70D7119F1 | C745 04 78030000 | mov dword ptr ss:[rbp+4],378 | 局部变量赋值888
00007FF70D7119F8 | 48:8D45 04 | lea rax,qword ptr ss:[rbp+4] | 获取局部变量地址
00007FF70D7119FC | 48:8905 C5B80000 | mov qword ptr ds:[<void *g_pVoid>],rax | 将局部变量地址保存到void指针g_pVoid
00007FF70D711A03 | 8B05 C7B80000 | mov eax,dword ptr ds:[<struct Student g_stu>] | 读取结构体Student内容
00007FF70D711A09 | 25 00FFFFFF | and eax,FFFFFF00 | 清除最低8位(age字段)
00007FF70D711A0E | 83C8 14 | or eax,14 | 将age字段设置为20
00007FF70D711A11 | 8905 B9B80000 | mov dword ptr ds:[<struct Student g_stu>],eax | 写回结构体
00007FF70D711A17 | 8B05 B3B80000 | mov eax,dword ptr ds:[<struct Student g_stu>] | 再次读取结构体
00007FF70D711A1D | 0FBAE8 08 | bts eax,8 | 设置第8位(bit field成员)
00007FF70D711A21 | 8905 A9B80000 | mov dword ptr ds:[<struct Student g_stu>],eax | 写回修改后的结构体
00007FF70D711A27 | C705 A3B80000 29E61E00 | mov dword ptr ds:[7FF70D71D2D4],1EE629 | 设置结构体中其他成员值
00007FF70D711A31 | C705 89B80000 08020000 | mov dword ptr ds:[<union Data g_union>],208 | union变量赋值520
00007FF70D711A3B | C705 93B80000 02000000 | mov dword ptr ds:[<enum Color g_color>],2 | 枚举变量g_color赋值为2
00007FF70D711A45 | 48:8D05 E8F8FFFF | lea rax,qword ptr ds:[7FF70D711334] | 获取函数地址
00007FF70D711A4C | 48:8905 A5B80000 | mov qword ptr ds:[<void (__cdecl *g_pFunc)(int)>],rax | 保存到函数指针g_pFunc
00007FF70D711A53 | B9 9A020000 | mov ecx,29A | 准备函数参数666
00007FF70D711A58 | FF15 9AB80000 | call qword ptr ds:[<void (__cdecl *g_pFunc)(int)>] | 通过函数指针调用目标函数
00007FF70D711A5E | 90 | nop
00007FF70D711A5F | 0FBE05 AAB70000 | movsx eax,byte ptr ds:[<char g_char>] | FileName.cpp:134
00007FF70D711A66 | 8BD0 | mov edx,eax |
00007FF70D711A68 | 48:8D0D 91920000 | lea rcx,qword ptr ds:[<"char : %c\n"...>] | 00007FF70D71AD00:"char : %c\n"
00007FF70D711A6F | E8 26F7FFFF | call project1.7FF70D71119A |
00007FF70D711A74 | 90 | nop |
00007FF70D711A75 | 0FB605 95B70000 | movzx eax,byte ptr ds:[<unsigned char g_uchar>] | FileName.cpp:135
00007FF70D711A7C | 8BD0 | mov edx,eax |
00007FF70D711A7E | 48:8D0D 93920000 | lea rcx,qword ptr ds:[<"uchar : %u\n"...>] | 00007FF70D71AD18:"uchar : %u\n"
00007FF70D711A85 | E8 10F7FFFF | call project1.7FF70D71119A |
00007FF70D711A8A | 90 | nop |
00007FF70D711A8B | 0FBF05 82B70000 | movsx eax,word ptr ds:[<short g_short>] | FileName.cpp:136
00007FF70D711A92 | 8BD0 | mov edx,eax |
00007FF70D711A94 | 48:8D0D 95920000 | lea rcx,qword ptr ds:[<"short : %d\n"...>] | 00007FF70D71AD30:"short : %d\n"
00007FF70D711A9B | E8 FAF6FFFF | call project1.7FF70D71119A |
00007FF70D711AA0 | 90 | nop |
00007FF70D711AA1 | 8B15 75B70000 | mov edx,dword ptr ds:[<int g_int>] | FileName.cpp:137
00007FF70D711AA7 | 48:8D0D 9A920000 | lea rcx,qword ptr ds:[<"int : %d\n"...>] | 00007FF70D71AD48:"int : %d\n"
00007FF70D711AAE | E8 E7F6FFFF | call project1.7FF70D71119A |
00007FF70D711AB3 | 90 | nop |
00007FF70D711AB4 | 48:8B15 75B70000 | mov rdx,qword ptr ds:[<__int64 g_llong>] | FileName.cpp:138, rdx:__enc$textbss$end+276
00007FF70D711ABB | 48:8D0D 9E920000 | lea rcx,qword ptr ds:[<"long long : %lld\n"...>] | 00007FF70D71AD60:"long long : %lld\n"
00007FF70D711AC2 | E8 D3F6FFFF | call project1.7FF70D71119A |
00007FF70D711AC7 | 90 | nop |
00007FF70D711AC8 | F3:0F5A05 5CB70000 | cvtss2sd xmm0,dword ptr ds:[<float g_float>] | FileName.cpp:139
00007FF70D711AD0 | 0F28C8 | movaps xmm1,xmm0 |
00007FF70D711AD3 | 6648:0F7ECA | movq rdx,xmm1 | rdx:__enc$textbss$end+276
00007FF70D711AD8 | 48:8D0D 99920000 | lea rcx,qword ptr ds:[<"float : %.2f\n"...>] | 00007FF70D71AD78:"float : %.2f\n"
00007FF70D711ADF | E8 B6F6FFFF | call project1.7FF70D71119A |
00007FF70D711AE4 | 90 | nop |
00007FF70D711AE5 | F2:0F100D 53B70000 | movsd xmm1,qword ptr ds:[<double g_double>] | FileName.cpp:140
00007FF70D711AED | 6648:0F7ECA | movq rdx,xmm1 | rdx:__enc$textbss$end+276
00007FF70D711AF2 | 48:8D0D 97920000 | lea rcx,qword ptr ds:[<"double : %.2lf\n"...>] | 00007FF70D71AD90:"double : %.2lf\n"
00007FF70D711AF9 | E8 9CF6FFFF | call project1.7FF70D71119A |
00007FF70D711AFE | 90 | nop |
00007FF70D711AFF | 0FB605 0CB70000 | movzx eax,byte ptr ds:[<bool g_bool>] | FileName.cpp:141
00007FF70D711B06 | 8BD0 | mov edx,eax |
00007FF70D711B08 | 48:8D0D A1920000 | lea rcx,qword ptr ds:[<"bool : %d\n"...>] | 00007FF70D71ADB0:"bool : %d\n"
00007FF70D711B0F | E8 86F6FFFF | call project1.7FF70D71119A |
00007FF70D711B14 | 90 | nop |
00007FF70D711B15 | 48:8B15 34B70000 | mov rdx,qword ptr ds:[<char *g_pChar>] | FileName.cpp:142, rdx:__enc$textbss$end+276
00007FF70D711B1C | 48:8D0D A5920000 | lea rcx,qword ptr ds:[<"str pointer : %s\n"...>] | 00007FF70D71ADC8:"str pointer : %s\n"
00007FF70D711B23 | E8 72F6FFFF | call project1.7FF70D71119A |
00007FF70D711B28 | 90 | nop |
00007FF70D711B29 | 48:8D15 30B70000 | lea rdx,qword ptr ds:[<char *g_charArr>] | FileName.cpp:143, rdx:__enc$textbss$end+276
00007FF70D711B30 | 48:8D0D A9920000 | lea rcx,qword ptr ds:[<"char array : %s\n"...>] | 00007FF70D71ADE0:"char array : %s\n"
00007FF70D711B37 | E8 5EF6FFFF | call project1.7FF70D71119A |
00007FF70D711B3C | 90 | nop |
00007FF70D711B3D | 8B15 95B70000 | mov edx,dword ptr ds:[<enum Color g_color>] | FileName.cpp:144
00007FF70D711B43 | 48:8D0D AE920000 | lea rcx,qword ptr ds:[<"enum color : %d\n"...>] | 00007FF70D71ADF8:"enum color : %d\n"
00007FF70D711B4A | E8 4BF6FFFF | call project1.7FF70D71119A |
00007FF70D711B4F | 90 | nop |
00007FF70D711B50 | 8B05 7AB70000 | mov eax,dword ptr ds:[<struct Student g_stu>] | FileName.cpp:145
00007FF70D711B56 | 25 FF000000 | and eax,FF |
00007FF70D711B5B | 8BD0 | mov edx,eax |
00007FF70D711B5D | 48:8D0D AC920000 | lea rcx,qword ptr ds:[<"struct age : %d\n"...>] | 00007FF70D71AE10:"struct age : %d\n"
00007FF70D711B64 | E8 31F6FFFF | call project1.7FF70D71119A |
00007FF70D711B69 | 90 | nop |
00007FF70D711B6A | 8B15 54B70000 | mov edx,dword ptr ds:[<union Data g_union>] | FileName.cpp:146
00007FF70D711B70 | 48:8D0D B1920000 | lea rcx,qword ptr ds:[<"union num : %d\n"...>] | 00007FF70D71AE28:"union num : %d\n"
00007FF70D711B77 | E8 1EF6FFFF | call project1.7FF70D71119A |
00007FF70D711B7C | 90 | nop |
00007FF70D711B7D | 33C0 | xor eax,eax | FileName.cpp:148
00007FF70D711B7F | 8BF8 | mov edi,eax | FileName.cpp:151
main函数结束
00007FF70D711B81 | 48:8D4D E0 | lea rcx,qword ptr ss:[rbp-20] |
00007FF70D711B85 | 48:8D15 F4900000 | lea rdx,qword ptr ds:[7FF70D71AC80] | rdx:__enc$textbss$end+276
00007FF70D711B8C | E8 7BF7FFFF | call project1.7FF70D71130C |
00007FF70D711B91 | 8BC7 | mov eax,edi |
00007FF70D711B93 | 48:8B8D D8000000 | mov rcx,qword ptr ss:[rbp+D8] |
00007FF70D711B9A | 48:33CD | xor rcx,rbp |
00007FF70D711B9D | E8 11F6FFFF | call project1.7FF70D7111B3 |
00007FF70D711BA2 | 48:8DA5 E8000000 | lea rsp,qword ptr ss:[rbp+E8] |
00007FF70D711BA9 | 5F | pop rdi |
00007FF70D711BAA | 5D | pop rbp |
00007FF70D711BAB | C3 | ret |
x32
00007FF7B17E18F0 | 40:55 | push rbp | FileName.cpp:89
00007FF7B17E18F2 | 57 | push rdi |
00007FF7B17E18F3 | 48:81EC 08010000 | sub rsp,108 |
00007FF7B17E18FA | 48:8D6C24 20 | lea rbp,qword ptr ss:[rsp+20] |
00007FF7B17E18FF | 48:8D7C24 20 | lea rdi,qword ptr ss:[rsp+20] |
00007FF7B17E1904 | B9 0A000000 | mov ecx,A | 0A:'\n'
00007FF7B17E1909 | B8 CCCCCCCC | mov eax,CCCCCCCC |
00007FF7B17E190E | F3:AB | rep stosd |
00007FF7B17E1910 | 48:8B05 29B70000 | mov rax,qword ptr ds:[<__security_cooki | rax:__enc$textbss$end+276
00007FF7B17E1917 | 48:33C5 | xor rax,rbp | rax:__enc$textbss$end+276
00007FF7B17E191A | 48:8985 D8000000 | mov qword ptr ss:[rbp+D8],rax | rax:__enc$textbss$end+276
00007FF7B17E1921 | 48:8D0D E7060100 | lea rcx,qword ptr ds:[<__14F49BB1_FileN | FileName.cpp:15732480
00007FF7B17E1928 | E8 48FAFFFF | call project1.7FF7B17E1375 |
00007FF7B17E192D | 90 | nop |
00007FF7B17E192E | C605 DBB80000 5A | mov byte ptr ds:[<char g_char>],5A | FileName.cpp:90, 5A:'Z'
00007FF7B17E1935 | C605 D5B80000 FF | mov byte ptr ds:[<unsigned char g_uchar | FileName.cpp:91
00007FF7B17E193C | B8 64000000 | mov eax,64 | FileName.cpp:92, 64:'d'
00007FF7B17E1941 | 66:8905 CCB80000 | mov word ptr ds:[<short g_short>],ax |
00007FF7B17E1948 | B8 C8000000 | mov eax,C8 | FileName.cpp:93
00007FF7B17E194D | 66:8905 C4B80000 | mov word ptr ds:[<unsigned short g_usho |
00007FF7B17E1954 | C705 BEB80000 E7030000 | mov dword ptr ds:[<int g_int>],3E7 | FileName.cpp:94
00007FF7B17E195E | C705 B8B80000 00040000 | mov dword ptr ds:[<unsigned int g_uint> | FileName.cpp:95
00007FF7B17E1968 | C705 B2B80000 40E20100 | mov dword ptr ds:[<long g_long>],1E240 | FileName.cpp:96
00007FF7B17E1972 | C705 ACB80000 F1FB0900 | mov dword ptr ds:[<unsigned long g_ulon | FileName.cpp:97
00007FF7B17E197C | 48:C705 A9B80000 F776E54 | mov qword ptr ds:[<__int64 g_llong>],42 | FileName.cpp:98
00007FF7B17E1987 | 48:B8 CFA2605302000000 | mov rax,25360A2CF | FileName.cpp:99, rax:__enc$textbss$end+276
00007FF7B17E1991 | 48:8905 A0B80000 | mov qword ptr ds:[<unsigned __int64 g_u | rax:__enc$textbss$end+276
00007FF7B17E1998 | F3:0F1005 BC940000 | movss xmm0,dword ptr ds:[<__real@4048f5 | FileName.cpp:102
00007FF7B17E19A0 | F3:0F1105 84B80000 | movss dword ptr ds:[<float g_float>],xm |
00007FF7B17E19A8 | F2:0F1005 90940000 | movsd xmm0,qword ptr ds:[<__real@40191e | FileName.cpp:103
00007FF7B17E19B0 | F2:0F1105 88B80000 | movsd qword ptr ds:[<double g_double>], |
00007FF7B17E19B8 | F2:0F1005 90940000 | movsd xmm0,qword ptr ds:[<__real@4023fa | FileName.cpp:104
00007FF7B17E19C0 | F2:0F1105 80B80000 | movsd qword ptr ds:[<long double g_ldou |
00007FF7B17E19C8 | C605 43B80000 01 | mov byte ptr ds:[<bool g_bool>],1 | FileName.cpp:107
00007FF7B17E19CF | 48:8D05 FA920000 | lea rax,qword ptr ds:[<"Hello All Types | FileName.cpp:110, rax:__enc$textbss$end+276, 00007FF7B17EACD0:"Hello All Types"
00007FF7B17E19D6 | 48:8905 73B80000 | mov qword ptr ds:[<char *g_pChar>],rax | rax:__enc$textbss$end+276
00007FF7B17E19DD | 48:8D15 04930000 | lea rdx,qword ptr ds:[<"Char Array Cont | FileName.cpp:111, rdx:__enc$textbss$end+276, 00007FF7B17EACE8:"Char Array Content"
00007FF7B17E19E4 | 48:8D0D 75B80000 | lea rcx,qword ptr ds:[<char *g_charArr> |
00007FF7B17E19EB | E8 37F7FFFF | call project1.7FF7B17E1127 |
00007FF7B17E19F0 | 90 | nop |
00007FF7B17E19F1 | C745 04 78030000 | mov dword ptr ss:[rbp+4],378 | FileName.cpp:114
00007FF7B17E19F8 | 48:8D45 04 | lea rax,qword ptr ss:[rbp+4] | FileName.cpp:115, rax:__enc$textbss$end+276
00007FF7B17E19FC | 48:8905 C5B80000 | mov qword ptr ds:[<void *g_pVoid>],rax | rax:__enc$textbss$end+276
00007FF7B17E1A03 | 8B05 C7B80000 | mov eax,dword ptr ds:[<struct Student g | FileName.cpp:118
00007FF7B17E1A09 | 25 00FFFFFF | and eax,FFFFFF00 |
00007FF7B17E1A0E | 83C8 14 | or eax,14 |
00007FF7B17E1A11 | 8905 B9B80000 | mov dword ptr ds:[<struct Student g_stu |
00007FF7B17E1A17 | 8B05 B3B80000 | mov eax,dword ptr ds:[<struct Student g | FileName.cpp:119
00007FF7B17E1A1D | 0FBAE8 08 | bts eax,8 |
00007FF7B17E1A21 | 8905 A9B80000 | mov dword ptr ds:[<struct Student g_stu |
00007FF7B17E1A27 | C705 A3B80000 29E61E00 | mov dword ptr ds:[7FF7B17ED2D4],1EE629 | FileName.cpp:120
00007FF7B17E1A31 | C705 89B80000 08020000 | mov dword ptr ds:[<union Data g_union>] | FileName.cpp:123
00007FF7B17E1A3B | C705 93B80000 02000000 | mov dword ptr ds:[<enum Color g_color>] | FileName.cpp:126
00007FF7B17E1A45 | 48:8D05 E8F8FFFF | lea rax,qword ptr ds:[7FF7B17E1334] | FileName.cpp:129, rax:__enc$textbss$end+276
00007FF7B17E1A4C | 48:8905 A5B80000 | mov qword ptr ds:[<void (__cdecl *g_pFu | rax:__enc$textbss$end+276
00007FF7B17E1A53 | B9 9A020000 | mov ecx,29A | FileName.cpp:130
00007FF7B17E1A58 | FF15 9AB80000 | call qword ptr ds:[<void (__cdecl *g_pF |
00007FF7B17E1A5E | 90 | nop |
00007FF7B17E1A5F | 0FBE05 AAB70000 | movsx eax,byte ptr ds:[<char g_char>] | FileName.cpp:134
00007FF7B17E1A66 | 8BD0 | mov edx,eax |
00007FF7B17E1A68 | 48:8D0D 91920000 | lea rcx,qword ptr ds:[<"char : % | 00007FF7B17EAD00:"char : %c\n"
00007FF7B17E1A6F | E8 26F7FFFF | call project1.7FF7B17E119A |
00007FF7B17E1A74 | 90 | nop |
00007FF7B17E1A75 | 0FB605 95B70000 | movzx eax,byte ptr ds:[<unsigned char g | FileName.cpp:135
00007FF7B17E1A7C | 8BD0 | mov edx,eax |
00007FF7B17E1A7E | 48:8D0D 93920000 | lea rcx,qword ptr ds:[<"uchar : % | 00007FF7B17EAD18:"uchar : %u\n"
00007FF7B17E1A85 | E8 10F7FFFF | call project1.7FF7B17E119A |
00007FF7B17E1A8A | 90 | nop |
00007FF7B17E1A8B | 0FBF05 82B70000 | movsx eax,word ptr ds:[<short g_short>] | FileName.cpp:136
00007FF7B17E1A92 | 8BD0 | mov edx,eax |
00007FF7B17E1A94 | 48:8D0D 95920000 | lea rcx,qword ptr ds:[<"short : % | 00007FF7B17EAD30:"short : %d\n"
00007FF7B17E1A9B | E8 FAF6FFFF | call project1.7FF7B17E119A |
00007FF7B17E1AA0 | 90 | nop |
00007FF7B17E1AA1 | 8B15 75B70000 | mov edx,dword ptr ds:[<int g_int>] | FileName.cpp:137
00007FF7B17E1AA7 | 48:8D0D 9A920000 | lea rcx,qword ptr ds:[<"int : % | 00007FF7B17EAD48:"int : %d\n"
00007FF7B17E1AAE | E8 E7F6FFFF | call project1.7FF7B17E119A |
00007FF7B17E1AB3 | 90 | nop |
00007FF7B17E1AB4 | 48:8B15 75B70000 | mov rdx,qword ptr ds:[<__int64 g_llong> | FileName.cpp:138, rdx:__enc$textbss$end+276
00007FF7B17E1ABB | 48:8D0D 9E920000 | lea rcx,qword ptr ds:[<"long long : % | 00007FF7B17EAD60:"long long : %lld\n"
00007FF7B17E1AC2 | E8 D3F6FFFF | call project1.7FF7B17E119A |
00007FF7B17E1AC7 | 90 | nop |
00007FF7B17E1AC8 | F3:0F5A05 5CB70000 | cvtss2sd xmm0,dword ptr ds:[<float g_fl | FileName.cpp:139
00007FF7B17E1AD0 | 0F28C8 | movaps xmm1,xmm0 |
00007FF7B17E1AD3 | 6648:0F7ECA | movq rdx,xmm1 | rdx:__enc$textbss$end+276
00007FF7B17E1AD8 | 48:8D0D 99920000 | lea rcx,qword ptr ds:[<"float : % | 00007FF7B17EAD78:"float : %.2f\n"
00007FF7B17E1ADF | E8 B6F6FFFF | call project1.7FF7B17E119A |
00007FF7B17E1AE4 | 90 | nop |
00007FF7B17E1AE5 | F2:0F100D 53B70000 | movsd xmm1,qword ptr ds:[<double g_doub | FileName.cpp:140
00007FF7B17E1AED | 6648:0F7ECA | movq rdx,xmm1 | rdx:__enc$textbss$end+276
00007FF7B17E1AF2 | 48:8D0D 97920000 | lea rcx,qword ptr ds:[<"double : % | 00007FF7B17EAD90:"double : %.2lf\n"
00007FF7B17E1AF9 | E8 9CF6FFFF | call project1.7FF7B17E119A |
00007FF7B17E1AFE | 90 | nop |
00007FF7B17E1AFF | 0FB605 0CB70000 | movzx eax,byte ptr ds:[<bool g_bool>] | FileName.cpp:141
00007FF7B17E1B06 | 8BD0 | mov edx,eax |
00007FF7B17E1B08 | 48:8D0D A1920000 | lea rcx,qword ptr ds:[<"bool : % | 00007FF7B17EADB0:"bool : %d\n"
00007FF7B17E1B0F | E8 86F6FFFF | call project1.7FF7B17E119A |
00007FF7B17E1B14 | 90 | nop |
00007FF7B17E1B15 | 48:8B15 34B70000 | mov rdx,qword ptr ds:[<char *g_pChar>] | FileName.cpp:142, rdx:__enc$textbss$end+276
00007FF7B17E1B1C | 48:8D0D A5920000 | lea rcx,qword ptr ds:[<"str pointer : % | 00007FF7B17EADC8:"str pointer : %s\n"
00007FF7B17E1B23 | E8 72F6FFFF | call project1.7FF7B17E119A |
00007FF7B17E1B28 | 90 | nop |
00007FF7B17E1B29 | 48:8D15 30B70000 | lea rdx,qword ptr ds:[<char *g_charArr> | FileName.cpp:143, rdx:__enc$textbss$end+276
00007FF7B17E1B30 | 48:8D0D A9920000 | lea rcx,qword ptr ds:[<"char array : % | 00007FF7B17EADE0:"char array : %s\n"
00007FF7B17E1B37 | E8 5EF6FFFF | call project1.7FF7B17E119A |
00007FF7B17E1B3C | 90 | nop |
00007FF7B17E1B3D | 8B15 95B70000 | mov edx,dword ptr ds:[<enum Color g_col | FileName.cpp:144
00007FF7B17E1B43 | 48:8D0D AE920000 | lea rcx,qword ptr ds:[<"enum color : % | 00007FF7B17EADF8:"enum color : %d\n"
00007FF7B17E1B4A | E8 4BF6FFFF | call project1.7FF7B17E119A |
00007FF7B17E1B4F | 90 | nop |
00007FF7B17E1B50 | 8B05 7AB70000 | mov eax,dword ptr ds:[<struct Student g | FileName.cpp:145
00007FF7B17E1B56 | 25 FF000000 | and eax,FF |
00007FF7B17E1B5B | 8BD0 | mov edx,eax |
00007FF7B17E1B5D | 48:8D0D AC920000 | lea rcx,qword ptr ds:[<"struct age : % | 00007FF7B17EAE10:"struct age : %d\n"
00007FF7B17E1B64 | E8 31F6FFFF | call project1.7FF7B17E119A |
00007FF7B17E1B69 | 90 | nop |
00007FF7B17E1B6A | 8B15 54B70000 | mov edx,dword ptr ds:[<union Data g_uni | FileName.cpp:146
00007FF7B17E1B70 | 48:8D0D B1920000 | lea rcx,qword ptr ds:[<"union num : % | 00007FF7B17EAE28:"union num : %d\n"
00007FF7B17E1B77 | E8 1EF6FFFF | call project1.7FF7B17E119A |
00007FF7B17E1B7C | 90 | nop |
00007FF7B17E1B7D | 33C0 | xor eax,eax | FileName.cpp:148
00007FF7B17E1B7F | 8BF8 | mov edi,eax | FileName.cpp:151
00007FF7B17E1B81 | 48:8D4D E0 | lea rcx,qword ptr ss:[rbp-20] |
00007FF7B17E1B85 | 48:8D15 F4900000 | lea rdx,qword ptr ds:[7FF7B17EAC80] | rdx:__enc$textbss$end+276
00007FF7B17E1B8C | E8 7BF7FFFF | call project1.7FF7B17E130C |
00007FF7B17E1B91 | 8BC7 | mov eax,edi |
00007FF7B17E1B93 | 48:8B8D D8000000 | mov rcx,qword ptr ss:[rbp+D8] |
00007FF7B17E1B9A | 48:33CD | xor rcx,rbp |
00007FF7B17E1B9D | E8 11F6FFFF | call project1.7FF7B17E11B3 |
00007FF7B17E1BA2 | 48:8DA5 E8000000 | lea rsp,qword ptr ss:[rbp+E8] |
00007FF7B17E1BA9 | 5F | pop rdi |
00007FF7B17E1BAA | 5D | pop rbp |
00007FF7B17E1BAB | C3 | ret |
其他案例请查看,aes解码,密钥123456789,密文U2FsdGVkX1/Bd4k8ZAij4D8oMKFwS3bBvmalzk3NT7UEJTw7/qemqhDLwG4nl9H9/nO3Xk0Ebmv0W50P9akHkb0F2ubxR31a6lldXh/T1P5UbUFht0mf2SUJwAKMq1bg

913

被折叠的 条评论
为什么被折叠?



