吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1623|回复: 7
收起左侧

[CrackMe] 第4次做CrackMe,C++ QT,有一些点反调试,推测难度中等 比较复杂

[复制链接]
2370177068 发表于 2023-12-20 23:11
CM是什么?Crackme是什么?这是什么东西?楼主发的什么?
他们都是一些公开给别人尝试破解的小程序,制作 Crackme 的人可能是程序员,想测试一下自己的软件保护技术,也可能是一位 Cracker,想挑战一下其它 Cracker 的破解实力,也可能是一些正在学习破解的人,自己编一些小程序给自己破解,KeyGenMe是要求别人做出它的 keygen (序号产生器), ReverseMe 要求别人把它的算法做出逆向分析, UnpackMe 是要求别人把它成功脱壳,本版块禁止回复非技术无关水贴。

本帖最后由 2370177068 于 2023-12-23 00:52 编辑

新人一枚,请大佬指点!
1、编写语言:C++ QT 6.5.3 LTS
2、联网行为:有
3、是否加壳:UPX 4.2.1(默认配置)
4、是否为单文件:否
5、编译器:MSVC2019 64bit Release
6、错误提示:左下角文字信息
7、可能出现的情况:
    a) while true sleep.
    b) 杀调试进程.
    c) 状态显示异常.
8、其他信息:
    a) 解压后总大小:86.3 MB(主程序不到100KB)
    b) 进入欢迎使用界面显示正常即为成功


V1 下载地址:
https://lxgz.lanzouy.com/iAE7O1ijdkkh


V2 下载地址:

https://lxgz.lanzouy.com/iNEVD1ik163a

更新说明:新增处理逻辑


V2 无壳版本 下载地址:

https://lxgz.lanzouy.com/ieiWw1ino9ja






本帖子中包含更多资源

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

x

免费评分

参与人数 2吾爱币 +2 热心值 +2 收起 理由
theRavensea + 1 + 1 热心回复!
lingyun011 + 1 + 1 热心回复!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

