一个64位命令行CM,没有壳
本帖最后由 JuncoJet 于 2019-1-22 12:16 编辑程序比较大,论坛限制3M一个附件,分两个分卷上传
由于代码量很小一共16行,所以不给提示
---
更新
不到20楼有人贴出了源码,那我就提前分析吧
#-by JuncoJet
import time,os,sys
print u"输入密码:",
t=raw_input()
for i in range(3):
time.sleep(1)#此处暂停3秒,常用迷惑破解者的手法
x=0
for i in t:
#经典的time33 hash算法,被暴雪游戏校验和大量数据库hash表使用而发扬光大,速度快算法简单
x+=33*ord(i)#不好意思,此处算法实现有误详见下方
try:
if x==24420:
print u"密码正确"
os._exit(0)#该退出不会触发异常
sys.exit(0)#该退出会触发异常,使用抛出异常来提示错误信息有效的防定位(来自C++编程思想)
except:
print u"密码错误"
Time33算法C语言实现
char *p="数据内容";//源数据
int h=0;//计算保存hash值
while(*p){h=h*33+*p++;}
Time33算法的Python语言实现
b=2**32-1
t="数据内容"
h=0#计算保存hash值
for i in t:
h=b&(b&(h*33)+ord(i))
Cracker大大们,可以尝试下从不同的方法入手,进行破解,方法不唯一! 用pyinstxtractor.py反编译,打开cm一看
#-by JuncoJet
import time,os,sys
print u"输入密码:",
t=raw_input()
for i in range(3):
time.sleep(1)
x=0
for i in t:
x+=33*ord(i)
try:
if x==24420:
print u"密码正确"
os._exit(0)
sys.exit(0)
except:
print u"密码错误"
程序截图 超过20楼贴源码(没人破解出来的话,不是恶意盖楼只是怕没人气哈哈),并且做讲解。
程序可以说是明文也可以说不是,编译后至少IDA64里看不到任何提示。 好像是启动自身,然后子进程调用py代码进行判断 {:301_1007:} 看来是没人敢尝试了 苏紫方璇 发表于 2019-1-21 16:14
好像是启动自身,然后子进程调用py代码进行判断
假象,并没有调用子程序。只是sleep了3秒,掩人耳目,使人望而却步。 {:1_909:}求楼主 不要设置20个回复就解答鸭2天内吧不然白天上班 时间又不够 #-by JuncoJet
import time,os,sys
print u"输入密码:",
t=raw_input()
for i in range(3):
time.sleep(1)
x=0
for i in t:
x+=33*ord(i)
try:
if x==24420:
print u"密码正确"
os._exit(0)
sys.exit(0)
except:
print u"密码错误"
一看是CMD的就不敢分析了,新手坐等大神讲解
页:
[1]
2