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也就是

image

该工具为之前所提到的插件。具体是什么我也不知道,两个都用上就好了。

在x64dbg中的定位方法。

首先打开符号窗口。选择主进程。

image

使用该基址+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

自行对比即可。

posted @   未然king  阅读(3)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
点击右上角即可分享
微信分享提示