冥界3大法王 发表于 2023-12-24 10:27
大致代码的实现在这里: 试了几次终于断下,发现线索:
[Asm] 纯文本查看 复制代码
140003e70  {
140003e87      arg_10 = 0;
140003e91      int64_t rax = _Query_perf_frequency();
140003e99      int64_t rax_1 = _Query_perf_counter();
140003ea5      int64_t rcx;
140003ea5      if (rax != 0x989680)
140003e9e      {
140003ead          int64_t rax_2;
140003ead          int64_t rdx_1;
140003ead          rdx_1 = HIGHQ(((int128_t)rax_1));
140003ead          rax_2 = LOWQ(((int128_t)rax_1));
140003ec0          int64_t rax_5;
140003ec0          int64_t rdx_3;
140003ec0          rdx_3 = HIGHQ(((int128_t)((COMBINE(rdx_1, rax_2) % rax) * 0x3b9aca00)));
140003ec0          rax_5 = LOWQ(((int128_t)((COMBINE(rdx_1, rax_2) % rax) * 0x3b9aca00)));
140003ec5          rcx = (((COMBINE(rdx_1, rax_2) / rax) * 0x3b9aca00) + (COMBINE(rdx_3, rax_5) / rax));
140003ec2      }
140003ea7      else
140003ea7      {
140003ea7          rcx = (rax_1 * 0x64);
140003ea7      }
140003ec8      arg_18 = rcx;
140003ed9      QWidget::setEnabled(*(uint64_t*)(*(uint64_t*)((char*)arg1 + 0x28) + 0x38), false);
140003eee      QPlainTextEdit::toPlainText(*(uint64_t*)(*(uint64_t*)((char*)arg1 + 0x28) + 0x30));
🛑140003f21      QString var_1f0;
140003f21      void var_488;
140003f21      void var_470;
140003f21      void var_370;
140003f21      QByteArray var_358;
140003f21      void var_340;
140003f21      if (QString::indexOf(&var_1f0, ((uint64_t)*(uint16_t*)QChar::QChar(&arg_8, 0x7c)), 0, 1) == -1)
140003f1d      {
140003f37          sub_140003c90(arg1, &arg_18, 0x3e8);
140003f40          QStatusBar* rsi_1 = *(uint64_t*)(*(uint64_t*)((char*)arg1 + 0x28) + 0x40);
140003f76          QString* rax_14 = Concurrency::details::QuickBitSet::operator=(&var_370, sub_140006d70(&var_358, QByteArray::fromRawData(&var_340, &data_14000cbb0)));
140003fa5          int32_t var_4b8;
140003fa5          var_4b8 = *(uint16_t*)QChar::QChar(&arg_8, 0x20);
140003fcb          QStatusBar::showMessage(rsi_1, QString::arg(rax_14, &var_488, QString::number(&var_470, 0), 0), 0xbb8);
140003fd7          QString::~QString(&var_488);
140003fe3          QString::~QString(&var_470);
140003fee          QString::~QString(&var_370);
140003ffc          QByteArray::~QByteArray(&var_358);
14000400a          QByteArray::~QByteArray(&var_340);
140004003      }
140004021      else
140004021      {
140004021          QString::QString(&var_488, &data_14000d758);
140004028          int32_t var_4b8_1 = 1;
140004043          int32_t* var_448;
140004043          QString::split(&var_1f0, &var_448, &var_488, 0);
14000404f          QString::~QString(&var_488);
🛑14000405a          int64_t var_438;
14000405a          void* rcx_34;
14000405a          void var_1d8;
14000405a          if (var_438 != 2)
140004055          {
140004070              sub_140003c90(arg1, &arg_18, 0x3e8);
140004079              QStatusBar* rsi_2 = *(uint64_t*)(*(uint64_t*)((char*)arg1 + 0x28) + 0x40);
1400040ad              QString* rax_21 = Concurrency::details::QuickBitSet::operator=(&var_370, sub_140006d70(&var_470, QByteArray::fromRawData(&var_1d8, &data_14000cbb0)));
1400040e1              var_4b8_1 = *(uint16_t*)QChar::QChar(&arg_8, 0x20);
140004109              QStatusBar::showMessage(rsi_2, QString::arg(rax_21, &var_340, QString::number(&var_358, 1), 0), 0xbb8);
140004117              QString::~QString(&var_340);
140004125              QString::~QString(&var_358);
140004130              QString::~QString(&var_370);
14000413c              QByteArray::~QByteArray(&var_470);
140004143              rcx_34 = &var_1d8;
140004143          }
14000414f          else
14000414f          {
14000414f              int32_t* rax_25 = var_448;
14000415d              if ((rax_25 == 0 || (rax_25 != 0 && *(uint32_t*)rax_25 > 1)))
14000415a              {
14000416b                  sub_140005530(&var_448, 0, 0, nullptr);
14000415f              }
140004192              QString* var_440;
140004192              QByteArray var_208;
140004192              QByteArray::fromBase64(&var_208, QString::toUtf8(var_440));
1400041a0              QByteArray::~QByteArray(&var_1d8);
1400041a6              int32_t* rax_28 = var_448;
1400041b4              if ((rax_28 == 0 || (rax_28 != 0 && *(uint32_t*)rax_28 > 1)))
1400041b1              {
1400041c2                  sub_140005530(&var_448, 0, 0, nullptr);
1400041b6              }
1400041d6              QString var_100;
1400041d6              QString::QString(&var_100, ((char*)var_440 + 0x18));
140004218              char rax_33 = sub_140006ee0(&var_208, &var_100, Concurrency::details::QuickBitSet::operator=(&var_340, sub_140006d70(&var_358, sub_1400069a0(&var_370))));
140004227              QString::~QString(&var_340);
140004235              QByteArray::~QByteArray(&var_358);
140004240              QByteArray::~QByteArray(&var_370);
🛑140004248              QByteArray* rcx_60;
140004248              void var_328;
140004248              QByteArray var_310;
140004248              QByteArray var_2f8;
140004248              if (rax_33 == 0)
140004246              {
14000425e                  sub_140003c90(arg1, &arg_18, 0x3e8);
140004267                  QStatusBar* rsi_3 = *(uint64_t*)(*(uint64_t*)((char*)arg1 + 0x28) + 0x40);
1400042a0                  QString* rax_37 = Concurrency::details::QuickBitSet::operator=(&var_328, sub_140006d70(&var_310, QByteArray::fromRawData(&var_2f8, &data_14000cbb0)));
1400042d2                  var_4b8_1 = *(uint16_t*)QChar::QChar(&arg_8, 0x20);
1400042f8                  QStatusBar::showMessage(rsi_3, QString::arg(rax_37, &var_470, QString::number(&var_488, 2), 0), 0xbb8);
140004304                  QString::~QString(&var_470);
140004310                  QString::~QString(&var_488);
14000431e                  QString::~QString(&var_328);
14000432c                  QByteArray::~QByteArray(&var_310);
140004333                  rcx_60 = &var_2f8;
140004333              }
14000434d              else
14000434d              {
14000434d                  QByteArray var_e8;
14000434d                  sub_140006d70(&var_e8, &var_208);
140004362                  class QByteArray var_490;
140004362                  QJsonDocument::fromJson(&var_490, &var_e8);
140004376                  if (QJsonDocument::isObject(&var_490) == 0)
140004374                  {
14000438c                      sub_140003c90(arg1, &arg_18, 0x3e8);
140004395                      QStatusBar* rsi_4 = *(uint64_t*)(*(uint64_t*)((char*)arg1 + 0x28) + 0x40);
1400043ca                      QString* rax_45 = Concurrency::details::QuickBitSet::operator=(&var_328, sub_140006d70(&var_470, QByteArray::fromRawData(&var_488, &data_14000cbb0)));
1400043fe                      var_4b8_1 = *(uint16_t*)QChar::QChar(&arg_8, 0x20);
140004426                      QStatusBar::showMessage(rsi_4, QString::arg(rax_45, &var_2f8, QString::number(&var_310, 3), 0), 0xbb8);
140004434                      QString::~QString(&var_2f8);
140004442                      QString::~QString(&var_310);
140004450                      QString::~QString(&var_328);
14000445c                      QByteArray::~QByteArray(&var_470);
140004468                      QByteArray::~QByteArray(&var_488);
140004463                  }
14000447f                  else
14000447f                  {
14000447f                      QJsonDocument::object(&var_490);
1400044a1                      arg_10 = 1;
1400044bb                      arg_10 = 3;
1400044d5                      int32_t rbx_6 = 7;
1400044da                      arg_10 = 7;
1400044f2                      void var_d0;
1400044f2                      void var_b8;
1400044f2                      void var_a0;
1400044f2                      void var_88;
1400044f2                      void var_70;
1400044f2                      void var_58;
1400044f2                      void var_40;
1400044f2                      int64_t rsi;
1400044f2                      if (QJsonObject::contains(&arg_20, Concurrency::details::QuickBitSet::operator=(&var_40, sub_140006d70(&var_70, QByteArray::fromRawData(&var_58, &data_14000cb00)))) == 0)
1400044f0                      {
140004643                      label_140004643:
140004643                          rsi = 1;
140004643                      }
140004511                      else
140004511                      {
140004511                          arg_10 = 0xf;
14000452b                          arg_10 = 0x1f;
140004545                          rbx_6 = 0x3f;
14000454a                          arg_10 = 0x3f;
140004562                          if (QJsonObject::contains(&arg_20, Concurrency::details::QuickBitSet::operator=(&var_a0, sub_140006d70(&var_b8, QByteArray::fromRawData(&var_d0, &data_14000cb28)))) == 0)
140004560                          {
140004562                              goto label_140004643;
140004562                          }
140004581                          arg_10 = 0x7f;
140004599                          arg_10 = 0xff;
1400045b1                          rbx_6 = 0x1ff;
1400045b6                          arg_10 = 0x1ff;
1400045ce                          if (QJsonObject::contains(&arg_20, Concurrency::details::QuickBitSet::operator=(&var_470, sub_140006d70(&var_488, QByteArray::fromRawData(&var_88, &data_14000cb60)))) == 0)
1400045cc                          {
1400045ce                              goto label_140004643;
1400045ce                          }
1400045eb                          arg_10 = 0x3ff;
140004605                          arg_10 = 0x7ff;
14000461f                          rbx_6 = 0xfff;
140004624                          arg_10 = 0xfff;
14000463c                          if (QJsonObject::contains(&arg_20, Concurrency::details::QuickBitSet::operator=(&var_2f8, sub_140006d70(&var_310, QByteArray::fromRawData(&var_328, &data_14000cb80)))) == 0)
14000463a                          {
14000463c                              goto label_140004643;
14000463c                          }
14000463e                          rsi = 0;
14000463e                      }
14000464a                      if ((TEST_BITD(rbx_6, 0xb)))
140004646                      {
14000464c                          rbx_6 = (rbx_6 & 0xfffff7ff);
140004657                          QString::~QString(&var_2f8);
140004650                      }
140004662                      if ((TEST_BITD(rbx_6, 0xa)))
14000465e                      {
140004664                          rbx_6 = (rbx_6 & 0xfffffbff);
14000466f                          QByteArray::~QByteArray(&var_310);
140004668                      }
14000467a                      if ((TEST_BITD(rbx_6, 9)))
140004676                      {
14000467c                          rbx_6 = (rbx_6 & 0xfffffdff);
140004687                          QByteArray::~QByteArray(&var_328);
140004680                      }
140004692                      if ((TEST_BITD(rbx_6, 8)))
14000468e                      {
140004694                          rbx_6 = (rbx_6 & 0xfffffeff);
14000469d                          QString::~QString(&var_470);
140004698                      }
1400046a6                      if (rbx_6 < 0)
1400046a4                      {
1400046a8                          rbx_6 = (rbx_6 & 0xffffff7f);
1400046b1                          QByteArray::~QByteArray(&var_488);
1400046ac                      }
1400046bb                      if ((rbx_6 & 0x40) != 0)
1400046b8                      {
1400046bd                          rbx_6 = (rbx_6 & 0xffffffbf);
1400046c7                          QByteArray::~QByteArray(&var_88);
1400046c0                      }
1400046d1                      if ((rbx_6 & 0x20) != 0)
1400046ce                      {
1400046d3                          rbx_6 = (rbx_6 & 0xffffffdf);
1400046dd                          QString::~QString(&var_a0);
1400046d6                      }
1400046e7                      if ((rbx_6 & 0x10) != 0)
1400046e4                      {
1400046e9                          rbx_6 = (rbx_6 & 0xffffffef);
1400046f3                          QByteArray::~QByteArray(&var_b8);
1400046ec                      }
1400046fd                      if ((rbx_6 & 8) != 0)
1400046fa                      {
1400046ff                          rbx_6 = (rbx_6 & 0xfffffff7);
140004709                          QByteArray::~QByteArray(&var_d0);
140004702                      }
140004713                      if ((rbx_6 & 4) != 0)
140004710                      {
140004715                          rbx_6 = (rbx_6 & 0xfffffffb);
14000471f                          QString::~QString(&var_40);
140004718                      }
140004729                      if ((rbx_6 & 2) != 0)
140004726                      {
14000472b                          rbx_6 = (rbx_6 & 0xfffffffd);
140004735                          QByteArray::~QByteArray(&var_70);
14000472e                      }
14000473f                      if ((rbx_6 & 1) != 0)
14000473c                      {
140004748                          QByteArray::~QByteArray(&var_58);
140004741                      }
140004751                      void var_4a8;
140004751                      void var_1a8;
140004751                      void var_160;
140004751                      void var_148;
140004751                      void var_130;
140004751                      if (rsi != 0)
14000474e                      {
140004767                          sub_140003c90(arg1, &arg_18, 0x3e8);
140004770                          QStatusBar* rsi_5 = *(uint64_t*)(*(uint64_t*)((char*)arg1 + 0x28) + 0x40);
1400047a9                          QString* rax_68 = Concurrency::details::QuickBitSet::operator=(&var_148, sub_140006d70(&var_1a8, QByteArray::fromRawData(&var_130, &data_14000cbb0)));
1400047dd                          var_4b8_1 = *(uint16_t*)QChar::QChar(&arg_8, 0x20);
140004803                          QStatusBar::showMessage(rsi_5, QString::arg(rax_68, &var_4a8, QString::number(&var_160, 4), 0), 0xbb8);
14000480f                          QString::~QString(&var_4a8);
14000481d                          QString::~QString(&var_160);
14000482b                          QString::~QString(&var_148);
140004839                          QByteArray::~QByteArray(&var_1a8);
140004847                          QByteArray::~QByteArray(&var_130);
140004840                      }
140004887                      else
140004887                      {
140004887                          Concurrency::details::QuickBitSet::operator=(&var_1a8, sub_140006d70(&var_148, QByteArray::fromRawData(&var_160, &data_14000cb00)));
1400048aa                          int32_t rax_75 = QJsonValue::toInt(QJsonObject::value(&arg_20, &var_130), 0);
1400048b9                          QJsonValue::~QJsonValue(&var_130);
1400048c7                          QString::~QString(&var_1a8);
1400048d5                          QByteArray::~QByteArray(&var_148);
1400048e3                          QByteArray::~QByteArray(&var_160);
1400048eb                          void var_3d0;
1400048eb                          void var_3b8;
1400048eb                          void var_3a0;
1400048eb                          void var_388;
1400048eb                          if (rax_75 <= 0)
1400048e9                          {
140004901                              sub_140003c90(arg1, &arg_18, 0x3e8);
14000490a                              QStatusBar* rsi_7 = *(uint64_t*)(*(uint64_t*)((char*)arg1 + 0x28) + 0x40);
14000493a                              QString* rax_79 = Concurrency::details::QuickBitSet::operator=(&var_3b8, sub_140006d70(&var_3d0, QByteArray::fromRawData(&var_388, &data_14000cbb0)));
14000496b                              var_4b8_1 = *(uint16_t*)QChar::QChar(&arg_8, 0x20);
140004991                              QStatusBar::showMessage(rsi_7, QString::arg(rax_79, &var_4a8, QString::number(&var_3a0, 5), 0), 0xbb8);
14000499d                              QString::~QString(&var_4a8);
1400049a8                              QString::~QString(&var_3a0);
1400049b3                              QString::~QString(&var_3b8);
1400049be                              QByteArray::~QByteArray(&var_3d0);
1400049c9                              QByteArray::~QByteArray(&var_388);
1400049c5                          }
1400049d7                          else if (rax_75 < *(uint32_t*)((char*)arg1 + 0x60))
1400049d4                          {
1400049ed                              sub_140003c90(arg1, &arg_18, 0x3e8);
1400049f6                              QStatusBar* rsi_8 = *(uint64_t*)(*(uint64_t*)((char*)arg1 + 0x28) + 0x40);
140004a27                              QString* rax_86 = Concurrency::details::QuickBitSet::operator=(&var_3b8, sub_140006d70(&var_3a0, QByteArray::fromRawData(&var_4a8, &data_14000cbb0)));
140004a58                              var_4b8_1 = *(uint16_t*)QChar::QChar(&arg_8, 0x20);
140004a7d                              QStatusBar::showMessage(rsi_8, QString::arg(rax_86, &var_388, QString::number(&var_3d0, 6), 0), 0xbb8);
140004a88                              QString::~QString(&var_388);
140004a93                              QString::~QString(&var_3d0);
140004a9e                              QString::~QString(&var_3b8);
140004aa9                              QByteArray::~QByteArray(&var_3a0);
140004ab5                              QByteArray::~QByteArray(&var_4a8);
140004ab0                          }
140004aec                          else
140004aec                          {
140004aec                              Concurrency::details::QuickBitSet::operator=(&var_3d0, sub_140006d70(&var_3b8, QByteArray::fromRawData(&var_3a0, &data_14000cb28)));
140004b11                              QJsonValue::toString(QJsonObject::value(&arg_20, &var_388));
140004b1c                              QJsonValue::~QJsonValue(&var_388);
140004b27                              QString::~QString(&var_3d0);
140004b32                              QByteArray::~QByteArray(&var_3b8);
140004b3d                              QByteArray::~QByteArray(&var_3a0);
140004b4b                              class QString var_220;
140004b4b                              int64_t var_210;
140004b4b                              void var_3e8;
140004b4b                              void var_2e0;
140004b4b                              void var_2c8;
140004b4b                              void var_2b0;
140004b4b                              if (var_210 == 0)
140004b43                              {
140004b61                                  sub_140003c90(arg1, &arg_18, 0x3e8);
140004b6a                                  QStatusBar* rsi_9 = *(uint64_t*)(*(uint64_t*)((char*)arg1 + 0x28) + 0x40);
140004ba3                                  QString* rax_96 = Concurrency::details::QuickBitSet::operator=(&var_2e0, sub_140006d70(&var_2c8, QByteArray::fromRawData(&var_2b0, &data_14000cbb0)));
140004bd4                                  var_4b8_1 = *(uint16_t*)QChar::QChar(&arg_8, 0x20);
140004bfa                                  QStatusBar::showMessage(rsi_9, QString::arg(rax_96, &var_4a8, QString::number(&var_3e8, 7), 0), 0xbb8);
140004c06                                  QString::~QString(&var_4a8);
140004c11                                  QString::~QString(&var_3e8);
140004c1f                                  QString::~QString(&var_2e0);
140004c2d                                  QByteArray::~QByteArray(&var_2c8);
140004c3b                                  QByteArray::~QByteArray(&var_2b0);
140004c34                              }
140004c57                              else
140004c57                              {
140004c57                                  QDateTime var_450;
140004c57                                  QDateTime::fromString(&var_450, &var_220);
140004c62                                  QDateTime::currentDateTime();
140004c79                                  void var_458;
140004c79                                  if (QDateTime::precedes(&var_450, &var_458) != 0)
140004c77                                  {
140004c8f                                      sub_140003c90(arg1, &arg_18, 0x3e8);
140004c98                                      QStatusBar* rsi_10 = *(uint64_t*)(*(uint64_t*)((char*)arg1 + 0x28) + 0x40);
140004ccc                                      QString* rax_104 = Concurrency::details::QuickBitSet::operator=(&var_2e0, sub_140006d70(&var_3e8, QByteArray::fromRawData(&var_4a8, &data_14000cbb0)));
140004d00                                      var_4b8_1 = *(uint16_t*)QChar::QChar(&arg_8, 0x20);
140004d28                                      QStatusBar::showMessage(rsi_10, QString::arg(rax_104, &var_2b0, QString::number(&var_2c8, 8), 0), 0xbb8);
140004d36                                      QString::~QString(&var_2b0);
140004d44                                      QString::~QString(&var_2c8);
140004d52                                      QString::~QString(&var_2e0);
140004d5d                                      QByteArray::~QByteArray(&var_3e8);
140004d69                                      QByteArray::~QByteArray(&var_4a8);
140004d64                                  }
140004da6                                  else
140004da6                                  {
140004da6                                      Concurrency::details::QuickBitSet::operator=(&var_2c8, sub_140006d70(&var_2e0, QByteArray::fromRawData(&var_3e8, &data_14000cb80)));
140004dce                                      QJsonValue::toString(QJsonObject::value(&arg_20, &var_2b0));
140004ddc                                      QJsonValue::~QJsonValue(&var_2b0);
140004dea                                      QString::~QString(&var_2c8);
140004df8                                      QByteArray::~QByteArray(&var_2e0);
140004e03                                      QByteArray::~QByteArray(&var_3e8);
140004e11                                      void var_118;
140004e11                                      int64_t var_108;
140004e11                                      void var_298;
140004e11                                      void var_280;
140004e11                                      void var_250;
140004e11                                      void var_190;
140004e11                                      if (var_108 == 0)
140004e09                                      {
140004e27                                          sub_140003c90(arg1, &arg_18, 0x3e8);
140004e30                                          QStatusBar* rsi_11 = *(uint64_t*)(*(uint64_t*)((char*)arg1 + 0x28) + 0x40);
140004e69                                          QString* rax_114 = Concurrency::details::QuickBitSet::operator=(&var_280, sub_140006d70(&var_250, QByteArray::fromRawData(&var_190, &data_14000cbb0)));
140004e9d                                          var_4b8_1 = *(uint16_t*)QChar::QChar(&arg_8, 0x20);
140004ec3                                          QStatusBar::showMessage(rsi_11, QString::arg(rax_114, &var_4a8, QString::number(&var_298, 9), 0), 0xbb8);
140004ecf                                          QString::~QString(&var_4a8);
140004edd                                          QString::~QString(&var_298);
140004eeb                                          QString::~QString(&var_280);
140004ef9                                          QByteArray::~QByteArray(&var_250);
140004f07                                          QByteArray::~QByteArray(&var_190);
140004f00                                      }
140004f31                                      else
140004f31                                      {
140004f31                                          char rax_120 = sub_1400035e0(&var_118, QLineEdit::text(*(uint64_t*)(*(uint64_t*)((char*)arg1 + 0x28) + 0x20)));
140004f40                                          QString::~QString(&var_190);
140004f48                                          class QString var_178;
140004f48                                          if (rax_120 == 0)
140004f46                                          {
140004f5e                                              sub_140003c90(arg1, &arg_18, 0x3e8);
140004f67                                              QStatusBar* rsi_12 = *(uint64_t*)(*(uint64_t*)((char*)arg1 + 0x28) + 0x40);
140004f9e                                              QString* rax_124 = Concurrency::details::QuickBitSet::operator=(&var_298, sub_140006d70(&var_4a8, QByteArray::fromRawData(&var_178, &data_14000cbb0)));
140004fd1                                              var_4b8_1 = *(uint16_t*)QChar::QChar(&arg_8, 0x20);
140004ff9                                              QStatusBar::showMessage(rsi_12, QString::arg(rax_124, &var_250, QString::number(&var_280, 0xa), 0), 0xbb8);
140005007                                              QString::~QString(&var_250);
140005015                                              QString::~QString(&var_280);
140005023                                              QString::~QString(&var_298);
14000502f                                              QByteArray::~QByteArray(&var_4a8);
14000503d                                              QByteArray::~QByteArray(&var_178);
140005036                                          }
14000507d                                          else
14000507d                                          {
14000507d                                              Concurrency::details::QuickBitSet::operator=(&var_250, sub_140006d70(&var_280, QByteArray::fromRawData(&var_298, &data_14000cb60)));
1400050a5                                              QJsonValue::toString(QJsonObject::value(&arg_20, &var_178));
1400050b3                                              QJsonValue::~QJsonValue(&var_178);
1400050c1                                              QString::~QString(&var_250);
1400050cf                                              QByteArray::~QByteArray(&var_280);
1400050dd                                              QByteArray::~QByteArray(&var_298);
1400050eb                                              class QString var_1c0;
1400050eb                                              int64_t var_1b0;
1400050eb                                              void var_430;
1400050eb                                              QString var_418;
1400050eb                                              QByteArray var_400;
1400050eb                                              QByteArray var_268;
1400050eb                                              if (var_1b0 == 0)
1400050e3                                              {
140005101                                                  sub_140003c90(arg1, &arg_18, 0x3e8);
14000510a                                                  QStatusBar* rsi_13 = *(uint64_t*)(*(uint64_t*)((char*)arg1 + 0x28) + 0x40);
14000513a                                                  QString* rax_134 = Concurrency::details::QuickBitSet::operator=(&var_418, sub_140006d70(&var_400, QByteArray::fromRawData(&var_430, &data_14000cbb0)));
14000516e                                                  var_4b8_1 = *(uint16_t*)QChar::QChar(&arg_8, 0x20);
140005194                                                  QStatusBar::showMessage(rsi_13, QString::arg(rax_134, &var_4a8, QString::number(&var_268, 0xb), 0), 0xbb8);
1400051a0                                                  QString::~QString(&var_4a8);
1400051ae                                                  QString::~QString(&var_268);
1400051b9                                                  QString::~QString(&var_418);
1400051c4                                                  QByteArray::~QByteArray(&var_400);
1400051cf                                                  QByteArray::~QByteArray(&var_430);
1400051cb                                              }
1400051e8                                              else
1400051e8                                              {
1400051e8                                                  class QString var_238;
1400051e8                                                  sub_1400062f0(&var_238, &var_1c0);
1400051f6                                                  int64_t var_228;
1400051f6                                                  if (var_228 == 0)
1400051ee                                                  {
14000520c                                                      sub_140003c90(arg1, &arg_18, 0x3e8);
140005215                                                      QStatusBar* rsi_14 = *(uint64_t*)(*(uint64_t*)((char*)arg1 + 0x28) + 0x40);
140005249                                                      QString* rax_141 = Concurrency::details::QuickBitSet::operator=(&var_418, sub_140006d70(&var_268, QByteArray::fromRawData(&var_4a8, &data_14000cbb0)));
14000527a                                                      var_4b8_1 = *(uint16_t*)QChar::QChar(&arg_8, 0x20);
14000529f                                                      QStatusBar::showMessage(rsi_14, QString::arg(rax_141, &var_430, QString::number(&var_400, 0xc), 0), 0xbb8);
1400052aa                                                      QString::~QString(&var_430);
1400052b5                                                      QString::~QString(&var_400);
1400052c0                                                      QString::~QString(&var_418);
1400052ce                                                      QByteArray::~QByteArray(&var_268);
1400052da                                                      QByteArray::~QByteArray(&var_4a8);
1400052d5                                                  }
1400052fb                                                  else if (QString::operator!=(&var_238, &data_14000c714) == 0)
1400052f9                                                  {
1400053f4                                                      QWidget::setEnabled(*(uint64_t*)(*(uint64_t*)((char*)arg1 + 0x28) + 0x38), true);
140005413                                                      sub_140001440(((char*)arg1 + 0x30), QLineEdit::text(*(uint64_t*)(*(uint64_t*)((char*)arg1 + 0x28) + 0x20)));
140005421                                                      sub_140001a90(((char*)arg1 + 0x30), (rax_75 - *(uint32_t*)((char*)arg1 + 0x60)));
14000543e                                                      sub_140001850(((char*)arg1 + 0x30), QString::QString(&var_400, &var_220));
14000545b                                                      sub_1400015d0(((char*)arg1 + 0x30), QString::QString(&var_418, &var_238));
140005464                                                      QWidget::show(((char*)arg1 + 0x30));
14000546d                                                      QWidget::hide(arg1);
14000546d                                                  }
140005311                                                  else
140005311                                                  {
140005311                                                      sub_140003c90(arg1, &arg_18, 0x3e8);
14000531a                                                      QStatusBar* rsi_15 = *(uint64_t*)(*(uint64_t*)((char*)arg1 + 0x28) + 0x40);
14000534e                                                      QString* rax_149 = Concurrency::details::QuickBitSet::operator=(&var_418, sub_140006d70(&var_268, QByteArray::fromRawData(&var_4a8, &data_14000cbb0)));
14000537f                                                      var_4b8_1 = *(uint16_t*)QChar::QChar(&arg_8, 0x20);
1400053a4                                                      QStatusBar::showMessage(rsi_15, QString::arg(rax_149, &var_430, QString::number(&var_400, 0xd), 0), 0xbb8);
1400053af                                                      QString::~QString(&var_430);
1400053ba                                                      QString::~QString(&var_400);
1400053c5                                                      QString::~QString(&var_418);
1400053d3                                                      QByteArray::~QByteArray(&var_268);
1400053df                                                      QByteArray::~QByteArray(&var_4a8);
1400053da                                                  }
14000547b                                                  QString::~QString(&var_238);
140005474                                              }
140005489                                              QString::~QString(&var_1c0);
140005482                                          }
140005482                                      }
140005497                                      QString::~QString(&var_118);
140005490                                  }
1400054a2                                  QDateTime::~QDateTime(&var_458);
1400054ad                                  QDateTime::~QDateTime(&var_450);
1400054a9                              }
1400054bb                              QString::~QString(&var_220);
1400054b4                          }
1400054b4                      }
1400054c9                      QJsonObject::~QJsonObject(&arg_20);
1400054c2                  }
1400054d5                  QJsonDocument::~QJsonDocument(&var_490);
1400054dc                  rcx_60 = &var_e8;
1400054dc              }
1400054e3              QByteArray::~QByteArray(rcx_60);
1400054f1              QString::~QString(&var_100);
1400054f8              rcx_34 = &var_208;
1400054f8          }
1400054ff          QByteArray::~QByteArray(rcx_34);
14000550a          sub_1400034f0(&var_448);
140005506      }
140005528      return QString::~QString(&var_1f0);
140005510  }
头像被屏蔽
s1332177151 发表于 2023-12-21 08:16
wuyingjie2022 发表于 2023-12-21 21:23
这些 CrackMe 程序怎么写出来的,有没有教程或者书籍推荐,我也想学着写这些CrackMe,反调试等各种检测程序,但我真不知道从哪里下手,想先找个书本或者教程学着写  ,请大神们赐教
 楼主| 2370177068 发表于 2023-12-21 22:32
wuyingjie2022 发表于 2023-12-21 21:23
这些 CrackMe 程序怎么写出来的,有没有教程或者书籍推荐,我也想学着写这些CrackMe,反调试等各种检测程序 ...

我靠灵感写出来的
冥界3大法王 发表于 2023-12-21 22:38
本帖最后由 冥界3大法王 于 2023-12-22 09:39 编辑

够大的,明用二进制忍者日你的程序。
试了一下没成功,还有网络验证。。。
能不能弄个没壳子的来一下?
Wo不是高手 发表于 2023-12-22 13:41
wuyingjie2022 发表于 2023-12-21 21:23
这些 CrackMe 程序怎么写出来的,有没有教程或者书籍推荐,我也想学着写这些CrackMe,反调试等各种检测程序 ...

去看看别人的源码,防破解思路
 楼主| 2370177068 发表于 2023-12-22 14:49
本帖最后由 2370177068 于 2023-12-22 14:50 编辑
冥界3大法王 发表于 2023-12-21 22:38
够大的,明用二进制忍者日你的程序。
试了一下没成功,还有网络验证。。。
能不能弄个没壳子的来一下?

居然是大佬!

收到,已更新无壳版本!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止回复与主题无关非技术内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-4-28 12:37

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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