所以我正在练习/慢慢地,但肯定地学习和刷新我的大会。这里有一个随机分解核函数为例:装配的新手,对于一些指令有点困惑
81a1e85f 8b450c mov eax,dword ptr [ebp+0Ch] // Moving value stored at memory address contained in the ebp register+0Ch to the eax register.
81a1e862 8b4048 mov eax,dword ptr [eax+48h] // Moving value stored at memory address contained in the eax register+48h to the eax register.
81a1e865 8945f0 mov dword ptr [ebp-10h],eax // Moving value stored at memory address contained in the epb-10h register to the eax register?
81a1e868 6a00 push 0 // ?
81a1e86a 8bc7 mov eax,edi // Move contents of the edi register into eax.
81a1e86c c745fc22010000 mov dword ptr [ebp-4],122h // ?
81a1e873 e8bf010000 call nt!PspGetPreviousProcessThread (81a1ea37) // Call the function name nt!PspGetPreviousProcessThread?
81a1e878 8b5d14 mov ebx,dword ptr [ebp+14h] // Moving value stored at memory address contained in the ebp register+14h to the ebx register.
我是很新,大部分,所以毫无疑问,我现在不是错了一些吧,还是错在它的全部。任何人都可以让我知道最重要的是我在哪里评论过'?'因为我不熟悉。
此外,括号内的任何内容 - 例如,[ebp-4],这被认为是一个取消引用的指针,是正确的吗?
是,任何在括号中,如'[EBP - 4]'是取消引用指针。 “无论在'EBP'寄存器中,减4,用作地址”。更确切地说,在32位系统上,它是当前子程序的第一个局部变量。 – Powerslave 2014-09-29 14:26:10