별 의미는 없는 글입니다.
다만, 모르고 계시거나 알고는 있어도 중요도를 모르는 분이 많은 것 같기에
이렇게 글을 쓰게 되었습니다.

현재 아랄트랜스의 코드를 넣는 방식이 다양해졌습니다만
코드를 팔때 제일 안정도가 높은 순서대로 적어보겠습니다.

1. 복구 주소를 사용
하는 개념이 있는데 가령 후킹할 위치가 아래와 같다고 가정합니다.

0x10000     CALL 0x20000

CALL은 5바이트를 사용하기에
후킹주소를 10000, 복구주소를 5

를 기입하면 아랄자체에서 해당 콜내부의 처리를 진행할때만 변경한 포인터나 스마트 방식을 보내고
나와서는 원래대로 복구하게됩니다.

제일 이상적인 후킹으로 CALL 내부에서 복사형태가 있을경우 간단히 다른것에 간섭을 주지 않고
아랄 포인터로만 내용 복사후 복구하게 됩니다.

해당 CALL을 지나 메모리를 해제하거나 다른 글을 다시 집어넣어 사용, 혹은 해당 메모리 전후의 다른 값을 참조하는
에러를 미연의 방지가 가능한 환상적(?)인 후킹방식입니다.
현재 넥서스엔진(ex.기가 브랜드의 게임들)에서 테스트로 해본결과 엄청난 효과를 발휘했습니다.
다른 RPG 종류의 게임에서 사용할 경우에도 큰 힘을 발휘할 수 있을것입니다.

따라서, 후킹주소를 찾을때 대사가 복사되는 CALL문만 찾아서 몇번의 테스트만 하면 바로 안정적인 코드를 내놓을 수 있습니다.

2. 복구주소 + 예외주소 사용
위의 1번의 기능을 사용하면서 예외주소란 걸 사용했을 경우입니다.
이게 1번보다 약한 이유는 후킹위치가 CALL 내부에서 걸기 때문입니다.
가령 리턴포인트가 2개소 이상이 있다면 사용할 수 없을뿐더러 무리하게 사용할경우 에러를 동반할 수 있습니다.

3. 포인터 강제복구 (필요하다면 '중복번역체크' 도 겸으로) 사용
위의 1번의 메모리 해제 등을 만나면 힘을 잃습니다.
또한 2번의 다른 콜스택에서 여러번 지나치는 것일 경우 에러나 번역 출력에 이상이 생깁니다.
다만, 그렇지 않은 경우에 한해서 이 기능은 강력한 힘을 발휘할 것입니다.
해당지점에 2번째 이상부터 후킹주소에 거칠때 이전에 바꿔치기한 포인터나 스마트 방식을
일시적으로 검증하여 복구하는 형태를 취하고 있습니다.

4. 일반적인 포인터 바꿔치기 사용
번역한 포인터의 후처리는 오로지 엔진한테 맡기는 기능입니다.
따라서, 극소의 취약한 부분의 위치나 튕기는 곳은 피해야하므로 코드 주소를 찾는데
이 방법은 많은 어려움과 시간이 따르게 됩니다.
알맞은 곳을 찾아 여행하는 파인더 분들이 해당 기능에 맞도록 헤엄치기 때문에
찾는데 다소 시간이 오래 걸리는게 이 때문입니다.
튕기는 일은 위에서 말한 2~3번의 취약점도 포함하여 엔진 자체에서 다른 이중적인 일을 할때 더 취약합니다.

5. 메모리 덮어쓰기 사용
아랄 기능중 가장 약한 기능입니다.
물론 버퍼크기 무시를 사용하지 않는다면 글이 잘리기는 하여도
이보다 안정적일 수는 없습니다.
하지만, 게임을 즐기는 유저로써는 글이 잘리는걸 용서(?)할 수 없을것입니다.

글이 잘리지 않도록 버퍼크기 무시를 사용하려면 
후킹을 거는 위치 이전에 해당 메모리에 초기화된 영역의 크기가 대사보다
더욱 크게 잡혀 깨끗하게 비워 있을 경우에 사용하는 것이 가장 이상적입니다.
그렇지 않은 곳에서 무리하게 사용할 경우 메모리 간섭이 일어나여
게임의 튕기는 가능성이 가장 높은 기능이기도 합니다.




이상으로 아랄기능의 안정도 순과 설명을 간단히 적어보았습니다.

아직 1~2번의 기능을 사용한 코드를 저 말고는 아무도 내놓지 않고 있기에
아랄소녀가 슬퍼하고 있기도 합니다.( -- 뭐라?)

아랄트랜스의 기능을 제대로 다룬다 자부하고 싶다면
아니, 아랄트랜스로 코드 좀 판다 하시는 분들이라면
앞으로 내놓는 코드는 1~3번의 기능사용을 적극 추천하는 바입니다.
(특히 1~2)

(저런걸 이해하기 싫다고 사용못하시면 그건 파인더가 아니에요!)

ps. 도망간다.