현재 LEN 기능으로 길이 연산 체크를 할때
-1이나 0의 범위까지 0x00인 NULL 문자로 길이 체크를 하잖아요?
그렇지 않은 경우도 있네요.
길이는 있으나 해당 번역문+길이 위치에 NULL문자가 없는 형태의 길이 교체형태도 추가주세요.
(그때는 길이값만 변하도록 말이지요.)
2번째 추가 건의 기능은
해당 길이값에 가감연산이 되도록 인자값을 더 넣어주셨으면 합니다.
예를 들어 지금 현재의 기능은
해당 인자값 위치에 길이와 번역될 길이를 비교하여 그 길이 이후에 0x00문자가 있나없나 -1의 범위까지 체크한 후 변경하는 형태이면
저 체크기능을 제외하고
특정 인자를 몇개 추가하여 연산형태로 교채하는 방법이 좋을것 같네요.
ex. LEN([esp]+0x4) 인 형태에서
번역되어 교체될 길이값 : TRL (해당값은 번역된 길이로 고정, 유니코드일때는 정확한 HEX길이값으로)
번역되기 전 원문의 길이값: TXL (아랄트랜스가 번역하려는 원문의 길이값을 직접 측정해야겠지요?)
가리킨 주소에 있던 길이값: TAL (바꿀 장소에 있는 원래 값입니다.)
ex.LEN([esp]+0x4,TRL) //기본적인 형태, 제외가능
ex.LEN([esp]+0x4,TRL+0x1) //NULL문자 값의 길이까지 측정할경우
ex.LEN([esp]+0x4,TRL/0x2) //유니코드의 특정 형태일 경우
ex.LEN([esp]+0x4,TAL+TXL-TRL) //이건 3번째 건의할 기능에서 필요한 경우입니다.
위와같은 형태로 오른쪽의 값을 무조건 왼쪽 값의 넣는 형태입니다.
(그렇게 한다면 위의 체크기능은 필요없을 뿐더러 없에야 하겠지요)
3번째 추가 건의 기능은
LEN값을 여러곳 지정했으면 좋겠네요.
현재로써는 길이값 수정은 한 구간 밖에 되지 않은데, 저걸 여러 곳도 되도록 하면 좋겠네요.
ex. LEN([esp]+0x4,TRL),LEN([esp]+0x8,TAL+TXL-TRL)
뭐, 이런식입니다.
(사실 저렇게 구현되면 LEN([esp]+0x4,TRL),LEN([esp]+0x8,(TRL/0x10+0x1)*0x10+0xF) 과 같은 형태로 스마트 기능이 필요 없어지겠지만요.. -ㅈ- b)