吾爱破解 - LCG - LSG |安卓破解|病毒分析|破解软件|bj5208.com

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

搜索
查看: 3705|回复: 41

[CrackMe] 找自信

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

(GTA8UK%5]3T3R(AQEP7}7G.png
CrackMe.zip (830.31 KB, 下载次数: 122)

免费评分

参与人数 4吾爱币 +9 热心值 +4 收起 理由
熟薯 + 1 + 1 匆匆赶来,因为床帏有难言之隐,打扰了。
CrazyNut + 6 + 1 用心讨论,共获提升!
Fym945 + 1 + 1 我很赞同!
风绕柳絮轻敲雪 + 1 + 1 除夕快乐

查看全部评分

发帖前要善用论坛搜索q8.bet_【官方首页】-q8娱乐城功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| zbnysjwsnd8 发表于 2020-1-25 13:53
带一组key的CM

CM.zip

830.45 KB, 下载次数: 40

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
weikun444 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

jixun66 发表于 2020-1-27 12:09
本帖最后由 jixun66 于 2020-1-27 12:35 编辑
16,12,5,-78,6,1,4,0

标题的自定义文字不会搞了… 参数拿表算的

Clipboard Image (3).jpg

Clipboard Image (4).jpg

跟了一下提供的 key,好像第二位和最后三位得是 -4140? 更新后的 key:

2,-4,5,-4,8,1,4,0

Clipboard Image (5).jpg

ar6 = 1
ar7 = 4
ar8 = 0

cal_1 = 6, cal_2 = 16, ar1 = 2;
ar3 = 5
ar2 = -4
// ar2 = -(cal_2 - ar5 * ar1 - ar4);

//   ar3 * ar1 + ar4 = cal_1
//   ar5 * ar1 + ar4 = cal_2 - 4
// -----------------------------
//  (ar3 - ar5)*ar1 = cal_1 - cal_2 + 4
ar5 = ar3 - ((cal_1 - cal_2 + 4) / ar1)
ar4 = cal_1 - ar3 * ar1;

console.info([ar1, ar2, ar3, ar4, ar5, ar6, ar7, ar8].join(',')); // 不能有小数,前 5 位不能有 0。

cal_1 = Math.floor(ar3 * ar1 + ar4);            // 1 * 123 + 4 = 127
cal_2 = Math.floor(ar5 * ar1 + ar4 - ar2);      // 4 * 123 + 4 - (-4) = 500
cal_3 = ar1 * cal_1 * cal_2 * ar3 * ar4 * ar5 * ar2;
// cal_3 不为 0 即可,也就是说任意一个数值不为 0 即可。
cal_4 = Math.floor(ar1 * cal_1 + 4.0);      // 127 * 123 + 4 = square(125)
cal_5 = Math.floor(ar1 * cal_2 + 4.0);      // 500 * 123 + 4 = square(248)
cal_6 = Math.floor(cal_1 * cal_2 + 4.0);    // 127 * 500 + 4 = square(252)
[cal_1,cal_2,cal_3,cal_4,cal_5,cal_6]

