精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 资源出售

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

2019年好项目,每月多挣好多钱┃ 服务器出租E3单路E5双路E5 ┃ 长期 包养全网交友粉大户高价收购QQ单项双向好友日吃8000+收一手零转化微信小群粉高价收购【全部行业精准粉】进群!
2019年好项目,每月多挣好多钱┃ 模拟器虚拟机多开! 单进程 ┃长期 包养全网交友粉大户高价包养交友粉日吃8000+收一手零转化微信小群粉高价收购【全部行业精准粉】进群!
寻找有实力的短信群fa通道█长期大量收购各种活粉█长期 包养全网交友粉大户高价包养交友粉日吃8000+收一手零转化微信小群粉高价收购【全部行业精准粉】进群!
寻找有实力的短信群fa通道█ 长期收购各种引流软件 █长期 包养全网交友粉大户高价包养交友粉日吃8000+收一手零转化微信小群粉高价收购【全部行业精准粉】进群!
寻找有实力的短信群fa通道寻有实力的短信群fa通道加Q525253各种【活粉变现点这里】客服①高价包养交友粉日吃8000+收一手零转化微信小群粉高价收购【全部行业精准粉】进群!
寻找有实力的短信群fa通道寻有实力的短信群fa通道加Q525253各种【活粉变现点这里】客服①实力公司大量收粉日吃8000+收一手零转化微信小群粉高价收购【全部行业精准粉】进群!
寻找有实力的短信群fa通道寻有实力的短信群fa通道加Q525253各种【活粉变现点这里】客服①交友粉 婚恋粉 各种活粉日吃8000+收一手零转化微信小群粉高价收购【全部行业精准粉】进群!
星盟社群无限收各种引流资源寻有实力的短信群fa通道加Q525253各种【活粉变现点这里】客服②另收土豆社交APP活粉日吃8000+收一手零转化微信小群粉高价收购【全部行业精准粉】进群!
星盟社群无限收精准网赚资源寻有实力的短信群fa通道加Q525253各种【活粉变现点这里】客服②无限收交友粉 引流软件 qq7305830日吃8000+收一手零转化微信小群粉高价收购【全部行业精准粉】进群!
星盟社群免费帮对接担保交易实力收精准粉大量稳定加Q525253各种【活粉变现点这里】客服②无限收交友粉 引流软件 qq7305830日吃8000+收一手零转化微信小群粉高价收购【全部行业精准粉】进群!
星盟社群欢迎买卖方进群合作实力收精准粉大量稳定加Q525253┏┏ 全网大量收交友粉 ┓┓无限收交友粉 引流软件 qq7305830日吃8000+收一手零转化微信小群粉高价收购【全部行业精准粉】进群!
星盟社群免费帮对接渠道资源实力收精准粉大量稳定加Q525253〓 各种APP交友粉 〓无限收交友粉 引流软件 qq7305830日吃8000+收一手零转化微信小群粉高价收购【全部行业精准粉】进群!
█    高 收 益 项 目   █实力收精准粉大量稳定加Q525253〓  抖音 快手 火山  〓无限收交友粉 引流软件 qq7305830日吃8000+收一手零转化微信小群粉高价收购【全部行业精准粉】进群!
█     耗资巨大    █实力收精准粉大量稳定加Q525253〓   附 近 人    〓无限收交友粉 引流软件 qq7305830日吃8000+收一手零转化微信小群粉高价收购【全部行业精准粉】进群!
█     市场最牛    █★★★出售抖音网赚精准粉 Q317738〓 各论坛美拍部落 〓无限收交友粉 引流软件 qq7305830日吃8000+收一手零转化微信小群粉高价收购【全部行业精准粉】进群!
█   支 持     日 结  █★★★出售抖音网赚精准粉 Q317738〓各种活人粉实力对接〓无限收交友粉 引流软件 qq7305830高价收购【全部行业精准粉】进群!高价收购【全部行业精准粉】进群!
█  咨询QQ   880194  █★█实力收精准粉QQ825270505█★〓大小量通吃欢迎来撩〓无限收交友粉 引流软件 qq7305830高价收购【全部行业精准粉】进群!高价收购【全部行业精准粉】进群!
█公司实力寻引流高手商务合作██收精准引流粉,微信公众号粉█〓 稳定全年365天收 〓无限收交友粉 引流软件 qq7305830高价收购【全部行业精准粉】进群!高价收购【全部行业精准粉】进群!
█公司实力寻引流高手商务合作██收精准引流粉,微信公众号粉█〓 无限 收交友粉 〓收男女粉+q53779879高价收购【全部行业精准粉】进群!高价收购【全部行业精准粉】进群!
█公司实力寻引流高手商务合作██收精准引流粉,微信公众号粉█┗┗ 全网最高单价收粉 ┛┛收男女粉+q53779879高价收购【全部行业精准粉】进群!高价收购【全部行业精准粉】进群!
█公司实力寻引流高手商务合作█★█实力收精准粉QQ825270505█★◆大量收婚恋宝妈快手火山◆收收收大量宝妈粉QQ289259高价收购【全部行业精准粉】进群!高价收购【全部行业精准粉】进群!
█公司实力寻引流高手商务合作█【实力公司无限收各种思路引流活粉】◇稳定收交友粉,找我换钱◇收收收.微信扫码进群.加QQ9703796高价收购【全部行业精准粉】进群!高价收购【全部行业精准粉】进群!
█ 公司 高价 收 引流 软件 渠道 █↑↑↑↑↑↑↑↑↑加QQ:575199999◆收快手火山虎牙找我换钱◆鼎信社群高价收WZ各类热门资源高价收购【全部行业精准粉】进群!高价收购【全部行业精准粉】进群!
█ 公司 高价 收 引流 软件 渠道 ███ 实力公司 长期有效 ██◇长期收交友粉大小量通吃◇鼎信社万人对接基地高效出粉收粉高价收购【全部行业精准粉】进群!高价收购【全部行业精准粉】进群!
█ 公司 高价 收 引流 软件 渠道 ███ 收收收收 引流软件 ██◆ 婚恋/抖音/空间/快手 ◆███ 鼎信社群 行业顶尖 ███高价收购【全部行业精准粉】进群!高价收购【全部行业精准粉】进群!
█ 公司 高价 收 引流 软件 渠道 ███ 收收收收 引流脚本 ██◇ 优质有量的找我换钱 ◇鼎信社群欢迎各类 商人对接入驻高价收购【全部行业精准粉】进群!高价收购【全部行业精准粉】进群!
█ 公司 高价 收 引流 软件 渠道 ███ 收收收收 引流思路 ██◆ 实力大型公司收媒体量 ◆鼎信社欢迎各类粉商精英对接交流高价收购【全部行业精准粉】进群!高价收购【全部行业精准粉】进群!
全网最高单价收粉QQ420073██ 收收收收 精准wz粉██◇ 大量资金 ,来一收代理 ◇█★█长期收购网赚精准粉█★█高价收购【全部行业精准粉】进群!高价收购【全部行业精准粉】进群!
实力收购各种粉加QQ420073██ 收收收收 精 准 粉 ██◆ 无限收交友粉交友粉 ◆█★█长期收购网赚精准粉█★█高价收购【全部行业精准粉】进群!高价收购【全部行业精准粉】进群!
收购精准兼职粉加QQ420073██ 收收收收 引流人才 ██◇ 各种活人粉实力对接 ◇高价收qq渠道,交友粉+q7042641高价收购【全部行业精准粉】进群!高价收购【全部行业精准粉】进群!
收购精准网赚粉加QQ420073██ 收收收收 引流方式 ██全网大量收各种APP交友粉,高价收qq渠道,交友粉+q7042641高价收购【全部行业精准粉】进群!高价收购【全部行业精准粉】进群!
收购软件渠道思路QQ420073██ 加qq群:839661627 ██包养全网交友粉大户█收交友粉 价格美丽 只走担保█高价收购【全部行业精准粉】进群!高价收购【全部行业精准粉】进群!
大量收微信进群粉联系q584121900██进群找管理 备注引流██全网大量收各种APP交友粉,█收交友粉 价格美丽 只走担保█高价收购【全部行业精准粉】进群!高价收购【全部行业精准粉】进群!
出微信qq交友粉网赚粉精准粉兼职长期出QQ群QQ号微信精准粉网挣粉包养全网交友粉大户█收交友粉 价格美丽 只走担保█高价收购【全部行业精准粉】进群!高价收购【全部行业精准粉】进群!
大量出各类精准用户粉,全行业私信出QQ群微信QQ号交友粉网赚粉兼职粉全网大量收各种APP交友粉,█收交友粉 价格美丽 只走担保█高价收购【全部行业精准粉】进群!高价收购【全部行业精准粉】进群!
限时限量出售高精准网赚粉★工作室长期出抖音WZ粉Q159907包养全网交友粉大户大量出QQ网赚粉微信粉Q群精准活粉高价收购【全部行业精准粉】进群!高价收购【全部行业精准粉】进群!
高价收网吧终端量联系Q1908886662█网站统计█I引流系统█I全网大量收各种APP交友粉,大量出wz粉质量好单价低QQ222561高价收购【全部行业精准粉】进群!高价收购【全部行业精准粉】进群!
Q群粉及交友一手资源Q:492544224940人的精准小群 /一手截图报表包养全网交友粉大户██████出精准网赚粉兼职粉高价收购【全部行业精准粉】进群!高价收购【全部行业精准粉】进群!
高价收微信进群活跃男粉Q858529686公司高价收购流量全网大量收各种APP交友粉,服务器出租E3-E5-单进程高价收购【全部行业精准粉】进群!高价收购【全部行业精准粉】进群!
软件开发商实力出QQ网赚粉兼职粉出游戏粉 游戏粉加Q245014016包养全网交友粉大户出Q群微信直播粉联系Q2604720501高价收购【全部行业精准粉】进群!我要租广告位
查看: 613|回复: 2
收起左侧

