DevUA

Salesforce Development Team Lead at MalkosUA

Meta


Як я хакнув illuminated cloud плаґін до Intellij Idea

Bohdan DovhańBohdan Dovhań

Один з моїх джуніків показав мені прикольний плаґін, який дозволяє робити контрол-клік, це та фіча, якої мені вічно бракувало в Force.com IDE ( екліпсі для сейлзфорса ), так само її немає в Mavensmate плаґіні до саблайма.
Єдина проблема була в тому, що той плаґін був платний, і що давав 30 днів пробного періоду, а за такий короткий час той плаґін навіть не розпробуєш.
Тому я зацікавився найперше, як цей плаґін визначає, що закінчився термін пробного періоду.
Пробував шукати в реєстрі ключі з ім’ям або текстом Illuminated, не знайшов нічого. Потім методом проб і помилок знайшов папку .IdeaIC2016\config\plugins\IlluminatedCloud\lib\TurboActivate і знайшов там TurboActivate.dat і TurboActivate.dll.
Також після того я знайшов статтю, де один чувак пише про те, як обійти захист TurboActivate  і, хоча я зовсім не знаю асемблера, вирішив спробувати скачати IDA і пошукати там значення, яке відповідає за визначення, чи ліцензія активна, чи ні. Однак в мене виникли проблеми з тим, що я скачав 32-бітну версію IDA і нею я міг патчити тільки 32-бітну бібліотеку TurboActivate.dll, а мій плаґін використовував, вочевидь, 64-бітну версію цієї бібліотеки, тому навіть після того, як я хакнув TurboActivate.dll, мені далі вискакувало повідомлення, що залишилося 8 днів пробного періоду. Тоді я спробував взагалі видалити 64-бітну версію цієї бібліотеки разом з папкою.
Помилка, що виникла при наступному запуску ідешки

Caused by: java.lang.Error: The system cannot find the path specified.
at com.sun.jna.Native.open(Native Method)
at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:171)
at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:398)
at com.sun.jna.Library$Handler.(Library.java:147)
at com.sun.jna.Native.loadLibrary(Native.java:412)
at com.sun.jna.Native.loadLibrary(Native.java:391)
at turboactivate.TurboActivateNative.(SourceFile:1113)
at turboactivate.TurboActivate.SetCustomProxy(SourceFile:763)
at com.illuminatedcloud.intellij.license.LicenseValidator.configureProxy(SourceFile:141)
at com.illuminatedcloud.intellij.license.LicenseValidator.validateLicense(SourceFile:76)
at com.illuminatedcloud.intellij.parser.ApexParserDefinition.(SourceFile:38)

наштовхнула мене на іншу думку. А навіщо мені взагалі лізти в ту бібліотеку і асемблер, якщо можна просто відключити на рівні класу LicenseValidator? Я розпакував джарку, знайшов байткод класу LicenseValidator, дизасемблював його за допомогою цього сайту: http://www.javadecompilers.com/, замінив його код на такий, що повертає завжди тру на запит про те, чи пакет ліцензований, і який навіть не шукає і не запускає бібліотеки TurboActivate. Зробив проект в екліпсі, скомпілював його, перемістив скомпільовану версію цього класу в джарку, запустив інтеліджей айдію – вуаля, все працює, набридливе повідомлення про те, що залишилося 8 днів пробного періоду, зникло. Ура!

Крос-пост http://sug-lviv.blogspot.com/2016/03/illuminated-cloud-intellij-idea.html

Salesforce Development Team Lead at MalkosUA