// 验证: cal_4/5/6 得是平方数
  if ( arrayLen == 8 )
  {
    cal_1 = FloatToInt((double)ar3 * (double)ar1 + (double)ar4);
    cal_2 = FloatToInt((double)ar5 * (double)ar1 + (double)ar4 - (double)ar2);
    cal_3 = (double)ar1 * (double)cal_1 * (double)cal_2 * (double)ar3 * (double)ar4 * (double)ar5 * (double)ar2;
    cal3_abs = cal_3;
    if ( cal_3 < 0.0 )
      cal3_abs = -cal_3;
    if ( cal3_abs > 0.0000001 )                 // cal3 != 0
    {
      cal_4 = FloatToInt((double)ar1 * (double)cal_1 + 4.0);
      if ( isSquareOfNumber(cal_4) )
      {
        cal_5 = FloatToInt((double)ar1 * (double)cal_2 + 4.0);
        if ( isSquareOfNumber(cal_5) )
        {
          cal_6 = FloatToInt((double)cal_1 * (double)cal_2 + 4.0);
          if ( isSquareOfNumber(cal_6) )
          {
            checkSize();
            if ( v15 <= 5 )
              access_exception((LPCSTR)1);
            ar1_4a[5];
            ar6 = exec_ebx(1);
            checkSize();
            if ( v16 <= 6 )
              access_exception((LPCSTR)1);
            ar1_4a[6];
            LODWORD(ar7__) = exec_ebx(1);
            ar7 = ar7__;
            checkSize();
            if ( v18 <= 7 )
              access_exception((LPCSTR)1);
            ar1_4a[7];
            LODWORD(ar8__) = exec_ebx(1);
            ar8 = ar8__;
            exec_ebx(0);                        // 取现行时间
            sec = exec_ebx(1);                  // 取秒
            cal_7 = ((double)sec - 1.0) * ((double)sec - 1.0)
                  + (double)ar6 * (double)sec * 4.0
                  - ((double)sec + (double)ar6) * ((double)sec + (double)ar6);
            if ( cal_7 < 0.0 )
              cal_7 = -cal_7;
            if ( cal_7 <= 0.0000001 )           //  == 0
            {
              exec_ebx(0);
              exec_ebx(1);                      // 时间取秒???
              LODWORD(sec2) = exec_ebx(1);
              cal_8 = (double)ar6 * 4.0 / (sec2 * sec2);
              timeCalc2 = (ar8 - sec2 * cal_8) / (ar7 - cal_8)
                        - (-1.0 / sec2 * ((double)ar6 * 4.0 / (-1.0 / sec2 * (-1.0 / sec2))) - sec2 * cal_8)
                        / ((double)ar6 * 4.0 / (-1.0 / sec2 * (-1.0 / sec2)) - cal_8);
              if ( timeCalc2 < 0.0 )
                timeCalc2 = -timeCalc2;
              if ( timeCalc2 <= 0.0000001 )
              {
                checkSize();
                if ( v25 <= 1 )
                  access_exception((LPCSTR)1);
                checkSize();
                if ( v26 <= 5 )
                  access_exception((LPCSTR)1);
                checkSize();
                if ( v27 <= 6 )
                  access_exception((LPCSTR)1);
                checkSize();
                if ( v28 <= 7 )
                  access_exception((LPCSTR)1);
                v29 = ar1_4a[7];
                v30 = ar1_4a[6];
                v31 = ar1_4a[5];
                v62 = (void *)sub_40106F(ar1_4a[1]);
                v40 = (void *)exec_ebx(6);
                if ( v62 )
                  free(v62);
                v61 = v40;
                lpMem_4a = (void *)exec_ebx(1);
                lpMema = (void *)sub_40202F(3, (unsigned int)&unk_4828B6);
                if ( lpMem_4a )
                  free(lpMem_4a);
                v45 = (void *)exec_ebx(1);
                if ( lpMema )
                  free(lpMema);
                v43 = (unsigned __int8 *)sub_40106F((unsigned int)"Cardinal - ");
                if ( v45 )
                  free(v45);
                sub_402029((HWND)0x52010001, 100728832, 8, -1, v43, 0);
                if ( v43 )
                  free(v43);
              }
            }
          }
        }
      }
    }
  }


(越看越觉得这代码像是在胡搅蛮缠)

免费评分

参与人数 2吾爱币 +5 热心值 +2 收起 理由
CrazyNut + 3 + 1 用心讨论,共获提升!
zbnysjwsnd8 + 2 + 1 热心回复!

查看全部评分

梦游枪手 发表于 2020-1-27 18:15
本帖最后由 梦游枪手 于 2020-1-28 14:14 编辑

用python简单还原了一下过程。
[Python] 纯文本查看 复制代码
import math
import random
def issqr(numc):
    return numc == int(math.sqrt(numc)) * int(math.sqrt(numc))
num = [123, -4, 1, 4, 4, 1, 4, 0]
result1 = num[2] * num[0] + num[3]
result2 = num[4] * num[0] + num[3] - num[1]
if abs(num[0] * num[1] * num[2] * num[3] * num[4] * result1 * result2) > 0:
    if issqr(num[0] * result1 + 4) and issqr(num[0] * result2 + 4) and issqr(result1 * result2 + 4):
        x = random.randint(1, 59)
        if ((x - 1)**2 + num[5] * x * 4) - ((x + num[5])**2) == 0: 
            r1 = num[5] * 4.0 / x**2 
            if int((num[7] - x * r1) / (num[6] - r1) - ((-1.0 / x) * (num[5] * 4 / ((-1.0 / x)**2)) -
                                                        x * r1) / (num[5] * 4 / ((-1.0 / x)**2) - r1)) == 0:
                print 'success'

1,5,6,7下标的值最后会用来解密窗口标题,其中0-4下标和5-7下标的校验是分开的,5-7可以列出方程求解(下面用zn表示num数组的第几个成员)
(x-1)^2+z5*x*4 -
(x+z5)^2
=0

化简后可以得到
2*x*z5-2*x+1-
z5^2
=0

z5=1

z5代入到后面的方程
(z7-x*(4/x^2))/(z6-4/x^2) -
(((-1/x)*z5*4/((-1/x)^2))-x*(4/x^2))/(z5*4/((-1/x)^2)-(4/x^2))
=0

(z7-x*(4/x^2))/(z6-4/x^2) -
(((-1/x)*4/((-1/x)^2))-x*(4/x^2))/(4/((-1/x)^2)-(4/x^2))
=0

化简后
(x^2*z7-4*x)/(x^2*z6-4)
=
-x/(x^2-1)

z7=0
z6=4
问题是1的值,貌似没办法解出来,不过在已知5,6,7的情况下爆破的话也可以。这里就直接已知z1=-4吧。然后直接穷举可用解。
[Python] 纯文本查看 复制代码
import math
def issqr(numc):
    return numc == int(math.sqrt(numc)) * int(math.sqrt(numc))
z1 = -4
for z0 in xrange(1, 255):
    for z2 in xrange(1, 255):
        for z3 in xrange(1, 255):
            for z4 in xrange(1, 255):
                result1 = z2 * z0 + z3
                result2 = z4 * z0 + z3 - z1
                if issqr(z0 * result1 + 4) and issqr(z0 * result2 + 4) and issqr(result1 * result2 + 4):
                    print z0, z2, z3, z4

解有很多,放一组到key里就行
2,-4,40,46,23,1,4,0
QQ截图20200127181458.png

免费评分

参与人数 2吾爱币 +4 热心值 +2 收起 理由
zbnysjwsnd8 + 1 + 1 热心回复!
CrazyNut + 3 + 1 用心讨论,共获提升!

查看全部评分

Truama 发表于 2020-1-24 10:43
图不错,收了。新年快乐!
sysy0018 发表于 2020-1-24 11:04
新年快乐!
huzpsb 发表于 2020-1-24 12:10
本帖最后由 huzpsb 于 2020-1-24 19:39 编辑

九楼见.

捕获.JPG
8个关键跳,楼主你feng了?我连改字符串的心都有了

免费评分

参与人数 1热心值 +1 收起 理由
小菜鸟一枚 + 1 我感觉自信被楼主打击没了,太难了!

查看全部评分

huzpsb 发表于 2020-1-24 12:18
@小菜鸟一枚 不,是我没自信了~
还有,更正一下,是7个,刚才我瞎了
小菜鸟一枚 发表于 2020-1-24 12:19
huzpsb 发表于 2020-1-24 12:18
@小菜鸟一枚 不,是我没自信了~
还有,更正一下,是7个,刚才我瞎了

你还找到了字符串,我搜字符串都不出来,都不知道从何下手了!
huzpsb 发表于 2020-1-24 12:35
小菜鸟一枚 发表于 2020-1-24 12:19
你还找到了字符串,我搜字符串都不出来,都不知道从何下手了!

p.zip (23.67 KB, 下载次数: 8)
 楼主| zbnysjwsnd8 发表于 2020-1-24 12:36
dingding~
huzpsb 发表于 2020-1-24 12:48

捕获.JPG
捕获2.JPG
不玩了,爆破(爆破点如图所示,然后00401E37断下来,改内存)一下,改写一下字符串走人
哼唧~
小菜鸟一枚 发表于 2020-1-24 12:58
huzpsb 发表于 2020-1-24 12:35
也许会让你有一点思路QwQ

看来是我的知识面太窄了,看不懂这是什么文件,官方入门视频教程第七课也是易语言,不懂编程完全看不懂
顺着你的截图我搜到这里,然后改跳转程序就挂了!
[Asm] 纯文本查看 复制代码
004013A0  |.  83BD 78FFFFFF>cmp [local.34],0x8
004013A7  |.  0F84 05000000 je CrackMe.004013B2
004013AD      E9 E10A0000   jmp CrackMe.00401E93


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

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

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

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

GMT+8, 2020-2-17 02:29

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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

页面底部区域 foot.htm