[分析交流] 钉钉CTF瞎分析一波~

[复制链接]

签到天数:14 天

结帖率:100% (3/3)
发表于 2018-10-12 20:48:51 | 显示全部楼层 |阅读模式
本帖最后由 Breathless 于 2018-10-12 20:50 编辑

一、说明
钉钉CTF是一个网友昨晚给我的,比较简单,但是思路和AliCTF非常像,所以就放在一起了,一些坛友问工具怎么使用
其实很简单,在这也稍微加下使用说明,自己技术比较菜,全程靠猜~~~~~有什么不对的地方,还请各位师傅指点.

二、钉钉CTF
这一题比较简单,先打开app看下

随便输入

错了,但是有个welcome to flag blank!根据题目意思,尝试什么都不输入

什么??????居然就对了!!!!!
好了,开始看Ali的吧...............

算啦算啦,还是看看内部怎么实现的这么牛逼的功能的吧
  1. protected void onCreate(Bundle arg3) {
  2.         super.onCreate(arg3);
  3.         this.setContentView(2130968603);
  4.         this.text = this.findViewById(2131427416);
  5.         this.textView1 = this.findViewById(2131427418);
  6.         this.button = this.findViewById(2131427415);
  7.         this.button.setOnClickListener(new View$OnClickListener() {
  8.             public void onClick(View arg4) {
  9.                 MainActivity.this.c = new CheckClass();
  10.                 MainActivity.this.c.a(MainActivity.this.text.getText().toString());  //先获取输入的字符串
  11.                 if(MainActivity.this.c.check()) {  //关键点
  12.                     MainActivity.this.textView1.setText("flag is XMAN{" + MainActivity.this.text.getText().toString() + "}");   
  13.                 }
  14.                 else {
  15.                     MainActivity.this.textView1.setText("WORING!");
  16.                 }
  17.             }
  18.         });
  19.     }
