-
Garbage CodeHack/Reversing 2015. 2. 25. 20:44
Garbage Code는 말그대로 쓰레기 코드이다.
리버싱하는데 리버서들에게 혼란을 주기위해 넣는 코드로, 아무의미없는 코드로 되어있다.
push eax
push ebx
push ecx
pop ecx
pop ebx
pop eax
해당 코드는 아무의미없는 코드이다.
단지 eax와 ebx, ecx값을 푸쉬하고 결국엔 다시 꺼내온다.
그냥 왔다갔다 시키는 코드인데, 이 사이에 mov 코드를 숨겨놓으면 리버서들은 더욱 힘들어진다.
push eax
mov eax,0x18
mov eax,ebx
push ebx
xor eax, eax
mov ebx,ecx
mov eax,ebx
push ecx
mov ecx,0x37
pop ecx
pop ebx
pop eax
첫번쨰 코드와 다른게없다
모든 레지스터들은 디폴트값을 가진다.
코드를 분석해보면 eax에 0x18을 넣지만 결국 ebx 즉, 빈값을 eax에 다시 넣어 초기화시킨다
그 밑에서도 ebx는 ecx로 초기화시킨다. 이런식으로 가비지코드와 동반하면 리버서들은 혼란을 겪는다.
이번엔 진짜 코드와 가짜 코드를 섞어본다.
저 코드 사이사이에 IsDebuggerPresent 거셈을 넣어두면 리버서들은 4줄을 여러줄로 힘들게 알아차리게된다.
수준있는 리버서가 아니라면 그 코드를 그냥 넘겨버릴수도있게된다.
프로그래머들은 해커에게 정보를 노출하고싶지않을 때 해당 방법을 사용하면 해커에게 조그만한 혼란을 줄수있으니 유용하게 사용하길 바란다
'Hack > Reversing' 카테고리의 다른 글
[CodeEngn]Level 3 (0) 2015.02.26 [CodeEngn]Level2 (0) 2015.02.26 Hot Patching (0) 2015.02.25 DLL with notepad (0) 2015.02.23 ELF Header 문서 (0) 2015.02.15