JuncoJet 发表于 2019-1-21 15:17

一个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大大们,可以尝试下从不同的方法入手,进行破解,方法不唯一!

堂前燕 发表于 2019-1-21 20:31

用pyinstxtractor.py反编译,打开cm一看

艾莉希雅 发表于 2019-1-21 18:53



#-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"密码错误"

JuncoJet 发表于 2019-1-21 15:23

程序截图

JuncoJet 发表于 2019-1-21 15:34

超过20楼贴源码(没人破解出来的话,不是恶意盖楼只是怕没人气哈哈),并且做讲解。
程序可以说是明文也可以说不是,编译后至少IDA64里看不到任何提示。

苏紫方璇 发表于 2019-1-21 16:14

好像是启动自身,然后子进程调用py代码进行判断

JuncoJet 发表于 2019-1-21 17:20

{:301_1007:} 看来是没人敢尝试了

JuncoJet 发表于 2019-1-21 17:21

苏紫方璇 发表于 2019-1-21 16:14
好像是启动自身,然后子进程调用py代码进行判断

假象,并没有调用子程序。只是sleep了3秒,掩人耳目,使人望而却步。

初吻给奶嘴耶 发表于 2019-1-21 18:04

{:1_909:}求楼主 不要设置20个回复就解答鸭2天内吧不然白天上班 时间又不够

初吻给奶嘴耶 发表于 2019-1-21 18:31

#-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"密码错误"


论乾坤 发表于 2019-1-21 20:09

一看是CMD的就不敢分析了,新手坐等大神讲解
页: [1] 2
查看完整版本: 一个64位命令行CM,没有壳