复制代码

onCreate方法中,先看MainActivity.this.c.a
  1. public void a(String arg5) {
  2.         int v1 = 30;
  3.         this.A = new byte[v1];
  4.         this.B = arg5.getBytes();
  5.         int v0;
  6.         for(v0 = 0; v0 < arg5.length(); ++v0) {
  7.             this.A[v0] = this.B[v0];
  8.         }

  9.         this.B = new byte[v1];
  10.     }
复制代码

获取输入的字符串,再看MainActivity.this.c.check()
  1. public boolean check() {
  2.         boolean v9 = false;
  3.         int[] v0 = new int[]{40, 42, 65, 67, 68, 2, 64, 70, 96, 98, 181, 7, 10, 64, 23, 17, 37, 20, 45, 91, 74, 72, 135, 33, 57, 43, 87, 99, 147, 53};
  4.         byte[] v5 = new byte[]{52, 111, 102, 113, 52, 52, 98};
  5.         int v2 = 0;
  6.         int v4 = 0;
  7.         int v7 = 0;
  8.         int v1;
  9.         for(v1 = 0; v1 < v0.length; ++v1) {
  10.             int v8 = this.b(v0[v1]);
  11.             new String();
  12.             Log.d("now array:", String.valueOf(v8));
  13.             switch(v8) {
  14.                 case 0: {
  15.                     this.A[v7] = ((byte)(this.A[v7] ^ v7));
  16.                     break;
  17.                 }
  18.                 case 1: {
  19.                     if(this.A[v4] != 0) {
  20.                         ++v4;
  21.                     }
  22.                     else {
  23.                     }

  24.                     break;
  25.                 }
  26.                 case 2: {
  27.                     v5[v4] = ((byte)(v5[v4] ^ v4));
  28.                     ++v4;
  29.                     break;
  30.                 }
  31.                 case 3: {
  32.                     if(v5[v7] == this.A[v7]) {
  33.                         ++v7;
  34.                     }
  35.                     else {
  36.                     }

  37.                     break;
  38.                 }
  39.                 case 4: {
  40.                     if(v7 == v4) {
  41.                         v9 = true;
  42.                     }

  43.                     return v9;
  44.                 }
  45.                 case 5: {
  46.                     if(v4 != v5.length) {
  47.                         v1 = v0.length - 3;
  48.                     }
  49.                     else {
  50.                         v4 = 0;
  51.                     }

  52.                     break;
  53.                 }
  54.                 default: {
  55.                     ++v2;
  56.                     break;
  57.                 }
  58.             }
  59.         }

  60.         return v9;
  61.     }

  62. public int b(int arg4) {
  63.         int v0 = 181 & arg4;
  64.         return (v0 & 1) + ((v0 & 4) >> 2) + ((v0 & 16) >> 4) + ((v0 & 32) >> 5) + ((v0 & 128) >> 7);
  65.   }
