올리디버거나 ida 툴로 어셈 코드 읽을 때 말야
뭘 공부해야 그게 쉽게 읽힐까
아무리 고민해도 이해가 안되는데 코드가
어셈블리 160페이지짜리 책 지금 읽고 있는데 이거 다 읽으면 쉽게 읽힐까?
어셈블리 책은 어셈에 대해 나와있는 건 같지만 디버깅 코드는 어셈블리 명렁어 자체만 안다고 해서 이해할 수 있는 건 아닌 거 같아
push 0FAh ; nSize
lea eax, [ebp+Filename]
push eax ; lpFilename
push hInstance ; hModule
call ds:GetModuleFileNameA
lea edi, [ebp+eax-0FDh]
mov eax, edi
lea ecx, [ebp+Filename]
sub eax, ecx
cmp eax, 4
jle short loc_1003DC0
예를 들어 함수 호출하는 루틴이 이렇게 있으면
[ebp+Filename] 같이 ebp에 무언가 값을 더하는게 있고 [ebp+eax-0FDh] 같이 빼는게 있는데 이게 어떤 차이인지라든가
아무튼 ebp에 무언가를 더한 값을 참조하는건 맞는데 이게 구체적으로 어떤 값을 참조하게 되는건지 이런걸 모르겠어 어떻게해야할까
ebp esp를 통한 스택프레임 형성과
주로 사용되는 calling convention만 익히면 됨 수십가지가 잇지만 std fast cdecall등