2、X64dbg 与 ida汇编代码定位
X64dbg 与 ida汇编代码定位
首先x64与ida是动态分析与静态分析的两大神器。
这里怕我自己忘所以随便水一篇吧。
首先不管是x64dbg还是ida 在打开某个可执行程序的时候。都会让该文件从硬盘->内存。之前PE是有说的,内存有内存对齐,是写死的。
所以这里的地址定位就比较好找了。其实就是相对于基址的偏移量,比如:
比如:我们通过ida找main函数比较方便,ida直接就给我们命名出来了。我们到入口点
int __fastcall main_0(int argc, const char **argv, const char **envp)
{
char *v3; // rdi
__int64 i; // rcx
char v6; // [rsp+20h] [rbp+0h] BYREF
char v7[288]; // [rsp+30h] [rbp+10h] BYREF
char v8[648]; // [rsp+150h] [rbp+130h] BYREF
v3 = &v6;
for ( i = 146LL; i; --i )
{
*(_DWORD *)v3 = -858993460;
v3 += 4;
}
j___CheckForDebuggerJustMyCode(&unk_14015000E, argv, envp);
memset(v7, 0, 0x100uLL);
memset(v8, 0, 0x100uLL);
sub_140002996("Find username and password\n");
sub_140002996("username:");
sub_140001834("%s", v7);
sub_140002996("password:");
sub_140001834("%s", v8);
if ( (unsigned __int8)sub_140001596(v7, v8) )
sub_140002996("success!\n");
else
sub_140002996("user name or password is invalid.\n");
j_getchar();
j_getchar();
return 0;
}
.text:0000000140009010 ; __unwind { // j___GSHandlerCheck
.text:0000000140009010 push rbp
.text:0000000140009012 push rdi
.text:0000000140009013 sub rsp, 3E8h
.text:000000014000901A lea rbp, [rsp+20h]
.text:000000014000901F lea rdi, [rsp+3F0h+var_3D0]
.text:0000000140009024 mov ecx, 92h
.text:0000000140009029 mov eax, 0CCCCCCCCh
.text:000000014000902E rep stosd
.text:0000000140009030 mov rax, cs:__security_cookie
.text:0000000140009037 xor rax, rbp
.text:000000014000903A mov [rbp+3D0h+var_18], rax
.text:0000000140009041 lea rcx, unk_14015000E
.text:0000000140009048 call j___CheckForDebuggerJustMyCode
.text:000000014000904D lea rax, [rbp+3D0h+var_3C0]
.text:0000000140009051 mov rdi, rax
.text:0000000140009054 xor eax, eax
.text:0000000140009056 mov ecx, 100h
.text:000000014000905B rep stosb
这里的0000000140009010 这个就是我们的入口点。直接用它减去基址。140000000
这时候就是9010 而我们直接右键可以直接复制RVA也就是
该工具为之前所提到的插件。具体是什么我也不知道,两个都用上就好了。
在x64dbg中的定位方法。
首先打开符号窗口。选择主进程。
使用该基址+RVA即可得到x64dbg的地址,直接过去:
00007FF690289010 | 40:55 | push rbp |
00007FF690289012 | 57 | push rdi |
00007FF690289013 | 48:81EC E8030000 | sub rsp,3E8 |
00007FF69028901A | 48:8D6C24 20 | lea rbp,qword ptr ss:[rsp+20] |
00007FF69028901F | 48:8D7C24 20 | lea rdi,qword ptr ss:[rsp+20] |
00007FF690289024 | B9 92000000 | mov ecx,92 |
00007FF690289029 | B8 CCCCCCCC | mov eax,CCCCCCCC |
00007FF69028902E | F3:AB | rep stosd |
00007FF690289030 | 48:8B05 F15F1300 | mov rax,qword ptr ds:[7FF6903BF028] | rax:EntryPoint
00007FF690289037 | 48:33C5 | xor rax,rbp | rax:EntryPoint
00007FF69028903A | 48:8985 B8030000 | mov qword ptr ss:[rbp+3B8],rax | rax:EntryPoint
00007FF690289041 | 48:8D0D C66F1400 | lea rcx,qword ptr ds:[7FF6903D000E] | rcx:ZwProtectVirtualMemory+14
00007FF690289048 | E8 F0B5FFFF | call lesson1.7FF69028463D |
00007FF69028904D | 48:8D45 10 | lea rax,qword ptr ss:[rbp+10] | rax:EntryPoint
00007FF690289051 | 48:8BF8 | mov rdi,rax | rax:EntryPoint
00007FF690289054 | 33C0 | xor eax,eax |
00007FF690289056 | B9 00010000 | mov ecx,100 |
00007FF69028905B | F3:AA | rep stosb |
00007FF69028905D | 48:8D85 30010000 | lea rax,qword ptr ss:[rbp+130] | rax:EntryPoint
自行对比即可。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库