复制代码

此函数为关键点,看着挺复杂的,只要返回为true即可
  1. case 4: {
  2.                     if(v7 == v4) {
  3.                         v9 = true;
  4.                     }
  5.                     return v9;
  6.                 }
复制代码

case 4里的判断执行,下面再接着分析v8 [mw_shl_code=java,true]int v8 = this.b(v0[v1]); [/mw_shl_code]
由于v0是固定的,所以v8也是固定的,那么switch语句就好分析了
  1. import java.security.InvalidKeyException;
  2. import java.security.NoSuchAlgorithmException;

  3. public class DCtf {
  4.          private static byte[] A;
  5.          private static byte[] B;
  6.         public static void main(String[] args) throws InvalidKeyException, NoSuchAlgorithmException {
  7.                 a("4");
  8.                 check();
  9.           }        
  10.         
  11.         public static void a(String arg5) {
  12.         int v1 = 30;
  13.         A = new byte[v1];
  14.         B = arg5.getBytes();
  15.         int v0;
  16.         for(v0 = 0; v0 < arg5.length(); ++v0) {
  17.             A[v0] = B[v0];
  18.         }

  19.         B = new byte[v1];
  20.     }

  21.     public static int b(int arg4) {
  22.         int v0 = 181 & arg4;
  23.         return (v0 & 1) + ((v0 & 4) >> 2) + ((v0 & 16) >> 4) + ((v0 & 32) >> 5) + ((v0 & 128) >> 7);
  24.     }

  25.     public static boolean check() {
  26.         boolean v9 = false;
  27.         int[] v0 = new int[]{40, 42, 65, 67, 68, 2, 64, 70, 96, 98, 181, 7, 10, 64, 23, 17, 37, 20, 45, 91, 74, 72, 135, 33, 57, 43, 87, 99, 147, 53};
  28.         byte[] v5 = new byte[]{52, 111, 102, 113, 52, 52, 98};
  29.         int v2 = 0;
  30.         int v4 = 0;
  31.         int v7 = 0;
  32.         int v1;
  33.         for(v1 = 0; v1 < v0.length; ++v1) {
  34.             int v8 = b(v0[v1]);
  35.             new String();
  36.             System.out.println("now array:" + String.valueOf(v8));
  37.             switch(v8) {
  38.                 case 0: {
  39.                     A[v7] = ((byte)(A[v7] ^ v7));
  40.                     break;
  41.                 }
  42.                 case 1: {
  43.                     if(A[v4] != 0) {
  44.                         ++v4;
  45.                     }
  46.                     else {
  47.                     }
  48.                     break;
  49.                 }
  50.                 case 2: {
  51.                     v5[v4] = ((byte)(v5[v4] ^ v4));
  52.                     ++v4;
  53.                     break;
  54.                 }
  55.                 case 3: {
  56.                     if(v5[v7] == A[v7]) {
  57.                             System.out.println("v5[v7] "+v5[v7]+"------A[v7] "+A[v7]+" "+v7);
  58.                         ++v7;
  59.                     }
  60.                     else {
  61.                     }
  62.                     break;
  63.                 }
  64.                 case 4: {
  65.                     if(v7 == v4) {
  66.                         v9 = true;
  67.                     }
  68.                     System.out.println("v7 "+v7+"------v4 "+v4);

  69.                     return v9;
  70.                 }
  71.                 case 5: {
  72.                     if(v4 != v5.length) {
  73.                         v1 = v0.length - 3;
  74.                     }
  75.                     else {
  76.                         v4 = 0;
  77.                     }

  78.                     break;
  79.                 }
  80.                 default: {
  81.                     ++v2;
  82.                     break;
  83.                 }
  84.                
  85.             }
  86.         }

  87.         return v9;
  88.     }
  89. }
