.·.·. 发表于 2017-3-14 18:41

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

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

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

验证码是数字,不支持其他格式
表示大约就是这样了……
以及如果破解了可以把涂掉的那一小段填回去
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 :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的值

.·.·. 发表于 2017-3-14 21:02

本帖最后由 .·.·. 于 2017-3-14 22:37 编辑

我好想世界末日 发表于 2017-3-14 20:24
这个不是几个月前看雪的题吗?
{:17_1054:}应该不是吧……
每一个参数都是我自己算出来的
调错用了两三个小时的……
以及
原帖在哪里

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

最后写一些破解吧……
把alert的输出改掉
然后借助题目暴力判断就好了
改完以后的程序长这个样子
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 :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
借鉴一下,其实我也只是对这些一知半解

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

哪怕正常用户也需要解一分钟{:17_1054:}

海绵foryou 发表于 2017-3-14 18:59

楼主威武

萌小凯 发表于 2017-3-14 19:01

看起来挺厉害的哈

chen_750 发表于 2017-3-14 19:06

{:301_1002:}膜拜大神

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

看起来挺厉害的哈{:301_1000:}

feihao 发表于 2017-3-14 20:43

小白表示不懂这是什么
页: [1] 2 3
查看完整版本: 这是一个折磨电脑的CrackMe (有后续想法但没写完,这是最初版,python写的……很简陋)