有没有哪里可以获得clion的clion1.5 注册码码啊,不用打补丁的那种

Clion注册码与注册机 - 工作 - 天宝寺||陈瑞轩
1199 次浏览
先上一个注册码:
chenruixuan
===== LICENSE BEGIN =====
000031!hMSjl3Uf8MO”UMY”qVczi!e
wOvOwN!3″wixWUCYU3NFMDWdE5h!eS
rD43oB9hiEzKoR11i4xtLiqCdQsCfY
===== LICENSE END =====
注册机下载地址:
密码: xk7t
使用方法:java -jar build/lib/JetbrainsPatchkeygen-xx.jar
Mac下CLion输入的目录:/Applications/CLion.app/Contents/lib
没有个人说明
6241 1699 1243 1193 887 822 676 669 623 585本篇只从逆向兴趣出发,研究其程序运行原理。
CLion程序版权为jetBrains所有.
注册码授权为jetBrains及其付费用户所有.
不会释出任何完整的源代码.
涉及能直接推算出注册码的地方打码.
网上查了下,已有注册机,所以想要key的同学不要找我.
CLion是什么?
CLion是著名的jetBrains公司出的一款C/C++智能IDE。什么,你不知道jetBrains?我只提两点:
Visual Studio ReSharper (for C#)
IntelliJ IDEA (for java)
你还是不知道?好吧,我确定你是emacs/vim党.
CLion如下:
我们通过结合jdb、jd-gui等工具,静态分析被混淆的clion.jar中的class信息,顺利拿到了CLion的注册码算法.
但是,如果能在动态调试中分析代码路径,拿注册码算法或者改改功能啥的不是更酸爽么?
本篇将从动态调试的角度展开逆向之旅,作为对上篇的一个补充。
本篇用到的关键技术和工具:
java -verbose
HotSpot(TM) Serviceability Agent
jetBrains intellij IDEA 14.3
jetBrains CLion 1.0.4
jd-gui 1.2
dump运行时的class信息
带混淆调试
ClassPath和vm options修复
动态调试的困难
对于CLion这种产品级程序,我们面临以下困难:
字节码混淆
运行时生成class和hotswap
获取入口函数所在的类名
办法总比困难多,让我们开始准备动态调试吧!
通过上一篇博文的分析,我们已经熟悉了CLion程序启动的一些代码路径,首先要找到程序的入口函数main,并重建它。怎么找呢?
方法1:通过启动脚本来找
可以通过查看$CLION_HOME/bin下的clion.sh来看启动参数:
133 MAIN_CLASS_NAME=&$CL_MAIN_CLASS_NAME&
134 if [ -z &$MAIN_CLASS_NAME& ]; then
MAIN_CLASS_NAME=&com.intellij.idea.Main&
176 LD_LIBRARY_PATH=&$IDE_BIN_HOME:$LD_LIBRARY_PATH& &$JDK/bin/java& \
&-Xbootclasspath/a:$IDE_HOME/lib/boot.jar& \
-classpath &$CLASSPATH& \
$VM_OPTIONS &-Djb.vmOptionsFile=$VM_OPTIONS_FILES_USED& \
&-XX:ErrorFile=$HOME/java_error_in_CL_%p.log& \
-Djb.restart.code=88 -Didea.paths.selector=clion10 \
$IDE_PROPERTIES_PROPERTY \
$IDE_JVM_ARGS \
$REQUIRED_JVM_ARGS \
$MAIN_CLASS_NAME \
方法2:通过jinfo来获取
也可以让CLion先跑起来,通过jinfo来获取,首先通过jps和ps -ef | grep clion来确认CLion的pid:
[haoran@localhost Tools]$ jps
26953 Main
16911 Launcher
接着输入jinfo pid,这里是jinfo 26953:
[haoran@localhost Tools]$ jinfo 26953
Attaching to process ID 26953, please wait...
Error attaching to process: sun.jvm.hotspot.runtime.VMVersionMismatchException: Supported versions are 25.45-b02. Target VM is 25.40-b25
sun.jvm.hotspot.debugger.DebuggerException: sun.jvm.hotspot.runtime.VMVersionMismatchException: Supported versions are 25.45-b02. Target VM is 25.40-b25
at sun.jvm.hotspot.HotSpotAgent.setupVM(HotSpotAgent.java:435)
at sun.jvm.hotspot.HotSpotAgent.go(HotSpotAgent.java:305)
at sun.jvm.hotspot.HotSpotAgent.attach(HotSpotAgent.java:140)
at sun.jvm.hotspot.tools.Tool.start(Tool.java:185)
at sun.jvm.hotspot.tools.Tool.execute(Tool.java:118)
at sun.jvm.hotspot.tools.JInfo.main(JInfo.java:138)
发现因为jre/jvm的版本不匹配,出现了异常,怎么解决呢?从clion.sh入手,看看它如何指定jvm:
可以发现,$IDE_HOME意即CLion安装的路径比$JAVA_HOME搜索的顺序更靠前,我们调整这个顺序即可避免jre/jvm版本不匹配的问题。
调整后,再次利用jinfo pid来查看,得到如下信息:
之所以列举jre/jvm版本不匹配的异常问题,以及通过jinfo来获取程序入口函数所在类的方式,是为后续我们通过SA来dump运行时的class及修复java文件扫清障碍、奠定基础。
新建入口类
我们已经得到main函数所在的类名为com.intellij.idea.Main,但是通过分析,发现其不在clion.jar中,那么它在哪里?
我们通过在CLion启动参数中加入-verbose,并将结果重定向到文件中,来分析这个类所在的jar。
如下所示:
接下来,通过jd-gui来反编译bootstrap.jar/com/intellij/idea/Main.class,并将其java代码导入到我们新建的同名java文件中:
修复入口类
这样的java代码是无法通过编译的,而且因为很多缺失的类都是很重要的依赖,所以无法通过简单的屏蔽来让代码跑起来。
那我们开始修复这些缺失的类,怎么修复呢?
我们可以使用HotSpot(TM) Serviceability Agent (SA)提供的能力,获取运行时的class。当然,获取运行时的class不只这一种方式。
说干就干,classFilter:
编译好这个classFilter,按下面的步骤来运行:
运行CLion.
找到CLion的pid.
启动如下命令:
java -cp $JAVA_HOME/lib/sa-jdi.jar:. \
-Dsun.jvm.hotspot.tools.jcore.filter=$filterName \
-Dsun.jvm.hotspot.tools.jcore.outputDir=$dumpedClassOutputDir \
sun.jvm.hotspot.tools.jcore.ClassDump $clion_pid
# $filterName
:我们自定义的classFilter
# $dumpedClassOutputDir : 存放dump出的class文件的目录
# $clion_pid :CLion进程pid.
看下我们dump出的classes:
到这一步,已经成功了一大半,接下来,按照你喜欢的方式将这些classes加入classPath吧!
修复ClassPath
还在等什么,赶紧点run吧:
嗯,果不其然,很多类还是缺失,对于运行中生成的类,按上面的方法来找,对于已经在jar中的类,赶紧找找classPath还有什么吧。
还记得上面的jinfo吧,祭出:
将这些加入ClassPath中。
修复资源、运行时参数、及JVM的options
程序已经越来越接近跑起来的状态,还有一些细碎,奔跑吧骚年!
Q. 此刻有没有一种,买来风扇,涂上硅胶,扣定开关的感觉?A. 要的就是这种能够DIY的工程师感觉嘛~^^
你会发现,后续的运行中,还会出现许多异常,没有关系,通过分析,就知道还有一些东西没有修复,包括:
资源/Resources
运行时参数
vm options
其中CLion的vm options我们依然通过jinfo方式获取:
-Xss2m -Xms256m -Xmx768m -XX:MaxPermSize=250m \ -XX:ReservedCodeCacheSize=96m -XX:+UseConcMarkSweepGC \ ... -XX:ErrorFile=/home/haoran/java_error_in_CL_%p.log \ -Djb.restart.code=88 -Didea.paths.selector=clion10 \ -Didea.platform.prefix=CLion \ -Didea.no.jre.check=true
让程序动起来!
做完了上面细碎的功夫,来看看我们的成果:
华丽丽的Stack Frames!
华丽丽的Locals!
华丽丽的注册码算法!
什么?没有动态调试过程?
有意研究注册码算法的同学,请参考上篇博文:.但是不要做坏事哦 :]
我觉得上面的几个华丽丽的东西已经足够你
step in/over/out (单步 步入/步过/跳出)
evaluate expressions (表达式计算)
stack frame in/out (栈帧切换)
break point (断点啊亲)
有了这些还追不出注册码算法么?骚年,那你该反思了 :]
撰文不易,若觉得本文对你有帮助或者博你一笑的,留个言、点个推荐吧 :]
阅读(...) 评论()CLion程序版权为jetBrains所有、注册码授权为jetBrains及其付费用户所有,本篇只从兴趣出发,研究其注册码生成算法。
不会释出任何完整的源代码.
网上查了下,已有注册机,所以想要key的同学不要找我:p
打算学习cocos2dx,奈何vim只会ggvG,被jetBrains惯坏了,果然找到了CLion,试了下,果然神器,我等菜鸟正好可以拿来愉快地学习书写c++了。
但是,试用版有30天的限制,又没有学生授权,懒得折腾,看下它的注册算法吧。
本篇用到的主要工具和命令:
jd-gui 1.2
找出注册算法的代码段
先用jd-gui看下反编译的效果,大概找了下,看到这个MainImpl类:
反编译的效果还是可以,不过注意到一些类和方法的名称被混淆了,如上图的a.a().a(new a.a_())....
尝试直接建立java文件,发现很多类缺失,比较难补,遂放弃。
尝试用java attach和agent方式来dump运行时的class,比较难偷,遂放弃。
换换思路:
CLion启动后,如果未输入正确的注册码,或者没有选择试用,会打开一个对话框,提示输入注册码。
如果选择试用,先进入主界面,打开关于对话框,可以看到部分授权信息。
好,从这两个点出发,大概找找相关代码,缩小分析范围:
分析MainImpl启动前后的类加载信息
修改$CLION_HOME/bin下的clion.sh:
在启动参数中,加入-verbose.
重新启动CLion,收集到MainImpl加载前后的一些信息,如下图:
继续翻看,又发现如下一些信息:
发现 com.intellij.ide.a包和com.intellij.a包严重混淆,并且在MainImpl加载前后出现. 可以初步判定这些包是分析重点.
分析AboutPopup类的信息
打开关于/About对话框,观察比对代码,发现如下信息:
在粗略分析相关代码后,跟踪到这里:
LicensingFacade是个抽象类,跟一些实现,发现只有一个子类:
接着跟,又发现一个抽象类bb:
这个类在com.intellij.ide.a.g包下,其中一段关键代码:
public void a(q.a_ parama_)
boolean bool = GraphicsEnvironment.isHeadless();
a(this.f);
/// 这里的u()是关键
for (s locals : u())
if (locals.d() == null) {
locals.c();
com.intellij.a.b.e locale = locals.d();
if (locale != null)
g_ localg_ = a(parama_, locals);
if (localg_ != g_.SKIP)
UpdateChecker.addUpdateRequestParameter(&license&, a(locale));
if (localg_ != g_.OK) {
int i1 = (!bool) && (a(locale, locale instanceof l)) ? 1 : 0;
if (i1 == 0)
a(parama_, locals, locale);
b.error(&No valid license found&);
System.exit(-1);
b(parama_);
接着看com.intellij.ide.a.g.bb.u()方法:
private s[] u()
s[] arrayOfs = v();
Object localObject1 =
for (Object localObject3 : arrayOfs)
((s)localObject3).c();
if (((s)localObject3).d() != null) {
/// 这里的b()是关键
((s)localObject3).b();
catch (Exception localException)
localObject1 = localObject3;
if (localObject1 != null)
??? = new ArrayList(Arrays.asList(arrayOfs));
((ArrayList)???).remove(localObject1);
((ArrayList)???).add(0, localObject1);
return (s[])((ArrayList)???).toArray(new s[((ArrayList)???).size()]);
return arrayO
中间的过程比较繁琐,考验的是耐心、推测、和笔记功夫。通过相关代码的类型分析、方法分析、参数分析、变量分析,逐步缩小关键代码段的分析范围,同时增加对混淆代码的熟悉。
分析注册码算法解密验证的重点包
结合上面的对于MainImpl加载前后的类信息分析,重点关注com.intellij.a.g这个包.
最终跟到这样一个类com.intellij.a.g.c:
package com.intellij.a.g;
import java.math.BigI
public class c
/// 这个a是关键,通过后面的实验,这是RSA加密算法的公钥部分的n .
private static BigInteger a = new BigInteger(&8eebb90aa3b95c7ffc19dc9a54b042e99c134a3ec80dbe43aab7e897cc334bc9b8bb9f0d55f5&, 16);
private static BigInteger b = new BigInteger(&10001&, 16);
/// 这个方法是关键
/// 通过推测和实验,可以确定paramString1和paramString2是用户名和代码,或者相反。
public static h a(String paramString1, String paramString2)
// 这个h类型是关键,记录了注册码类型、产品类型、用户名、过期时间、维护到期时间、主版本号、小版本号等关键信息
h localh = new h();
// 这里m.a(,,,)方法完成第一次解密
byte[] arrayOfByte = m.a(paramString1, localh, b, a);
// m.a(,,,)方法验证注册码解密后的字节信息,从中提取关键属性
m.a(arrayOfByte, localh, paramString2, 14);
// 继续验证
m.b(arrayOfByte, localh, paramString2, -1);
为了确定静态分析过程的正确性,使用jdb来看一下简单的调用栈:
Idea Main Thread 1.0.4#CL-141.874.66, eap:false[1] wherei 0x6f4
/// 可以确定,每次加载MainImpl,调用其start方法,都会来下面这个方法中验证注册码,这是迄今为止最为关键的发现
[1] com.intellij.a.g.c.a (c.java:18), pc = 13
[2] com.intellij.ide.a.b.b$0.b (b$0.java:71), pc = 2
[3] com.intellij.ide.a.b.b$0.a (b$0.java:67), pc = 3
[4] com.intellij.a.b.d.x (d.java:34), pc = 12
[5] com.intellij.a.b.d.t (d.java:13), pc = 1
[6] com.intellij.a.b.b.s (b.java:40), pc = 10
[7] com.intellij.a.b.b.c (b.java:33), pc = 1
[8] com.intellij.ide.a.g.t.h (t.java:108), pc = 41
[9] com.intellij.ide.a.g.t.a (t.java:27), pc = 8
[10] com.intellij.ide.a.g.m.b (m.java:29), pc = 27
// bb类是个很重要的类,后续分析
[11] com.intellij.ide.a.g.bb.u (bb.java:152), pc = 48
[12] com.intellij.ide.a.g.bb.a (bb.java:78), pc = 18
[13] com.intellij.idea.MainImpl$1.start (MainImpl.java:45), pc = 19
[14] com.intellij.idea.StartupUtil.prepareAndStart (StartupUtil.java:117), pc = 115
[15] com.intellij.idea.MainImpl.start (MainImpl.java:40), pc = 9
[16] sun.reflect.NativeMethodAccessorImpl.invoke0 (native method)
[17] sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62), pc = 100
[18] sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43), pc = 6
[19] java.lang.reflect.Method.invoke (Method.java:497), pc = 56
[20] com.intellij.ide.plugins.PluginManager$2.run (PluginManager.java:91), pc = 53
[21] java.lang.Thread.run (Thread.java:745), pc = 11
分析注册码字节数组
/// 我们重点跟一下com.intellij.a.g.c.a()方法:
package com.intellij.a.g;
import java.math.BigI
public class c
private static BigInteger a = new BigInteger(&8eebb90aa3b95c7ffc19dc9a54b042e99c134a3ec80dbe43aab7e897cc334bc9b8bb9f0d55f5&, 16);
private static BigInteger b = new BigInteger(&10001&, 16);
/// 重点跟这个方法
public static h a(String paramString1, String paramString2)
h localh = new h();
byte[] arrayOfByte = m.a(paramString1, localh, b, a);
m.a(arrayOfByte, localh, paramString2, 14);
m.b(arrayOfByte, localh, paramString2, -1);
在上面的方法中,类型h很关键,这里的字符串没有混淆,给我们推测注册码结构提供了极大的便利 O^. ^O.
/// 这里的一些字段和变量的意思,已经给出来了
public String toString() {
StringBuffer var1 = new StringBuffer();
var1.append(&\n&);
var1.append(&user name:& + this.b + &\n&);
var1.append(&customer id:& + this.c + &\n&);
var1.append(&product id:& + j.a(this.d) + &\n&);
var1.append(&license type:& + i.a(this.e) + &\n&);
var1.append(&major version:& + this.f + &\n&);
var1.append(&minor version:& + this.g + &\n&);
var1.append(&generationDate:& + this.h + &\n&);
var1.append(&expirationDate:& + this.i + &\n&);
return var1.toString();
a.b = &Fake&;
a.h = d.a();
a.i = d.a();
跟这个方法:byte[] arrayOfByte = m.a(paramString1, localh, b, a);
protected static byte[] a(String var0, h var1, BigInteger var2, BigInteger var3) throws a {
Matcher var4 = c.matcher(var0);
var0 = var4.replaceAll(&&).trim();
// 10是ASCII码中的&\n&换行符
// 13是ASCII码中的&\r&回车符
// 下面的代码告诉我们一个重要信息:
// 加密的注册码至少包含1个\n(linux)或者\r(windox|mac)
int var5 = var0.indexOf(10);
if(var5 & 0) {
var5 = var0.indexOf(13);
if(var5 & 0) {
throw new a();
// 45是ASCII码中的&-&
// 重要信息:加密的注册码至少包含一个&-&,且出现在&\n&或&\r&之前
String var6 = var0.substring(0, var5);
int var7 = var6.indexOf(45);
if(var7 & 0) {
// 从[xx-??\n???]中提取xx,并赋值给var1.c
// 根据上面的h类型的信息,这里的xx是cutomerId,所以我们有了:
// license : customerId-??\n???
var1.c = Integer.parseInt(var6.substring(0, var7));
} catch (NumberFormatException var9) {
throw new a();
var1.c = -1;
// 这里可以确定传入的var2是公钥的n,var3是公钥的e
// 同时根据RSADecoder我们也找到了对应的RSAEncoder,后续直接拷贝RSAEncoder过来,作注册码加密用^^
return (new RSADecoder(var2, var3, 64)).decode(var0.substring(var5 + 1));
跟这个方法:m.a(arrayOfByte, localh, paramString2, 14);
static void a(byte[] var0, h var1, String var2, int var3) throws a {
//这里,我们根据传入的var3 = 14,得知:
//license的长度为14个字节
if(var0.length != var3) {
byte[] var4;
if(var0.length == var3 + 1) {
if(var0[0] != 0) {
throw new a();
var4 = new byte[var3];
System.arraycopy(var0, 1, var4, 0, var3);
var0 = var4;
if(var0.length &= var3) {
throw new a();
var4 = new byte[var3];
System.arraycopy(var0, 0, var4, var3 - var0.length, var0.length);
var0 = var4;
// 这里我们根据分析,得到:
//var2 : userName , var1.c : customerId , var3 : 14
// 假设lic是个14字节长的字节数组,我们有:
//lic[12] = customerId & 0xFF;
//lic[13] = customerId && 8 & 0xFF;
if(var2 != null) {
下面的o.a(,,)方法的实现:
可以直接把这段代码copy到我们做注册码的地方^^
public static short a(String var0, int var1, byte[] var2) {
CRC32 var3 = new CRC32();
if(var0 != null) {
for(var4 = 0; var4 & var0.length(); ++var4) {
char var5 = var0.charAt(var4);
var3.update(var5);
var3.update(var1);
var3.update(var1 && 8);
var3.update(var1 && 16);
var3.update(var1 && 24);
for(var4 = 0; var4 & var2.length - 2; ++var4) {
byte var6 = var2[var4];
var3.update(var6);
return (short)((int)var3.getValue());
short var5 = o.a(var2, var1.c, var0);
// 这里得到:
// lic[12] = crc32 & 0xFF
// lic[13] = crc32 && 8 & 0xFF
if(var0[var3 - 2] != (byte)(var5 & 255)) {
throw new a();
if(var0[var3 - 1] != (byte)(var5 && 8 & 255)) {
throw new a();
努力,继续跟这个方法:m.b(arrayOfByte, localh, paramString2, -1);
static void b(byte[] var0, h var1, String var2, int var3) throws a {
var1.append(&user name:& + this.b + &\n&);
var1.append(&customer id:& + this.c + &\n&);
var1.append(&product id:& + j.a(this.d) + &\n&);
var1.append(&license type:& + i.a(this.e) + &\n&);
var1.append(&major version:& + this.f + &\n&);
var1.append(&minor version:& + this.g + &\n&);
var1.append(&generationDate:& + this.h + &\n&);
var1.append(&expirationDate:& + this.i + &\n&);
// licTypeId是注册码类型的Id,prodId是产品类型的Id
* lic[0] = licTypeId && 4 + (prodId & 0xFF);
var1.b = var2;
var1.d = var0[0] & 15;
var1.e = var0[0] && 4;
var1.g = var0[1] && 4;
//这里得到generationDate信息,也就是now了,以毫秒表示,并带符号右移16位,然后按4字节存储
* long now = System.currentTimeMillis() && 16;
* lic[2] = now & 0xFF;
* lic[3] = now && 8 & 0xFF;
* lic[4] = now && 16 & 0xFF;
* lic[5] = now && 24 & 0xFF;
long var4 = ((long)var0[2] & 255L) + (((long)var0[3] & 255L) && 8) + (((long)var0[4] & 255L) && 16) + (((long)var0[5] & 255L) && 24) && 16;
var1.h = new Date(var4);
* 注意到上面有句 :var1.g = var0[1] && 4;
* 结合下面的代码,我们有:
* lic[1] = minorVer && 4 + (majorVer & 0xFF);
var1.f = var0[1] & 15;
* lic[6] = delta & 0xFF;
* lic[7] = delta && 8 & 0xFF;
int var6 = (var0[6] & 255) + ((var0[7] & 255) && 8);
if(var6 != 0) {
//expire date
var1.i = new Date(var4 + (long)var6 * 24L * 60L * 60L * 1000L);
//lic[10] = any
//lic[11] = any
int var7 = var3 & -1?var3:(var0[10] & 255) + ((var0[11] & 255) && 8);
if(var6 != 0) {
var7 = var6;
//var1.l = maintenanceDueDate ,维护到期时间
var1.l = new Date(var4 + (long)var7 * 24L * 60L * 60L * 1000L);
} catch (ArrayIndexOutOfBoundsException var8) {
throw new a();
得到产品信息和注册码类型信息
现在我们基本拿到了注册码的字节信息,还差一点,产品信息和注册码类型信息这里处理的是Id,那么实际信息在哪里?
还记得我们前面说过一个bb类吧,对它的子类进行分析,可以得到很多类似这样的代码:
static a a(com.intellij.ide.a.r var0, q var1) {
return new a(var0, &AppCode&, 8, Products.APPCODE, 3, 30, &6&, var1, new g() {
public h b(String var1, String var2) throws com.intellij.a.g.a {
return com.intellij.a.g.b.a(var1, var2);
看来jetBrains的很多产品的加密算法都是差不多,真是比较懒啊.
通过分析bb类所在的包com.intellij.ide.a.a,以及com.intellij.a.g包,我们得到如下有用信息:以及:
写出注册码生成算法
关键字节数组,14字节长:
import java.util.zip.CRC32;
public class GroupUtil {
public static final int a = 12;
public static final int b = 14;
public GroupUtil() {
public static short computeCRC32(String userName, int customerId, byte[] licBytes) {
CRC32 crc32 = new CRC32();
if(userName != null) {
for(int i = 0; i & userName.length(); ++i) {
char var5 = userName.charAt(i);
crc32.update(var5);
crc32.update(customerId);
crc32.update(customerId && 8);
crc32.update(customerId && 16);
crc32.update(customerId && 24);
for(int i = 0; i & licBytes.length - 2; i++) {
byte var6 = licBytes[i];
crc32.update(var6);
return (short)((int)crc32.getValue());
RSA加密,可直接拷贝反编译代码
注册码生成
测试注册码
目前的问题是,我们没有私钥,怎么搞?可以随意生成一对RSA的公钥/私钥,然后用我们生成的公钥的n,替代class文件中的n,这里的n是modulus.
看看clion.jar中的com.intellij.a.g.c.class的信息:
注意右边ASCII字符的部分,上文有提到这个类的n,我们可以替换之。
怎么替换呢?方法很多,jar、zip、sed,编程方式(javassist、asm、zip)都可以搞定,这个留给读者吧:]
阅读(...) 评论()估计比起本周新作,如火如荼的 CJ 展更吸引各位目光,虽然 CJ 在资深玩家心目中依旧难...
除了 Apple Music 之外,未来还会有更多的 iOS 应用支持安卓平台。
对于许多喜欢恐怖游戏的手游玩家来说,由Scott Cawthon制作的《玩具熊的五夜后宫(Fiv...
其实今天 Apple Watch 也来到了天猫,总之今后买个表不再局限于苹果官网了。
看周杰伦和JAYZ还有姆爷那么火就知道,说唱在我国是多么受欢迎了~那么Dr. Dre的新专辑...
这次 Android 平台的 Stagefright 漏洞越来越得到厂商们的重视,但国内品牌依然集体沉...
据说新Nexus 5是第一部搭载Android M,第一部预装Android Pay的智能手机,亲生的就是...
国人都喜欢免费大餐,Apple Music要收费的时候,你会买账吗(假设Apple Music已经正式...
对于中国的观众来说《探险活宝》这个名字可能还比较陌生,大多数人应该都没有听说过它...
曾推出过弹幕游戏《.Decluster:弹丸地狱》的日本独立游戏开发者 Masayuki Ito 本周上...
对于喜欢休闲类游戏的玩家来说,游戏开发商Bulkypix的大名一定如雷贯耳,Bulkypix一直...
随着国内独立游戏工作室的崛起,让我们看到了越来越多的好作品,由国内独立游戏工作室...
不少玩家对于游戏《厄运和命运(Doom & Destiny)》不会陌生,游戏是由Matteo Nicolot...
《Makai Picnic(まかいピクニック 暂译为魔界郊游)》是一款在日区上架的放置系解谜...
对于许多喜欢恐怖游戏的手游玩家来说,由Scott Cawthon制作的《玩具熊的五夜后宫(Fiv...
要是你不想随身带着沉甸甸的充电宝,又不想因为使用背夹电池而让 iPhone 变成一块“砖...
逼格满满的机械风格加上硬朗的线条设计,Core Armor 确实很能吸引路人的眼球,要是价...
你的iPhone是不是该升一下级了?不不不,我说的不是系统升级,而是给你的爱机换一个风...
前段时间发布极具创意的“天使之翼”手机壳的厂商,在本月又发布了一款更为脑洞大开的...
iPhone的热卖不仅让苹果和供应链越赚越多,同时也让配件厂商乐开了花。你见过最奇葩的...
为了保护iPad,苹果推出了Smart Cover。现在为了保护Smart Cover,苹果又要推出新的解...
MIPOW(麦泡)智能 LED 灯泡可谓是近来国内众筹平台上的一个热点了。仅用一天时间,它...
酷开 A55 旗舰版就是一款为果粉打造的 4K 电视机。让人惊喜的是,通过 Apple Watch 控...
CLion 1.0 破解安裝
注册时间 最后登录
在线时间185 小时 UID
主题帖子人气
白苹果, 积分 1114, 距离下一级还需 386 积分
本帖最后由 firstlast 于
14:28 编辑
CLion 是一個強大的IDE幫助您在C和C++開發的工具。準備工夫。。。
1. 下載CLion 1.0
2. 下載破解工具
3. 下載Java 1.7
因為時間的問題,已經給大家收集了。
http://pan點baidu點com/s/1ntECCpN 密碼:rk9x
大家先檢查Java的版本。。。可用指令:java -version.
強烈建議用1.7版本。。。。
Java安裝無問題後,就是安裝CLion了。
安裝完成後不用著急去打開。 先跳去下一步。
將破解檔案解壓,轉用terninal去刻文件夾。執行以下命令。
./gradle fatjar 或者 ./gradlew.sh fatjar
java -jar build/lib/JetbrainsPatchkeygen-xx.jar
Jetbrains's Product Patch or Keygen.Crack by Rover12421.
support genuine().
Please select product:
1. RubyMine
2. PyCharm
3. WebStorm
4. PhpStorm
5. AppCode
Please enter your username :
Rover12421
Clion need patch
Please enter your Clion install path or clion.jar path :
/Develop/jetbrains/CLion/Clion
Find Key. Patch...---------------------------------------
Product : Clion
UserName : Rover12421
===== LICENSE BEGIN =====
00000fxZErQ6!bLiVKLLPWdjESYOER
vidz!7EtdSji53QcEYk0npwOkl926D
mMXEzJgM3G1M3I&&&bSI0Dg8&vXaAj
===== LICENSE END =====
最後才打開先前安裝完成的CLion,然後注册,填上用戶名和生成的license key.
這樣就大功告成。在此,多謝大神Rover12421的破解工具。。。。
希望這個分享對你有少許價值。。。。
謝謝收看。。。。
<p id="rate_17300" onmouseover="showTip(this)" tip="一直使用 xcode~&人气 + 2
" class="mtn mbn">
一直使用 xcode~
我任性但没钱
注册时间 最后登录
在线时间0 小时 UID
主题帖子人气
1.0.1版本的Clion可以用这个方法破解吗?
注册时间 最后登录
在线时间1437 小时 UID
帖子 精华1
主题帖子人气
一直使用 xcode~
注册时间 最后登录
在线时间185 小时 UID
主题帖子人气
1.0.1版本的Clion可以用这个方法破解吗?
相信可以。。。。我也是下載最新的版本。。。。
(48.66 KB, 下载次数: 6)
21:50 上传
我任性但没钱
注册时间 最后登录
在线时间0 小时 UID
主题帖子人气
最新版的应该是1.0.1,我在官网上用学生教育邮箱注册了一个账号,你看,可以免费使用一年...到期再注册一下就行
-DE29-40F7-A11F-D3A5E1D14DF6.png (175.36 KB, 下载次数: 0)
22:28 上传
注册时间 最后登录
在线时间185 小时 UID
主题帖子人气
最新版的应该是1.0.1,我在官网上用学生教育邮箱注册了一个账号,你看,可以免费使用一年...到期再注册一下 ...
剛剛再看一次。。現在是1.0.1版了。。。。
我任性但没钱
注册时间 最后登录
在线时间21 小时 UID
主题帖子人气
好东西,顶一下~已经测试过了,可以用的。
注册时间 最后登录
在线时间185 小时 UID
主题帖子人气
好东西,顶一下~已经测试过了,可以用的。
恭喜。。。。。。
我任性但没钱
注册时间 最后登录
在线时间11 小时 UID
主题帖子人气
请问具体的破解步骤是什么?
注册时间 最后登录
在线时间185 小时 UID
主题帖子人气
请问具体的破解步骤是什么?
已經很具體了。。。。。
我任性但没钱
威锋旗下产品
Hi~我是威威!
沪ICP备号-1 丨 深公安网监备案号 5
增值电信业务经营许可证:
Powered by Discuz!

我要回帖

更多关于 clion 1.0.5 注册码 的文章

 

随机推荐