아아... 12월 1월 두달동안 무지 바빴습니다 oTL
회사에 문제가 생겨서..;;
어쨌든.. 좀 여유가 생겨서 예전부터 마음에 두고 있던 ATCode 를 손봤습니다.
변경점
1. CTransCommand 리팩토링
- CHookPoint::ExecuteTransCmds 에 몰려있던 복잡한 코드들을 CTransCommand계열 클래스로 정리했습니다.
(더 복잡해졌을지도 모릅니다 -_-;)
2. 세로 폰트 삭제
3. 피시 님의 코드를 새로운 번역 방식으로 분리
- SMSTR (스마트 문자열) 이라는 번역 방식으로 분리했습니다.
- 기존의 OVERWRITE(BUFCHANGE, LENCHANGE) 는 SMSTR 로 자동변환됩니다.
(기존에 만들었던 ATCode 를 그대로 먹여도 호환됩니다)
- 기본적으로 IGNORE 옵션으로 동작합니다. 따라서 IGNORE 옵션 자체는 삭제되어 있습니다.
(만약 IGNORE 를 안쓰는 옵션이 필요하면 말씀하시면 다시 살려보죠)
- PTRCHEAT(LENCHANGE) 는 삭제했습니다. 피시님의 111210 버전에서도 삭제된 것 같고요.
4. 마이너한 변경점으로 제 디버그 라이브러리가 들어갔는데 실제 작동에 영향을 끼치는 것도 아니고;
테스트
- Rewrite : 제대로 작동하는 듯
- RanceQuest : 여기서 버그잡느라 난리쳤습니다만 일단 퇴치. 제대로 작동하는 듯.
- Sucre : 제 시스템 윈7 64비트에서 후킹옵션이 안먹는 문제 발생.
피시님의 111210 버전에서도 동일한 문제가 발생하는 것으로 보아 윈7 64비트와의 문제이거나
알파롬 프로텍트의 문제인 것으로 보임..
다른 게임들은 SMSTR [ OVERWRITE(BUFCHANGE) ] 이 적용된 게임이 없어 테스트 안해봤습니다.
OVERWRITE/PTRCHEAT/SOW 는 한종류씩 테스트해봤는데 대충 작동하는 듯.
소스는 svn/branches/whoami/ 에 있습니다. trunk2 말고요.
플러그인은 압축을 풀면 ATCode.test.log.dll 과 ATCode.test.nolog.dll 두개가 나옵니다.
하나는 로그를 만들고 다른건 로그를 안 만드는 차이밖에 없습니다.
로그파일은 D:\ATCode.log 로 만들어집니다. D 드라이브가 없을 때의 작동은 보장 못합니다;;
Sucre 테스트 가능하시면 테스트해보시고 알려 주시기 바랍니다.
FrigateBird
- 2012.02.07
- 18:14:38
http://lab.aralgood.com/index.php?document_srl=48293&mid=board_devtalk&comment_srl=49468
에 마지막 댓글로 달았는데 못보신듯 하네요.
whoami
- 2012.02.07
- 22:08:11
아. 이번 버전에 제가 중점을 둔 사항은 SMSTR 지원에 있는 것이 아니라 (이건 피시님께서 다 해두신거죠)
너무 복잡해진 CHookPoint::ExecuteTransCmds 때문에 유지보수가 힘들어진 코드를 정리해서 유지보수를 쉽게
변경하기 위한 것이었습니다. 따라서 피시님 입장에서는 111210 버전과 달라진 것이 없다고 느끼시는 것이
정상입니다 (실제로 SMSTR 부분은 피시님 111210의 원본을 그대로 복사해왔습니다)
제가 피시님께 부탁드리고 싶은 것은 뭐냐면, 111210 버전과 120207 버전이 (거의) 동일한 동작을 하는지 확인해
달라는 것이었습니다. 앞으로의 버전업은 이 120207 버전을 기반으로 해나가야 하는데 제가 미처 찾아내지
못한 문제점 (CTransCommand 의 리팩토링으로 SMSTR과 OVERWRITE(BUFCHANGE)의 동작방식에 차이가
있을 수 있습니다)을 아무래도 이 방식에 더 익숙하신 피시님께서 찾으실 수 있을 것 같았으니까요. 또한
SMSTR 에서 IGNORE 옵션을 남겨야 할지 남기지 말아도 될지에 대한 피시님의 의견을 듣고 싶기도 했고요.
그래서.. 피시님 내지는 다른 분들의 고견을 부탁드립니다.
FrigateBird
- 2012.02.08
- 14:28:43
동작 방식을 확인할 수 있는 여건이 지금 마련되어있지 않아서 조금은 힘들겠습니다.
일단 제 입장에서는 우선적으로 유니코드 문장게임에 첫바이트를 인식못하는 점(1바이트 체크로 인해 유니코드일때 문제 발생
(그대로 복사해버리셨다면 일단 보안했으리라 생각되는군요.)
SMSTR 에서 유니코드, 아스키의 원할한 지원, IGNORE옵션에 하위 개념으로 포인터 교채식과 해당메모리내에 버퍼무시로 따로 있으면 좋겠네요.
나중에 하위 개념으로 하나 체크박스 더 추가하려고 했는데...
후엠씨가 하신다면 저는 뒤로 살짝 물러나겠습니다.
일부 게임에서 저런식으로만 있다면 편리하겠더군요.
whoami
- 2012.02.08
- 13:27:00
일단 에그헤드에 대한 지식이 없어서 뭐라 말씀 못드리겠습니다만..
에그헤드쪽을 후킹한다면 에그헤드의 데이터를 받아올 수 있을지도 모르겠습니다.
그리고 그 질문글에 대한 것은.. 전처리 후처리는 필터가 하는 기능이고 정규식은 적당한 필터에 라이브러리만 넣어서
적용시키면 될 듯도 합니다. 차수.. 는 무슨 뜻인지 모르겠고요.
뭐.. 다 좋습니다만 문제는 작업시간 (과 흥미도) 입니다.. 아랄트랜스에 풀타임으로 시간을 투자할 수도 없고
저는 본체와 ATCode 유지보수 하다보니 시간이 없군요. 다른 개발자님들도 바쁘시거나 혹은 흥미를 잃어
손을 대시지 않고 계신 듯 하고요.
모과
- 2012.02.13
- 21:23:20
안녕하세요.
whoami
- 2012.02.13
- 23:09:40
안녕하세요.
뭔가 이 글에 대한 댓글이 산으로 가는 기분은 좀 들지만 ^^ 정확하게 정리하자면,
Hide_D님은 아랄의 정규식 적용이 어렵다는 게 아니라 'CustomDic 의 현재 구조상' 정규식 적용이
어렵다는 뜻인 듯 하고요, 저는 아랄에 '새 필터를 제작하면' 정규식 적용이 문제가 없지 않을까
라는 뜻이었습니다. 물론 저는 에그헤드 관련 지식이 없기 때문에 실제 아랄에서 적용이 불가능할
수도 있습니다만 일단 그건 차치하고요..
일단 뭔가 해보려면 에그헤드의 단어 변환 방법과 CustomDic 을 제가 분석해봐야 이해를 하고
이에 대한 해결책이나 보완책을 찾을 수 있을 듯 합니다만, 저도 시간을 쪼개어서 써야 하는 상황이라
장담을 드릴 수 없군요.
에그헤드-> 아랄 은 정확하게 어떤 뜻인지 불확실해서.. 에그헤드가 후킹해서 빼온 데이타를 아랄이
받아서 (마치 AGTH->ClipHookerEx 처럼) 번역 후 돌려주는 식으로 한다는 뜻인가요?
저번에 올려드린 소스에서
(BUFCHANGE, LENCHANGE) 에 기능을 위에 말씀하신대로 이미
BUFCHANGE 하나로 사용중에 있습니다.
또한 PTRCHEAT 쪽도 삭제,
IGNORE 기능을 살려놓고 쓰고 있었습니다.
뭔가 .. 후엠님이 제가한 일을 한번 더 하신듯한 느낌이 드는군요.
지금 제가 내놓은 형태는
1.BUFCHANGE 만 사용시 글이 번역후 한라인 이내일때는 해당 주소 IGNORE 모드
초과시 PTRCHEAT에 기능에서 번역 포인터만 가져다 덮어쓰는 형식입니다.
2.물론 IGNORE 를 해재시 한라인 이내로 번역되면 마찬가지로 해당 주소에 번역 길이만큼 번역(잘림)
초과시 주소내에 버퍼에 번역글을 복사하여 원문 길이 유지(잘림)
정도로 쓰고 있습니다.
부가적인 필요기능을 염두하는건
PTRCHEAT 기능처럼 글이 초과될때 번역된 글의 포인터 바꾸기가 아닌
해당 타겟내에 번역문을 덮어쓰면서 초과를 해도 되는 경우입니다.