Advertisement
20110605

割ったMinecraftでUnlicensed copyの表示を消す方法(1.6.6用)

Jun 5th, 2011
2,938
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.63 KB | None | 0 0
  1. 割ったMinecraftでUnlicensed copyの表示を消す方法(1.6.6用)
  2.  
  3. Minecraftはバージョン1.6から海賊版対策としてゲーム開始から一定時間(6000フレーム≒10分ぐらい?)経過するとユーザー認証をしたかどうかを確認し、していなければそのことを画面左上隅に表示するようになりました。
  4. この表示を消すには二つの方法があります。
  5.  
  6. 1. hostsを編集する
  7. Minecraftが検証用に接続しているサーバーへ接続できないようにします。
  8. C:\WINDOWS\system32\drivers\etc\hostsをメモ帳などで開いて
  9. 127.0.0.1 login.minecraft.net
  10. を追記してください。
  11.  
  12. 2. MODを導入する
  13. MOD: http://www.mediafire.com/file/9ao4mb0nuj24dyz/bypass-anti-piracy.zip
  14. MODで本体に変更を加えそもそも検証をさせないようにします。
  15. 普通のMODを入れる要領で.minecraft/bin/minecraft.jarを7zip等で開きkl.classをこのzipのなかのものと置き換えてください。META-INFフォルダーが残っている場合は削除してください。
  16. ソース付きですので気になる方は自分でコンパイルしてください。
  17.  
  18. 両方をする必要はありません。どちらかお好みの方法をお選びください。
  19.  
  20.  
  21. 技術的な詳細
  22.  
  23. ./minecraft/net/minecraft/client/Minecraft.java
  24. private void func_28001_B()
  25. {
  26. (new ThreadCheckHasPaid(this)).start(); // 購入確認用のスレッドを開始する
  27. }
  28.  
  29. public void runTick()
  30. {
  31. if(ticksRan == 6000) // 6000フレーム経過したら
  32. {
  33. func_28001_B(); // 購入済みかどうかを確認する
  34. }
  35. ...
  36. }
  37.  
  38. ./minecraft/net/minecraft/src/ThreadCheckHasPaid.java
  39. public void run()
  40. {
  41. try
  42. {
  43. HttpURLConnection httpurlconnection = (HttpURLConnection)(new URL((new StringBuilder()).append("https://login.minecraft.net/session?name=").append(field_28146_a.session.username).append("&session=").append(field_28146_a.session.sessionId).toString())).openConnection();
  44. httpurlconnection.connect(); // ユーザー認証をしているか(≒購入しているか)を確認する
  45. if(httpurlconnection.getResponseCode() == 400) // 認証されていなかったらステータスコード400が返る
  46. {
  47. Minecraft.hasPaidCheckTime = System.currentTimeMillis(); // 購入が確認できなかったというフラグを立てる
  48. }
  49. httpurlconnection.disconnect();
  50. }
  51. catch(Exception exception) // 発生した例外は無視される
  52. {
  53. exception.printStackTrace();
  54. }
  55. }
  56.  
  57. ./minecraft/net/minecraft/src/GuiAchievement.java
  58. public void updateAchievementWindow()
  59. {
  60. if(Minecraft.hasPaidCheckTime > 0L) // 購入が確認できなかったら
  61. {
  62. GL11.glDisable(2929 /*GL_DEPTH_TEST*/);
  63. GL11.glDepthMask(false);
  64. RenderHelper.disableStandardItemLighting();
  65. updateAchievementWindowScale();
  66. String s = "Minecraft Beta 1.6.6 Unlicensed Copy :("; // その旨を表示する
  67. String s1 = "(Or logged in from another location)";
  68. String s2 = "Purchase at minecraft.net";
  69. theGame.fontRenderer.drawStringWithShadow(s, 2, 2, 0xffffff);
  70. theGame.fontRenderer.drawStringWithShadow(s1, 2, 11, 0xffffff);
  71. theGame.fontRenderer.drawStringWithShadow(s2, 2, 20, 0xffffff);
  72. GL11.glDepthMask(true);
  73. GL11.glEnable(2929 /*GL_DEPTH_TEST*/);
  74. }
  75. ...
  76. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement