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

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5498|回复: 27
收起左侧

[CrackMe] 这是一个折磨电脑的CrackMe (有后续想法但没写完,这是最初版,python写的……很简陋)

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

本帖最后由 .·.·. 于 2017-3-14 21:18 编辑

需要python3(我是用3.5编写的)
成功和失败的操作如下图:

验证码是数字,不支持其他格式
表示大约就是这样了……
以及如果破解了可以把涂掉的那一小段填回去
[Python] 纯文本查看 复制代码
def alert():
    print("计算错误……如果程序没问题应该是你的码算错了")
    input("请按回车退出程序");
    raise SystemExit()

def convert(what):
    val=''
    vals='alert()'
    if type(what)==type(1):
        tmp=what%256
        what//=256
        while 32<=tmp&tmp<=126:
            val+=chr(tmp)
            tmp=what%256
            what//=256;
        else:
            if what==0:vals=val
        return vals
    elif type(what)==type('1'):
        val=0;tmp=1
        for d in [ord(c) for c in what]:val+=d*tmp;tmp*=256
        return val
    else:alert()

code=1637204578211396448030494090498193460136922475389444481926256908002871980560408179032683048573011810797211728378171299526430254230961401110898052670520628926488383029786272673885842802175042752160581007938095961183210823023044308677052417098206728966803609183860798971231508153562103569831638656262172333054650339873077150006557494309595404299163285820061490575549876580899319076281887155301487530594705560059953316740883744329072378569182614329851826141387091294451111392798396277268830771733389237697904696117626617338523082244311666119078592153263508520683863426147544941288934046697028800171414598381995597349414639130976251757728404290883773256582818030470204771441292597632471295752059418150096802723658372990302531260792420211195442362180743680548211945726610767963643967064767011591197359321609932574085241614539055464921784041772369295051882516667734029393869635908363373447494394859803327966876198870256189202764849411436522564341416381584130488799402388940171378097190770881846616652506109369930313540890147045027489691267058501276204479454438387102415260846751425667277659289875022240755733837496119205677476465974444090417766709422560683366633492140051953373752278557749249604335301998155886285999330217959322364956626487
a=2**2046*5+1113;a*=2**2047*3+115
mod=a
a=int(input("请输入注册码"))
if a<2147483647:
    while a>0:
        c=code
        code*=code;code%=mod;code*=code;code%=mod;code*=code;code%=mod;code*=code;code%=mod;
        code*=code;code%=mod;code*=code;code%=mod;code*=code;code%=mod;code*=code;code%=mod;
        code*=code;code%=mod;code*=code;code%=mod;code*=code;code%=mod;code*=code;code%=mod;
        code*=code;code%=mod;code*=code;code%=mod;code*=code;code%=mod;code*=code;code%=mod;
        code*=c;code%=mod;
        a-=1
    eval(convert(code))

if code!=329812182381753086714043622274082346626084492572232674725132990927195856543301918232:print("你可能遇到了假破解")


话说还是写一些破解吧……
编写这个CrackMe需要用RSA知识……然而破解只需要……
try: ... except SystemExit()
如果需要得到注册码……可以预先记录a的值

本帖子中包含更多资源

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

x

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
用户名是我爱你 + 1 + 1 用心讨论,共获提升!

查看全部评分

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

 楼主| .·.·. 发表于 2017-3-14 21:02
本帖最后由 .·.·. 于 2017-3-14 22:37 编辑
我好想世界末日 发表于 2017-3-14 20:24
这个不是几个月前看雪的题吗?

应该不是吧……
每一个参数都是我自己算出来的
调错用了两三个小时的……
以及
原帖在哪里

其实还有一个PowerMod的函数我没写出来……程序里面只执行了类似x=x**65537%mod(然而速度快很多)的指令
话说这个题如果硬破……输入正确注册码似乎需要验证80s……颇有些论坛600s的意念在里面
所以大家可以想一些巧妙办法……
话说,如果程序的全部代码都用类似方法进行加密……相当想知道破解组到底会发一个几百k的补丁……还是把破解完了之后的程序(比如几十G的游戏)直接发出去

最后写一些破解吧……
把alert的输出改掉
然后借助题目暴力判断就好了
改完以后的程序长这个样子
[Python] 纯文本查看 复制代码
qwe=0;
def alert():
    if (b-a)%100==0:print((b-a)//100,'is complete')
    raise SystemExit()

def convert(what):
    val=''
    vals='alert()'
    if type(what)==type(1):
        tmp=what%256
        what//=256
        while 32<=tmp&tmp<=126:
            val+=chr(tmp)
            tmp=what%256
            what//=256;
        else:
            if what==0:vals=val
        return vals
    elif type(what)==type('1'):
        val=0;tmp=1
        for d in [ord(c) for c in what]:val+=d*tmp;tmp*=256
        return val
    else:alert()

code=1637204578211396448030494090498193460136922475389444481926256908002871980560408179032683048573011810797211728378171299526430254230961401110898052670520628926488383029786272673885842802175042752160581007938095961183210823023044308677052417098206728966803609183860798971231508153562103569831638656262172333054650339873077150006557494309595404299163285820061490575549876580899319076281887155301487530594705560059953316740883744329072378569182614329851826141387091294451111392798396277268830771733389237697904696117626617338523082244311666119078592153263508520683863426147544941288934046697028800171414598381995597349414639130976251757728404290883773256582818030470204771441292597632471295752059418150096802723658372990302531260792420211195442362180743680548211945726610767963643967064767011591197359321609932574085241614539055464921784041772369295051882516667734029393869635908363373447494394859803327966876198870256189202764849411436522564341416381584130488799402388940171378097190770881846616652506109369930313540890147045027489691267058501276204479454438387102415260846751425667277659289875022240755733837496119205677476465974444090417766709422560683366633492140051953373752278557749249604335301998155886285999330217959322364956626487
a=2**2046*5+1113;a*=2**2047*3+115
mod=a
a=int(input("请输入注册码"))
b=a;
if a<2147483647:
    while a>0:
        c=code
        code*=code;code%=mod;code*=code;code%=mod;code*=code;code%=mod;code*=code;code%=mod;
        code*=code;code%=mod;code*=code;code%=mod;code*=code;code%=mod;code*=code;code%=mod;
        code*=code;code%=mod;code*=code;code%=mod;code*=code;code%=mod;code*=code;code%=mod;
        code*=code;code%=mod;code*=code;code%=mod;code*=code;code%=mod;code*=code;code%=mod;
        code*=c;code%=mod;
        a-=1
        try:
            eval(convert(code))
        except:
            continue
        print('\n','\na=',b-a,'is correct!\n','\n')
    eval(convert(code))

if code!=329812182381753086714043622274082346626084492572232674725132990927195856543301918232:print("你可能遇到了假破解")

是的这很强大……然而……如果主楼的程序也被改掉了会怎么样呢?
 楼主| .·.·. 发表于 2017-3-17 21:13
Egoista丶 发表于 2017-3-16 18:07
借鉴一下,其实我也只是对这些一知半解

我也是
因而胡乱开了一个坑
这个破解的最大难点就是……

哪怕正常用户也需要解一分钟
海绵foryou 发表于 2017-3-14 18:59
萌小凯 发表于 2017-3-14 19:01
看起来挺厉害的哈
chen_750 发表于 2017-3-14 19:06
膜拜大神
mingo 发表于 2017-3-14 19:12
厉害了,,,,
187418187 发表于 2017-3-14 19:34
喝水不忘打井人,感谢分享!
qq662918 发表于 2017-3-14 20:14
多谢大佬分享。谢谢
我好想世界末日 发表于 2017-3-14 20:24
这个不是几个月前看雪的题吗?
Cashion 发表于 2017-3-14 20:39
看起来挺厉害的哈
feihao 发表于 2017-3-14 20:43
小白表示不懂这是什么
您需要登录后才可以回帖 登录 | 注册[Register]

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

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

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

GMT+8, 2024-4-16 21:40

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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