난 게임 개발자도 아니고 그냥 일반 웹개발자임 ( c#은 업무할때 딱 한번 봤는데 자바랑 비슷해서 크게 문제 없다고 생각하고 모르는건 구글링 해 봤음  )


근데 이 씨발  1.3버전에서 왜 한글패치가 렉 걸리고 무슨 복돌방지 시스템 개지랄을 해대니 뭔지 궁금해서 찾아봄 


이건 뭔가 대단한 결론이 있다기보다 이 한글 모드가 어떻게 돌아가는지 나름 찾아본 결과를 바탕으로 모드에 대한 정보를 기록해두기때문에 

결론을 기대한다면  잘못 찾아옴 




일단 xml 파일 중심으로 어느 코드를 실행시키는 메인 진입점을 보니 

16번 라인에 MBKoreanFont.MBKoreanFontSubModule

을 바탕으로 실행 시키고 있는 것을 알았기 때문에 저 부분을 찾아 볼꺼임 


근데 dll을 딱히 열어본 경험이 없기 때문에 몇번의 구글링으로 dll 파일을 열어보는 프로그램을 설치했고 해당 dll을 열어 보았음 ㅇ


찾아보니 위에서 찾은 MBKoreanFont.MBKoreanFontSubModule 

을 발견 했고 해당 파일을 열어보았음



첫번째로는 마블의 핵심 코드들을 사용하기 위해서 선언된 코드 api들이 보임 

내가 왼쪽 클릭시 일어나는 기능을 수정하고 싶다 하면 저기에 왼쪽 클릭을 담당하는 class를 선언하여 사용하면 됨 





그외 구글 api들이 ㅈㄴ 많은데 뭔지 모르겠음 






웹개발 관점으로 보면 우리는 웹사이트에 사람들이 들어오면 어디서 무엇을 하는지 관찰을 해야하고 어느 사이트에서 몇초를 머물고 어디를 많이 클릭하고 적게 클릭하며 무슨 os로 들어오는지를 알아야함 , 정확히는 내가 알 필요는 없고 마케터들이 알아야하니까 그걸 제공해주는 구글 api를 사용한적이 있음 


근데 무슨 드라이버도 보이고 하니까 

본인들이 말하는 최신 업데이트 내역이 있으면 드라이버 엑세스해서 다운받을려고 막 집어넣은 것일 수도 있고 잘 모르겠음 


아무튼 다시 코드를 보니 




자신의 생성자를 호출함 


OnSubModuleLoad 실행되면서  if (AuthClient.IsSteamAuth() != AuthClient.Auth.Good)  <- 얘가 핵심적인 복돌체크하는 기능이 실행됨 


!= 의 뜻은 

AuthClient.IsSteamAuth() 이 메소드가 실행되면서 리턴하는 결과값과 AuthClient.Auth.Good 와 동일하면 복돌이 이라고 판단하는 코드

즉 Good  이어야 하는데 Good 이 아니라 이거임 


AuthClient.IsSteamAuth()  그러면 이 스태틱 메소드가 어떻게 실행되는지 알아보자 




노란색 형광펜 순서대로 설명하면 


AuthClient.Auth IsSteamAuth()  다른 곳에서 얘를 실행 시켰고 이제 이 메소드가 동작함 


if (providerName == "Steam") 즉  실행하는 주체가 스팀이냐 아니냐를 판단하는 부분

userId 아마 api중에서 현재 실행시킨 유저 id에 대한 정보를 주나봄  그것을 저장하는 변수 


WebRequest.Create("https://steamcommunity.com/profiles/" + userId).GetResponse().GetResponseStream())

유저 아이디 기준으로 해당 프로필에 접근하는 것으로 추정됨 


The specified profile could not be found. 프로필에 접근한 결과값에 프로필이 존재하지 않는다는 문자가 포함되어 있다면


AuthClient.Auth.FailedByFoundPage  ,  위에서 봤다 시피 Good 넘겨 줘야 복돌이 아닌데 FailedByFoundPage 찾을 수없다는 것을 넘겨줌 


76561201195729065 크랙 프로필 번호인것으로 추정됨 크랙 프로필의 경우 역시 Good이 아닌 FailedByKnownCrackID 를 넘겨줘서 

복돌이라고 인식시킴


0 정상적인 프로필이라고 하여도 게임을 소유하지 않으면 FailedByOwnerShip 넘겨줌 






 


위의 모든게 끝나고 복돌이 아니라고 판단되면 Good 넘겨줌 




솔직히 말하면 왜 이런 개 비효율적인 작업을 하는지 모르겠음 

내가 c#개발자는 아니기 때문에 잘 모르겠는데 static을 원래 이렇게 남발해도 되는거냐 ?

내가 알기로는 메모리 잡아 먹는걸로 알고있는데 




그리고 뭐지 저 부분은 


난 복돌이 아니라서 그냥 넘어 갔는데 


 if (AuthClient.IsSteamAuth() != AuthClient.Auth.Good)

        return;

복돌이 한패하고싶으면 그냥 저부분 찾아서 지우면됨 

그럼 복돌체크 패스 할 듯