复制代码

运行上面的代码,可以得到v8的值分别是
  1. now array:1
  2. now array:1
  3. now array:1
  4. now array:1
  5. now array:1
  6. now array:0
  7. now array:0
  8. now array:1
  9. now array:1
  10. now array:1
  11. now array:5
  12. now array:3
  13. now array:4
复制代码

最后执行的就是case 4,符合我们前面的分析,但是v7 == v4,能影响v7的只有case 3这个分支,看上面v8的值,知道下面的代码只执行了一次
  1. case 3: {
  2.                     if(v5[v7] == this.A[v7]) {
  3.                         ++v7;
  4.                     }
  5.                     else {
  6.                     }
  7.                     break;
  8.                 }
复制代码

所以要想v7 == v4,v7和v4只能为1或者0,0就是什么都不输入,++v7执行之后为1,执行之前v7为就为0,所以A[v7]=52,查找ascall码表结果为4

分析到这,你就认为完了?然后并没有结束、、、、
  1. case 5: {
  2.                                 if (v4 != v5.length) {
  3.                                         v1 = v0.length - 3;
  4.                                 } else {
  5.                                         v4 = 0;
  6.                                 }

  7.                                 break;
  8.                         }
复制代码

上面的分析的是v4 != v5.length结果,如果v4 = v5.length呢,继续往下分析吧,也就是输入的字符串为7位
  1. now array:1
  2. now array:1
  3. now array:1
  4. now array:1
  5. now array:1
  6. now array:0
  7. now array:0
  8. now array:1
  9. now array:1
  10. now array:1
  11. now array:5
  12. now array:2
  13. now array:0
  14. now array:0
  15. now array:3
  16. v5[v7] 52------A[v7] 52 v7 0
  17. now array:2
  18. now array:3
  19. now array:2
  20. now array:3
  21. now array:2
  22. now array:0
  23. now array:0
  24. now array:3
  25. now array:2
  26. now array:3
  27. now array:2
  28. now array:3
  29. now array:2
  30. now array:3
  31. now array:4
  32. v7 1------v4 7
复制代码

控制v7的的case只有一个
  1. case 3: {
  2.                                 if (v5[v7] == A[v7]) {
  3.                                         System.out.println("v5[v7] " + v5[v7] + "------A[v7] " + A[v7] + " v7 " + v7);
  4.                                         ++v7;
  5.                                 } else {
  6.                                 }
  7.                                 break;
  8.                         }
复制代码

根据上面的代码循环,可以慢慢倒推出来结果为4ndr01d,真是一波三折呀。。。

