1. 개요
Dark Tornado가 만든 스크립트이다. 공식 명칭은 "Dark Cheater"이고, 공식 한글 명칭은 "다크 치터", 공식 줄임말은 "닼치"이다. 2차 공유는 금지되어 있다. 마인크래프트 0.10.4, 블록런처 1.8.6, 안드로이드 젤리빈 이상에서 작동한다. 네이티브 함수와 같은 블록런처 내부의 객체들에 접근하는 부분들이 많아서, 블록런처가 아니면 일부 기능이 작동하지 않는다. 현재는 스크립트 자체가 블록런처에서만 작동하도록 되어있으며, 원격 차단[1] 소스가 최초로 탑재된 스크립트이다. 현재 최신 버전은 3.1.2이다.[2]우선, 기능이 매우 많다. 서버 관리 기능부터 스마트 무빙
일부 메뉴들은 해당 메뉴를 여는 버튼이 없다. 그 메뉴들을 여는 법은 다음과 같다.
- 갑옷 슬롯 수정 - 인벤토리 수정 버튼을 길게 누름.
-
다크 포인트 - 인벤토리 수정 버튼을 더블 터치.2.6.0부터 삭제 - DL Skill - 월드 정보 수정 버튼을 길게 누름.
- 플레이어들 관리 - 플레이어 관리 버튼을 길게 누름.
- 밴 목록 - 플레이어 관리 버튼을 더블 터치.
- 주변 엔티티 관리 - 엔티티 관리 버튼을 길게 누름.
- Server Plugin - 서버 관련 버튼을 길게 누름. 추가 파일 필요
- 서버 테러 - 테러 방지 옵션 버튼을 길게 누름.
- 테러 도우미 - 테러 방지 옵션 버튼을 더블 터치.
- 추가 기능 - 기타 기능 버튼을 길게 누름.
- UI 설정 - 환경 설정 버튼을 길게 누름. 환경 설정 메뉴에 해당 메뉴를 여는 버튼 존재.
- 회원 전용 기능 - 기타 기능 버튼을 더블 터치. 로그인을 해야 사용 가능
2. Dark Cheater Addon
Dark Cheater Addon 이란 다크 치터와 연동이 가능한 스크립트이다. Dark Cheater Addon 말고도, 연동이 가능한 스크립트들도 있으나, 공식적으로 공개 및 배포되고 있는 것들은 Dark Cheater Addon 라고 부른다.다크 치터와는 달리, 대부분 2차 공유가 허용되어 있으며, 닼치 2.4.0부터는 닼치 내부에서 다운로드가 가능하다.
다음은 다크 치터와 연동이 가능한 스크립트들을 나열한 것이다.
- 테러 도우미 : 장거리 멀티와 호환되는 테러 스크립트이지만, 블록런처 1.12.1 이후부터는 버튼 삭제로 인해 사용할 수 없다. 이후 버튼을 계속 유지되나, 기능이 줄어들은 보급형 테러 스크립트인 "Terror Helper"가 등장했다.
-
Dark Cheater Addon - Client World Edit Plus : 서버원용 월드에딧 스크립트로서, 서버장이 다크 치터를 적용해야 사용이 가능하다. 서버장이 미리 다크 치터를 이용하여 해당 서버원이 월드 에딧을 사용할 수 있도록 해야 작동한다. 블록런처 1.12.1 이후부터는 버튼 삭제로 인해 존재 의미가 사라졌다.
사실, 버튼 삭제야 부활시키면 되는데, 서버원 => 서버장 메시지 전달에 사용되는 Server.sendChat();이 고장나버렸다. Level.executeCommand(); 함수로 /say 명령어를 실행시키면 된다.지금은 버튼을 삭제하는 것이 사라지는 듯 하다. - 개발자 기능 - 개발자가 쓰려고 만든 것. 공유될 일은 없다.
- TRA 추가기능 - TRA[4] 회원들을 위한 기능이다.
- Dark Cheater Addon - The Seed : 제작자의 또 다른 스크립트인 Cardinal System의 하향버전. 당연히 모티브는 소드 아트 온라인의 카디널.
-
Nustia - Terror Supporter[5] : 불법적인 요소도 포함되어 있는 테러 스크립트. 당연히 공유되지 않으며, 개발자 기능과 연동되어있다. 사악함을 감소(...)시킨 버전인 Nustia jr.이 공개 예정인 듯 하다. - Dark Cheater Addon - Virtual Inventory : '가상 인벤토리' 스크립트의 2.0에 대응된다. 다른 스크립트들과는 달리, 다크 치터와 자동으로 연동되어 있으며, 버전 2.4.0 이상의 다크 치터에서 사용이 가능하다.
-
Dark Cheater Addon - Nusty : 사람들이 개발자를 닉네임이 아닌 "다크치터[6]"라고 불러서, 그러면 다크 치터와 대화하라고 만든 인공지능으로, 시간 설정과 같은 부가적인 기능도 실행이 가능하다.
S보이스나
시리와 유사한 기능이지만
시리나 빅스비 따라가려면 한참 남았다, 대화는 굉장히 제한적으로만 가능하다. Play 스토어에 앱 버전으로도 출시되어 있다. # 사실상, 앱 버전만 업데이트가 진행중이다. - Dark Cheater Addon - Commands : 다크 치터를 명령어화시킨 스크립트로, 아직 개발중이다.
- Dark Cheater Addon - Terror Supporter : 테러 도우미 8.0에 대응되는 스크립트로, 버전 2.4.0 이상의 다크 치터에서 사용이 가능하다. 적용시, 닼치와 자동으로 연동된다.
- Dark Cheater Addon - Hyper Movement : Hyper Movement 0.5.0에 대응되는 스크립트로, 여러가지 이동기들이 들어있는 스크립트이다.
3. DCMS
DCMS는 Dark Cheater Modify Script의 약자로, 블록런처에서 스크립트나 애드온[7] 등을 적용하듯이, 다크 치터에서 DCMS를 적용하는 것이다.블록런처/ModPE 개발를 기반으로 만들어졌으며, 확장자는 ".dcms".
이 곳에 나와있는 DCMS에 관한 설명은 버전 2.0이 기준이며, 버전 3.0부터는 일부 문법이 변경되어있으니, 참고 바람. 3.0 관련 설명(DCMS 페이지 링크)
콜백을 사용할 수 없다. 즉, 사용자 정의 함수를 사용할 수 없다. 신나게 함수를 정의하여도, 컴파일러가 무시하고 지나간다.
지역변수를 지원하지 않는다. 상수와 전역변수만 지원한다. 상수 또는 전역변수를 사용할 시, 상수의 앞에는 #을, 전역변수의 앞에는 @를 붙여야 한다. 다른 DCMS의 상수나 변수에 접근하는 것이 가능하다.
if, switch, for, while 등의 제어문은 ModPE와 문법이 동일하다.
3.1. 상수 선언법
상수는 다음과 같이 선언한다.
function defineConst(){
상수명 = 값;
}
3.2. 변수 선언법
변수는 다음과 같이 선언한다. 선언법은 상수에서 defineConst 대신에 defineVar를 사용한다는 것을 제외하고는 동일하다.
function defineVar(){
변수명 = 값;
}
3.3. 이벤트 리스너
이벤트 리스너는 다음과 같다. ModPE 스크립트와는 달리, 매개변수들의 이름이 정해져있으며, 이벤트 리스터의 () 안의 매개변수들을 생략하여도 생략한 매개변수를 사용할 수 있다.
- function blockTouch() 블록을 터치하면 호출된다. 매개변수는 x, y, z, i, b, s, it, bd 또는 x, y, z, itemId, blockId, side, itemDamage, blockDamage로 사용해야 한다. ModPE 스크립트의 useItem에 대응된다.
- function entityHit() 엔티티를 때리면 호출된다. 매개변수는 a, v 또는 attacker, victim으로 사용해야 한다. ModPE 스크립트의 attackHook에 대응된다.
- function entityDie() 엔티티가 죽으면 호출된다. 매개변수는 m, v 또는 murderer, victim으로 사용해야 한다. ModPE 스크립트의 deathHook에 대응된다.
- function modSecond() 1초마다 호출된다. 매개변수는 없다. ModPE 스크립트의 modTick에 약간 대응된다.
- function chatSend() 채팅을 하면 호출된다. 서버원의 채팅은 인식하지 않는다. 매개변수는 s 또는 str로 사용해야 한다. ModPE 스크립트의 chatHook에 대응된다.
- function selectMap() 맵에 들어가면 호출된다. 매개변수는 wn 또는 worldName으로 사용해야 한다. ModPE 스크립트의 newLevel에 대응된다.
- function selectServer() 서버를 선택하면 호출된다. 매개변수는 ip, port로 사용해야 한다. ModPE 스크립트의 이벤트 리스너들 중에 대응되는 것이 없다.
- function quitToTitle() 맵이나 서버에서 매인 화면으로 나오면 호출된다. 매개변수는 없다. ModPE 스크립트의 leaveGame에 대응된다.
3.4. 라이브러리
DCMS에서는 ModPE 스크립트의 메소드들을 사용할 수 있다.
DCMS 라이브러리를 적용하면, DCMS에서만의 메소드를 사용할 수 있다. DCMS에서의 라이브러리는 C언어에서의 헤더에 대응되는 개념이다. 라이브러리 파일의 확장자는 .dclib이다.
3.4.1. DCMS Basic Library
- sendMessage(내용);[8] 채팅창에 메시지를 출력한다. clientMessage();와는 달리, 서버원에게도 보인다.
- teleport(엔티티 x좌표, y좌표, z좌표); 해당 엔티티를 해당 위치로 이동시킨다. 서버원 포함.
- checkInternet(); 인터넷 연결 여부를 반환한다. 연결되어 있으면 true, 아니면 false.
- nightCheck(); 밤이면 true, 낮이면 false를 반환한다.
- toast(내용); 토스트 메시지를 출력한다. print();와는 달리, 앞에 스크립트의 이름이 뜨지 않는다.
- openUrl(url); 해당 url로 이동한다.
- showDialog(제목, 내용); 다이얼로그를 출력한다.
- getRealTime(날짜표함여부); 현실세계에서의 현재 시간을 가져온다. 날짜 표함 여부에는 true 또는 false를 넣으면 된다.
- getBatteryLevel(); 현재 배터리의 잔량이 몇 %인지 반환한다.
3.4.2. ModPE Expension Library
- Level.spawnSpiderJoky(x좌표, y좌표, z좌표); 해당 위치에 스파이더 조키를 소환한다.
- Level.spawnChickenJoky(x좌표, y좌표, z좌표); 해당 위치에 치킨 조키를 소환한다.
- Level.isNight(); 밤인지 확인한다. 밤이면 true, 낮이면 false 반환. nightCheck();와 동일
- Player.getHealth(); 플레이어의 체력을 반환한다.
- Player.removeEnchant(); 플레이어가 들고 있는 아이템의 인첸트를 해제한다.
- Entity.linkWithParticle(엔티티1, 엔티티2); 엔티티1과 엔티티2 사이를 파티클로 연결한다.
- Entity.getNearEntities(엔티티, 반경, 기타_엔티티_포함_여부); 해당 엔티티를 기준으로 해당 반경 내에 있는 엔티티들을 배열로 반환한다.
- Entity.removeNameTag(엔티티); 해당 엔티티의 이름표를 지운다.
- Entity.makeBaby(엔티티, 참/거짓); 해당 엔티티를 아기로 만든다. 좀비와 좀비 피그맨에게만 사용 가능. true일 시 아기로, 거짓일 시 어른(?)으로 만든다.
- Entity.startBattle(엔티티1, 엔티티2); 엔티티1과 엔티티2가 싸우도록 만든다.
- Entity.removeEntities(엔티티_타입_아이디); 특정 종류의 엔티티들을 전부 삭제한다.
- Item.getAllItemIds(블록_포함_여부); 존재하는 모든 아이템의 아이템 아이디를 배열로 반환한다.
- ModPE.getBlocklauncherVersion(참/거짓); 블록런처의 버전을 가져온다. 참이면 블록런처 프로, 거짓이면 블록런처 무료의 버전을 가져온다.
- ModPE.getMyIp();[9] 현재 나의 IP를 가져온다.
- ModPE.getUserName(); 현재 나의 닉네임을 가져온다.
- ModPE.checkBlocklauncherIsPro(); 현재 사용중이 블록런처가 프로 버전인지 확인한다. 프로 버전이면 true, 무료 버전이면 false 반환.
- ModPE.setWindow10Ui(참/거짓); 마크의 UI를 윈도우 10 에디션의 UI로 변경한다. 바로 적용되지는 않으며, 완전히 바뀌는 것도 아니다.
- Server.kickAllPlayers(); 서버에 접속한 모든 플레이어를 강제로 내보낸다.
- Server.getPlayerByName(닉네임); 해당 닉네임을 가진 플레이어의 엔티티값을 반환한다.
4. Dark Cheater API
다크 치터를 적용하면 다크 치터와 관련된 기능들[10]을 실행할 수 있는 Dark Cheater API라는 것을 사용할 수 있다.
5. Deep Dark Cheater
다크 치터 회원들만 사용이 가능한 수상한 기능. TRA 추가 기능에서도 실행시킬 수 있다. 공식 줄임말을 '딥닼치'.하나의 스크립트 처럼 작동하나, 다크 치터의 일부이다. 로그인하면 열리는 '회원 전용 기능'에 있으며, 일반 회원들은 서버에서 딥닼치를 사용할 수 없다. 일반 회원보다 높은 회원들도 광역 파괴와 같은 위험한 기능들은 사용할 수 없도록 막혀있다.
회원 전용 기능처럼 원격으로 업데이트되며, 딥닼치 부분 소스를 파싱으로 가져와서 닼치에다가 추가하는 방식이기 때문에, 닼치를 뜯어도 딥닼치의 소스는 나오지 않는다.
현재는 로그인을 하지 않아도 "환경 설정"에서 실행할 수 있도록 수정되었다. 물론, 과도한 테러를 막기 위해, 회원들만 서버에서 사용할 수 있도록 설정되어있다.
스크립트와 맵을 다운받을 수 있는 DDD(Deep Dark Downloader)를 딥닼치에서 실행할 수 있다. 현재 DDD에서는 스크립트와 맵, 음악을 다운로드할 수 있다. 딥 다크 다운로더는 앱으로 개발이 완료되어 Play 스토어에서 받을 수 있다.
6. White Cheater
STL 사건[11] 당시 누군가가 화이트 치터 드립을 쳤었는데, 그것이 실제로 일어났습니다. 공식 줄임말은 화치.
White Cheater Developers라는 이름으로 7명의 개발진[12]이 모여서 만든 치터로서, 서버에 접속할 시, 서버 측으로 화치 적용여부를 채팅을 동해 전달한다[13]. 닼치 만큼은 아니지만 기능은 상당히 많다.
스크립트 내에서 업데이트가 가능하다. 최신 버전 알림이 뜰 때, 최신 버전을 스크립트 내부에서 바로 다운로드할 수 있다.
현재 최신 버전은 2.0이다.
6.1. Pure White Cheater
딥닼치에 대응되는 화치의 기능. 현재 사용은 가능하나, 실행 방법이 공개되지는 않았다. '푸화치'(...) 또는 '순백치'가 공식 줄임말이다.7. Black Cheater
다크 치터 개발자가 최근에[14] 시작한 프로젝트이다. 공식 줄임말은 '블치'이며, 닼치나 화치와는 달리, 오픈소스 치터이다.
리눅스와 유사하게 누구나 업데이터가 돼서 다음 버전으로 업데이트 시킬 수 있는 프로젝트이다. 업데이트와 관련된 것은 Black Cheater 내부에 있는 Black Cheater License를 참고하면 된다. 현재 최신 버전은 4.0 beta이다.
그 업데이터가 업뎃시킨 버전의 블랙 치터의 2차 공유 허용/비허용 여부를 정할 수 있다.
8. 비판 및 문제점
다크 치터는 특정 상황에 한정하여[15] 일부 사용자와 관련된 데이터를 사용자의 동의 없이 수집할 수 있다. 개발자가 자바스크립트 소스를 사용자의 다크 치터에서 원격으로 실행할 수 있으며[16], 개발자는 이 백도어를 악성코드라고 칭하며, 보안에 매우 취약한 메소드를 사용한다는 점도 문제이다. 하지만, 블록런처의 권한 부족으로 인해 전화번호와 같은 상대적으로 민감한 정보는 수집하지 못한다. 해당 악성코드는 주로, 개발자 => 사용자 메시지 전달 용도로 사용된다. 여담으로, 이 악성코드를 통해 사용자의 정보를 수집하는 경우는 많지 않다. 주로, 메시지 전달용으로 쓰인다. 만우절때 장난용으로도 쓰였다고 카더라.
개발자는 테러 스크립트가 아니라고 주장하지만, 서버에서도 작동하기 때문에 테러로 악용하기가 쉽다. 한 때, 테러 스크립트 모음집 같은 것에 들어가서 같이 팔려다닌 적[17]도 있었다. 버튼이 삭제되기 시작한 블록런처 1.12.1에서도 버튼 유지를 시전하였으나, 1.12.2에서는 위험하다는 이유로 버튼 유지 소스가 닼치가 아닌, 개발자 기능으로 들어갔었다. 지금은 닼치에도 들어있지만, 버튼 유지를 위해 "서버에서 버튼 유지" 버튼을 누르면 비밀번호 입력란이 뜬다.
소스 최적화가 전혀 되어있지 않다. 들여쓰기가 없다. 물론, 개발자가 용량이 늘어나고, 들여쓰기가 없는게 좋다고 언급했었던 적이 몇 번 있지만, 들여쓰기는 사실상 암묵의 룰이다.
블록런처와 블록런처 프로에서만 돌아간다. MCPE Master와 툴박스에서는 돌아만 간다. 과거에는 아예 안돌아가도록 막았었던 적도 있는데, 이는 다크 치터가 블록런처 내부의 클래스에 접근해서 그런 것이라서 해결할 수 없는 문제점이다.
9. 여담
일부 DMCS 라이브러리는 스크립트용으로도 만들어져, 스크립트용 라이브러리와 DMCS용 라이브러리와 충돌하는 관계로, DMCS용 라이브러리가 사라지는 경우도 있었다. 예를 들어 DCMS 라이브러리 중 File 객체 함수들이 들어있는 File IO Library.dclib는, 스크립트 자체에 File 객체의 함수를 추가하는 File Library.js와 충돌하여 사라졌다. 스크립트용 라이브러리를 적용하면 그 라이브러리에 들어있는 메소드들을 DCMS에서도 사용할 수 있기 때문에, DCMS용 라이브러리가 사라졌다.
과거, 서버에 서버원으로 접속했을 때 정상적으로 작동하는 기능들만 따로 모아놓은 서버원 모드가 따로 존재했었으나, 용량 감소 등의 목적으로 삭제되었다. 서버원 모드에만 있었던 기능(테러 도우미)는 서버장 모드로 이동되었다,
앱 버전으로도 존재하며, Play 스토어에 출시되어 있었다[18]. 디자인은 기존 스크립트와 거의 유사하다. 스크립트에서는 Nusty가 Dark Cheater의 애드온으로 들어가지만, 앱에서는 그 반대로 Dark Cheater가 Nusty의 애드온으로 들어간다. 따라서, 명칭도 스크립트에서는 "Dark Cheater", "Dark Cheater Addon - Nusty"이고, 앱에서는 "Nusty", "Nusty Addon - Dark Cheater"로 되어있다.
10. 관련 문서
[1]
스크립트의 작동 여부를 제작자가 원격으로 결정하는 것. 웹상에 올라와 있는 파일을 다운하거나 파싱해서 그 내용을 읽어온 뒤, 그 내용에 따라 작동 여부를 설정하는 방식으로, 이 스크립트의 개발자 말고도 구현한 사람들이 몇 명 더 존재한다.
[2]
2018/9 기준
[3]
기타 기능 => 기능 검색. 깃허브 내용을 파싱해오는 방식이라, 인터넷 연결이 필요하다.
[4]
Terror Research Association, 테러 연구회.
ModPE 스크립트를 통한
MCPE 서버의 테러 및 테러 방지를 연구하는 연구회로서, 테러단은 아니다.
[5]
세 번째로 등장한 도스 공격 기능이 있는 스크립트. 버튼이 완전히 막혀도 계속 작동은 하는 Nustia 2.0도 있다.
[6]
실제로 모
좀비고등학교 카페에서 해당 닉네임을 사용하였던 사람이 있었다. 아직까지 사용하는지는 의문.
[7]
MCPE 0.16.0에서 추가된
애드온이 아니다.
[8]
채팅을 보내는 함수인 Server.sendChat();을 변형시킨 것이기 때문에, 장거리 멀티에서는 채팅을 한 사람의 닉네임도 함께 나온다. 그리고 0.15.x에서는...
[9]
UI 쓰레드 내부에서는 HTTP 연결을 생성할 수 없기 때문에, 사용할 수 없다. 일반 쓰레드를 하나 생성해서 거기에서 쓰면 된다.
[10]
다크 치터 로그인, 다크 치터의 메뉴 열기 등
[11]
STL이라는 마인크래프트 pe 서버들을 테러하고 다니는 테러단체에서 다크 치터를 이용하여 테러를 하다가, 다크 치터 제작자 측에서 모든 다크 치터의 작동을 차단해버린 사건.
[12]
개발진 톡방에 들어온 순서대로 Dark Tornado, 케케, MC_Blue, FLY123, 노이트, 티에온, 틱탭.
[13]
현재 0.15.x용 블록런처에서는 채팅을 보내는 함수가 고장나서 적용 여부가 전송되지 않는다...!
[14]
2016/8 기준
[15]
인터넷에 연결된 상태에서 다크 치터를 적용하고 블록런처를 실행한 경우 및 맵에 들어간 경우
[16]
물론, 다크 치터 라이선스에 명시되어 있다.
[17]
물론, 이미 작동이 차단된 버전이다.
[18]
구글의 SMS 권한 관련 정책 변경으로 인해 삭제될 앱이였기에 삭제되기 전에 개발자가 미리 내렸다. Dark Cheater 앱에는 사용자가 입력한 전화번호로 문자를 전송하는 기능이 있었다.