본문 바로가기

reversing/reversing

call[opcode 0xe8] 사용

SMALL

후킹을 하고 특정 함수를 호출하기 위해서 어셈블리어 call을 사용하게 된다.

==> target_address call 0x402f01

이러기 위해서 call [Address]의 기계어로 원하는 target_address에 적어 주어야 한다.

처음에 생각은 0x402f01에 존재하는 함수를 호출하고 싶으면

0xe8402f01 이런식으로 구성되는 줄 알았다. --> 아니다


그래서 검색하다가 나와서 정리하려고 한다.

CALL opcode == 0xe8

operand == call[위의 0x402f01]과 call 하는곳[target_address] 사이의 바이트 길이 offset 

            == offset from call


[Example]

00401000에서 0040CF40를 CALL 할 경우 0000BF3B가 나온다

0040CF40 - 00401000 - 5 [CALL operand Len]

e8 BF3B0000 가 나온다.



[출처] http://glukjeoluk.tistory.com/entry/call-opcode

LIST

'reversing > reversing' 카테고리의 다른 글

C++ 리버싱 연습  (0) 2016.11.29
get physical address  (0) 2016.11.29
Cheat Engine  (0) 2016.11.18
[Project] 디버거 만들기 [2] [브레이크 포인트]  (0) 2016.09.27
[Project] 디버거 만들기 [골격]  (0) 2016.09.27