글 수 429
... 차이점이 느껴지십니까? ;; (요즘 이 문구 너무 자주 써먹는다)
SOW 의 포인터 돌려주기 루틴을 조금 개선했습니다. 앞으로는 가장 먼저 나오는 주소를 변경합니다.
예를 들면..
[ESI+0x4FA78]+[ESI+0x4FA7C] 의 경우 [ESI+0x4FA78] 의 포인터를 보정합니다.
ECX+0x3 의 경우 ECX 의 포인터를 보정합니다.
따라서.. ATCode의 주소식에서 가능하면 기준 포인터는 뒤에, 변환 포인터를 앞에 두시기 바랍니다.
다시 말해 [ESI+0x4FA78]+[ESI+0x4FA7C] 의 경우, [ESI+0x4FA7C] 가 기준 포인터이고 (곧, 문자 출력할 때 변하지 않는 포인터), [ESI+0x4FA78]이 변환 포인터 (곧, 문자 출력시 1씩 더해가면서 출력되는 포인터)입니다. 물론 거꾸로 놓아도 동작하긴 합니다만.. 기준 포인터는 메모리 복구 이전에 다른 데에서 쓰여버리면 곤란하기 때문에 가능하면 변환 포인터를 사용해 보졍하는 것이 안전할 듯 생각됩니다.
.. 괴악하게 0x3+ECX 라고 사용하지는 마시기 바랍니다 -_-; 반드시 포인터 레지스터 혹은 변수가 맨 앞에 있지 않으면 역시 보정 못합니다.
옵션창...
... ㄷㄷㄷ