放下分析的代码
  1. import java.security.InvalidKeyException;
  2. import java.security.NoSuchAlgorithmException;

  3. public class ctf1 {
  4.         private static byte[] A;
  5.         private static byte[] B;

  6.         public static void main(String[] args) throws InvalidKeyException, NoSuchAlgorithmException {
  7.                 a("4ndr01d");
  8.                 check();
  9.         }

  10.         public static void a(String arg5) {
  11.                 int v1 = 30;
  12.                 A = new byte[v1];
  13.                 B = arg5.getBytes();
  14.                 int v0;
  15.                 for (v0 = 0; v0 < arg5.length(); ++v0) {
  16.                         A[v0] = B[v0];
  17.                 }

  18.                 B = new byte[v1];
  19.         }

  20.         public static int b(int arg4) {
  21.                 int v0 = 181 & arg4;
  22.                 return (v0 & 1) + ((v0 & 4) >> 2) + ((v0 & 16) >> 4) + ((v0 & 32) >> 5) + ((v0 & 128) >> 7);
  23.         }

  24.         public static boolean check() {
  25.                 boolean v9 = false;
  26.                 int[] v0 = new int[] { 40, 42, 65, 67, 68, 2, 64, 70, 96, 98, 181, 7, 10, 64, 23, 17, 37, 20, 45, 91, 74, 72,
  27.                                 135, 33, 57, 43, 87, 99, 147, 53 };
  28.                 byte[] v5 = new byte[] { 52, 111, 102, 113, 52, 52, 98 };
  29.                 int v2 = 0;
  30.                 int v4 = 0;
  31.                 int v7 = 0;
  32.                 int v1;
  33.                 for (v1 = 0; v1 < v0.length; ++v1) {
  34.                         int v8 = b(v0[v1]);
  35.                         new String();
  36.                         System.out.println("now array:" + String.valueOf(v8));
  37.                         switch (v8) {
  38.                         case 0: {
  39.                                 A[v7] = ((byte) (A[v7] ^ v7));
  40.                                 break;
  41.                         }
  42.                         case 1: {
  43.                                 if (A[v4] != 0) {
  44.                                         ++v4;
  45.                                 } else {
  46.                                 }
  47.                                 break;
  48.                         }
  49.                         case 2: {
  50.                                 v5[v4] = ((byte) (v5[v4] ^ v4));
  51.                                 ++v4;
  52.                                 break;
  53.                         }
  54.                         case 3: {
  55.                                 if (v5[v7] == A[v7]) {
  56.                                         System.out.println("v5[v7] " + v5[v7] + "------A[v7] " + A[v7] + " v7 " + v7);
  57.                                         ++v7;
  58.                                 } else {
  59.                                 }
  60.                                 break;
  61.                         }
  62.                         case 4: {
  63.                                 if (v7 == v4) {
  64.                                         v9 = true;
  65.                                 }
  66.                                 System.out.println("v7 " + v7 + "------v4 " + v4);
  67.                                 return v9;
  68.                         }
  69.                         case 5: {
  70.                                 if (v4 != v5.length) {
  71.                                         v1 = v0.length - 3;
  72.                                 } else {
  73.                                         v4 = 0;
  74.                                 }

  75.                                 break;
  76.                         }
  77.                         default: {
  78.                                 ++v2;
  79.                                 break;
  80.                         }

  81.                         }
  82.                 }

  83.                 return v9;
  84.         }
  85. }
复制代码


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

评分

参与人数 1好评 +1 精币 +2 收起 理由
aib + 1 + 2 新技能已get√

查看全部评分

您可以选择打赏方式支持楼主

签到天数: 6 天

结帖率:89% (16/18)
发表于 2018-10-12 22:57:23 | 显示全部楼层
感谢分享
回复

使用道具 举报

签到天数: 16 天

结帖率:100% (6/6)
发表于 2018-10-12 20:55:26 | 显示全部楼层
没看懂的举个爪子表示我们存在过。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表 按钮

sitemap|易语言源码|易语言教程|易语言论坛|诚聘英才|易语言模块|手机版|联系我们|精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
揭阳精易科技有限公司申明:我公司所有的培训课程版权归精易所有,任何人以任何方式翻录、盗版、破解本站培训课程,我们必将通过法律途径解决!
公司简介:揭阳市揭东区精易科技有限公司致力于易语言教学培训/易语言学习交流社区的建设与软件开发,多年来为中小企业编写过许许多多各式软件,并把多年积累的开发经验逐步录制成视频课程供学员学习,让学员全面系统化学习易语言编程,少走弯路,减少对相关技术的研究与摸索时间,从而加快了学习进度!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 800073686,邮箱:800073686@b.qq.com
Powered by Discuz! X3.2 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125

快速回复 返回顶部 返回列表