本帖最后由 .·.·. 于 2017-3-14 22:37 编辑
应该不是吧……
每一个参数都是我自己算出来的
调错用了两三个小时的……
以及
原帖在哪里
其实还有一个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("你可能遇到了假破解")
是的这很强大……然而……如果主楼的程序也被改掉了会怎么样呢?
|