吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3671|回复: 21
收起左侧

[CrackMe] python,无壳,简单版,来试试吧

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

本帖最后由 papersheep 于 2023-1-10 08:34 编辑

压缩包有32位和64位的CM
验证失败

验证成功

链接:https://pan.baidu.com/s/1tnc1-I6sXkTEQQyxjeUN4w
提取码:xlkl

加一个py转c后编译的版本(这个不是pyinstaller打包的)
链接:https://pan.baidu.com/s/1G75RiVBCKY0pJTdDhYj3wA
提取码:mysa

本帖子中包含更多资源

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

x

免费评分

参与人数 4吾爱币 +13 热心值 +4 收起 理由
elevo + 1 + 1 谢谢@Thanks!
局外人K + 1 + 1 我很赞同!
461735945 + 1 + 1 谢谢@Thanks!
涛之雨 + 10 + 1 用心讨论,共获提升!

查看全部评分

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

 楼主| papersheep 发表于 2023-1-10 19:54
liyitong 发表于 2023-1-10 13:49
你是怎么把源代码给弄出来的

这种逆出源码的只能针对pyinstaller打包的python代码。具体流程是这样的
1. 安装python环境
2.到github或者百度上下载pyinstxtractor.py
3.在CM所在目录的命令行运行:python pyinstxtractor.py CM.exe
4.第三步运行后会得到xxx.exe_extracted的目录文件
5.进入xxx.exe_extracted,找出被加密的python源码,你会发现一个文件后缀是xxx.exe.manifest,这个xxx就是源码文件名,那么被加密的源码就是"xxx.exe_extracted/xxx",这个被加密的源码文件没有任何后缀
6.找到被加密的源码文件后,加上.pyc后缀给它
7.要破解这个加密源码文件你需要找到magic num,这个密钥长4个字节,不同版本的python对应的magic num是固定的,你现在有两种方法找到这个magic num,一种是网上写好的对照表,你在xxx.exe_extracted目录下看一下pythonxx.dll就知道这个软件是python多少版本打包的了,你知道版本后网上直接找出对应的magic num。第二种方法是xxx.exe_extracted目录下有一个struct文件,它的前4位字节就是magic num。(我自己破解的时候我就是取这个struct的前4位字节)
8.取到magic num后,就可以构建破解密钥了,目前有两种情况,第一种情况是这个软件是(python3.7以下,不包括3.7),那么你构建出来的破解密钥就是(4个字节的magic num + 4个字节的时间戳),这个时间戳可以全是0。如果软件是(python3.7以上,包括3.7),那么破解密钥就是(4个字节的magic num + 4个字节的空白数据 + 4个字节的时间戳 + 4个字节的文件长度),除了magic num,其他数据可以全是0。
9. 以这个软件为例,这个软件在被pyinstxtractor.py解析后可以看出python38.dll,所以这个软件是python3.8版本的,那么我把 "xxx.exe_extracted/xxx.pyc"放入编辑二进制文件的软件里(我用的是吾爱论坛提供的C32Asm),然后我把第8步得出的密钥插入文件头,也就是在文件最前面插入这个破解密钥,最后保存
10.到此源码的pyc就处理后了,下一步就是在自己的python环境使用Pip安装uncompyle6,安装命令:pip install uncompyle6
11. 然后进入源码.pyc所在的目录在命令行运行:uncompyle6 -o new.py 源码.pyc,那么你得出的new.py就是软件源码,不过这个源码会有一点点瑕疵。
12. 这个方法只适用于pyinstaller打包的python文件,我后续上传的那个CM是使用nuitka打包,这个就不适用这个方法了。

免费评分

参与人数 1热心值 +1 收起 理由
liyitong + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

xqyqx 发表于 2023-1-10 08:26
username:paper
password:sheep
建议下次用Cython编译成二进制或者简单混淆一下代码

[Python] 纯文本查看 复制代码
#!/usr/bin/env python
import tkinter as tk
import tkinter.messagebox as tkinter


def login_func(e_usename, e_password, root_win):
    usename = e_usename.get()
    password = e_password.get()
    if usename == "paper" and password == "sheep":
        root_win.update()
        root_win.deiconify()
    else:
        tkinter.messagebox.showerror(
            "账号密码错误",
            "购买账号:[url]www.xxx.com[/url]",
            **("title", "message")
        )


def close_top1(top1, root_win):
    top1.destroy()
    root_win.destroy()


def main():
    root_win = tk.Tk()
    root_win.title("tkcm1")
    root_win.geometry("450x300")
    tk.Button(
        root_win,
        "已开启主要功能",
        **("text",)
    ).pack()
    root_win.withdraw()
    root_win.update()
    top1 = tk.Toplevel(root_win)
    top1.title("登录窗口")
    top1.geometry("300x100")
    None(None, (lambda: close_top1(top1, root_win)))
    l_usename = tk.Label(top1, "账号:", **("text",))
    l_password = tk.Label(top1, "密码:", **("text",))
    e_usename = tk.Entry(top1)
    e_password = tk.Entry(top1)
    l_usename.grid(0, **("row",))
    l_password.grid(1, **("row",))
    e_usename.grid(0, 1, **("row", "column"))
    e_password.grid(1, 1, **("row", "column"))
    b_login = None(
        None,
        None,
        (lambda: login_func(e_usename, e_password, root_win)),
        **("text", "command")
    )
    b_login.grid(2, **("row",))
    root_win.mainloop()


if __name__ == "__main__":
    main()

免费评分

参与人数 1吾爱币 +4 热心值 +1 收起 理由
涛之雨 + 4 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

aa2923821a 发表于 2023-1-10 08:39
感谢分享 !!!谢谢

免费评分

参与人数 1违规 +1 收起 理由
Hmily + 1 警告:本版块禁止回复与主题无关非技术内容,违者重罚!

查看全部评分

 楼主| papersheep 发表于 2023-1-10 08:40
xqyqx 发表于 2023-1-10 08:26
username:paper
password:sheep
建议下次用Cython编译成二进制或者简单混淆一下代码

对对,如果使用pyinstaller打包的话一下子就可以逆回源码了,我换了一种打包方式后,我自己初学破解感觉,愣了半天也没找到思路,我用OD断点API没反应,搜索关键词字符串也没找到
链接:https://pan.baidu.com/s/1G75RiVBCKY0pJTdDhYj3wA
提取码:mysa
ycx151771 发表于 2023-1-10 08:44

感谢分享 !!!谢谢

免费评分

参与人数 1违规 +1 收起 理由
Hmily + 1 警告:本版块禁止回复与主题无关非技术内容,违者重罚!

查看全部评分

stone0505 发表于 2023-1-10 09:52
学习一下

免费评分

参与人数 1违规 +1 收起 理由
Hmily + 1 警告:本版块禁止回复与主题无关非技术内容,违者重罚!

查看全部评分

lyisme 发表于 2023-1-10 10:16
这个东西有点意思

免费评分

参与人数 1违规 +1 收起 理由
Hmily + 1 警告:本版块禁止回复与主题无关非技术内容,违者重罚!

查看全部评分

liangxinbeilang 发表于 2023-1-10 10:36
楼主加油

免费评分

参与人数 1违规 +1 收起 理由
Hmily + 1 警告:本版块禁止回复与主题无关非技术内容,违者重罚!

查看全部评分

头像被屏蔽
sh101848 发表于 2023-1-10 11:13
提示: 该帖被管理员或版主屏蔽
sk2006 发表于 2023-1-10 11:36
需要什么工具?网上下的 很多用不多=了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-24 11:56

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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