接触逆向已经很久了,但是属于业余选手一直不入门径,现在的水平感觉到了一个瓶颈无法突破,简单的能看懂,但是一遇到像下面的
sub eax,esi ; eax==7FFEFFFF==应用层最大地址-esi==00010000==应用层最小地址
shr eax,0x10
add eax,eax
add eax,eax
mov dword ptr ss:[ebp-0x48],eax
push 0x4 ; /Protect = PAGE_READWRITE
push 0x1000 ; |AllocationType = MEM_COMMIT
push eax ; |Size = 7FFDFFFF (2147352575.)
push ebx ; |Address = NULL
call dword ptr ds:[<&KERNEL32.VirtualAlloc>] ; \VirtualAlloc
类似这种程度的
sub eax,esi ; eax=系统最大地址-esi系统最小地址
shr eax,0x10
add eax,eax
add eax,eax
像这四句指单独都知道意思,但是组合在一起,就不明白它的意思了,到底是怎么样的高级语言会产生这种形式的汇编指令(我了解过除法的优化啥的),不知道这里边有没有什么门道,有没有高手指点下,该如何去学习理解类似这种指令.
[注意]APP应用上架合规检测服务,协助应用顺利上架!