안티 치트 Obscure

문의 응대 : 평일 오전 10시 ~ 오후 6시
문의를 남기실 경우 다음 항목을 작성해 주세요.
정보가 부족하거나 응대시간 외 문의하는 경우 확인 및 답변이 지연될 수 있습니다.

  • 뒤끝 SDK 버전 : 5.7.0
  • 프로젝트명 : Element Runner
  • 스테이터스 코드 :
  • 에러 코드 :
  • 에러 메시지 :

안녕하세요.
안티 치트 관련해서 뒤끝 관계자분께 여쭤보고 싶은 게 있어서 이렇게 질문합니다.

현재 메모리 위변조 방지를 위해 주요 데이터를 ObscureInt를 이용해서 보호하고 있습니다.
뒤끝 문서를 참고해서 서버로 저장할 때는 복호화를 통해 제대로된 값이 저장될 수 있게 진행하고 있구요.

다만, 문제는 하나의 클래스(UserDB) 안에
또 다른 클래스(LevelDB, InventoryDB 등등) 가 있고, 각 클래스의 주요 데이터들은 ObscureInt를 사용하다 보니,
서버로 데이터를 전송할 때마다, UserDB 클래스와 똑같이 1:1 매칭되는 SaveUserDB 클래스와 SaveLevelDB, SaveInventory 등등의 클래스를 생성, 기존 클래스의 데이터를 복호화후 서버로 전달합니다.

안티 치트를 사용할 경우, 이런 식의 대응으로 서버에 데이터를 저장시키는 편이 효율적인 걸까요?

요약:
안티치트 ObscureInt 등을 사용하는 UserDB Class를 서버로 전송할 때, SaveUserDB Class를 생성하여,
덮어쓰기 및 복호화 후 서버로 전달.

안녕하세요 개발자님.

해당 함수를 통해 일반적인 int값이 들어가있는 class가 삽입되면 문제가 없을 것으로 보입니다.

혹은 해당 클래스의 데이터만 업데이트가 되는 형식이라면 함수 내부에 자신의 데이터를 Add하여 Param으로 돌려주는 함수를 제공하는 식으로 하는 것도 추천드립니다.

class InventoryDB
{
  public InventoryDB(JsonData json)
  {
      level = Int32.Parse(jsonData["row"]["level"].ToString());
      hp = Int32.Parse(jsonData["row"]["hp"].ToString());
      power = Int32.Parse(jsonData["row"]["power"].ToString());
  }


  public Param GetParam()
  {
    Param param = new Param();
    param.Add("level", level.GetDecrypted());
    param.Add("hp", hp.GetDecrypted());
    param.Add("power", power.GetDecrypted());
    return param;
  }
}
좋아요 1