吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5631|回复: 26
收起左侧

[CrackMe] 你敢信!是AI自编!python混淆技术结果demo版

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



又来啦,这次的解密没有修改python解释器,所做的一切都是混淆代码。密码也是哈希比较,找到需要比较的哈希就算成功
自定义的混淆器刚出炉,来试试。   
路过的大佬麻烦打打分,谢谢您
计划最终版在此基础上修复容易被dump的漏洞和添加自定义加密解释器。
蓝奏云
https://wwati.lanzouu.com/i0dFH3dgvjpi密码:4mk7

本帖子中包含更多资源

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

x

免费评分

参与人数 7吾爱币 +7 热心值 +7 收起 理由
eageyren + 1 + 1 我很赞同!
骑驴去旅行 + 1 + 1 我很赞同!
chinawolf2000 + 1 + 1 热心回复!
evan1s + 1 + 1 用心讨论,共获提升!
celiuo + 1 + 1 我很赞同!
ggshihai + 1 + 1 热心回复!
a435751757 + 1 + 1 我很赞同!

查看全部评分

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

神奇的人鱼 发表于 2025-12-18 12:48

hash算法,可以通过c++ 进行hash碰撞
[Python] 纯文本查看 复制代码
def custom_hash_simple(data: bytes) -> int:
    hash_value = 2596069104
    for i, b in enumerate(data):
        hash_value = (hash_value * 2654435761 + b + (i ^ 21930)) & 0xFFFFFFFF
        hash_value = (hash_value ^ (hash_value >> 11)) & 0xFFFFFFFF
        hash_value = ((hash_value << 7) | (hash_value >> 25)) & 0xFFFFFFFF

    for const in [305419896, 2596069104, 4275878552]:
        hash_value = ((hash_value ^ const) * 16777619) & 0xFFFFFFFF
    return hash_value


具体思路见 【新提醒】破解 [CrackMe] 你敢信!是AI自编!python混淆技术结果demo版 思路 - 吾爱破解 - 52pojie.cn

本帖子中包含更多资源

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

x

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
1346 + 1 + 1 用心讨论,共获提升!

查看全部评分

yur0 发表于 2025-12-13 22:17
本帖最后由 yur0 于 2025-12-13 22:53 编辑

内存中有解密的代码dump出来,去一下混淆,调试打断点在CMP那直接改了一下,对比的hash应该是0xd9c56b0e
frida crack脚本,密码flag

const mod = Process.enumerateModules().find(m => {
    const n = m.name.toLowerCase();
    return n.startsWith('python') || n.startsWith('libpython');
});
if (!mod) throw new Error("Python module not found");

const exp = name => Module.getExportByName(mod.name, name);

const PyObject_RichCompare = exp('PyObject_RichCompare');
const PyBool_FromLong  = new NativeFunction(exp('PyBool_FromLong'), 'pointer', ['long']);
const PyObject_Str     = new NativeFunction(exp('PyObject_Str'), 'pointer', ['pointer']);
const PyUnicode_AsUTF8 = new NativeFunction(exp('PyUnicode_AsUTF8'), 'pointer', ['pointer']);

const PY_FALSE = PyBool_FromLong(0);
const T_RIGHT = "3653593870"; // 0xd9c56b0e
const T_LEFT  = "3957603931"; // 0xebe43e5b

// PyObject -> decimal string
function toDecStr(obj) {
    if (obj.isNull()) return null;

    const s = PyObject_Str(obj);
    if (s.isNull()) return null;

    const p = PyUnicode_AsUTF8(s);
    return p.isNull() ? null : Memory.readUtf8String(p);
}

console.log(`[+] Hook PyObject_RichCompare @ ${mod.name}`);

Interceptor.attach(PyObject_RichCompare, {
    onEnter(args) {
        this.hit = false;

        const left  = toDecStr(args[0]);
        const right = toDecStr(args[1]);

        if (right === T_RIGHT || left === T_LEFT) {
            this.hit = true;
        }
    },
    onLeave(retval) {
        if (this.hit) {
            retval.replace(PY_FALSE);
        }
    }
});

本帖子中包含更多资源

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

x

免费评分

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

查看全部评分

luliucheng 发表于 2025-12-13 01:23
我没办法找到密码但是提供一个思路,而且我感觉这个思路是可行的:通过劫持程序的 Python 标准库,在标准库里动态 hook 某些关键函数,输出函数返回值,从而找出密码。劫持的方法是替换程序的 base_library.zip 中的 types 模块,hook 框架要自己写。目前我的 hook 框架可能导致程序出错。在这里贴一下目前的进展,想问下楼主程序大概执行到哪里了,有没有因 hook 出错而崩溃了。

本帖子中包含更多资源

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

x
xytxuu 发表于 2025-12-16 02:40
牛,学习了

免费评分

参与人数 1吾爱币 -15 违规 +1 收起 理由
bian96 -15 + 1 警告:CM区等技术板块禁止回复与主题无关非技术内容,违者重罚!

查看全部评分

heigui520 发表于 2025-12-13 00:44
虽然不太懂,感觉很牛

免费评分

参与人数 1吾爱币 -15 违规 +1 收起 理由
bian96 -15 + 1 警告:CM区等技术板块禁止回复与主题无关非技术内容,违者重罚!

查看全部评分

 楼主| 1346 发表于 2025-12-13 08:59
luliucheng 发表于 2025-12-13 01:23
我没办法找到密码但是提供一个思路,而且我感觉这个思路是可行的:通过劫持程序的 Python 标准库,在标准库 ...

你这个对没有混淆的有奇效,但是我这个有小虚拟机的

免费评分

参与人数 1吾爱币 +2 热心值 +1 收起 理由
luliucheng + 2 + 1 谢谢@Thanks!

查看全部评分

 楼主| 1346 发表于 2025-12-13 09:15
luliucheng 发表于 2025-12-13 01:23
我没办法找到密码但是提供一个思路,而且我感觉这个思路是可行的:通过劫持程序的 Python 标准库,在标准库 ...

应该全部执行了,Taogo key是虚拟机字节码的加密密钥
smlzone 发表于 2025-12-13 15:11
先插眼。继续关注

免费评分

参与人数 3吾爱币 -17 违规 +1 收起 理由
双眼皮的微笑 -1 请勿灌水,提高帖子质量是每位会员应尽的义务!
bian96 -15 + 1 警告:CM区等技术板块禁止回复与主题无关非技术内容,违者重罚!
PythonPan -1 请勿灌水,提高帖子质量是每位会员应尽的义务!

查看全部评分

xd1471 发表于 2025-12-13 21:19
看不太明白,但是感觉很牛的样子,先学习一下!

免费评分

参与人数 1吾爱币 -15 违规 +1 收起 理由
L_Monkey -15 + 1 警告:CM区等技术板块禁止回复与主题无关非技术内容,违者重罚!

查看全部评分

火龙果 发表于 2025-12-13 22:21
fernet_key m0Hp0uP6A49z28UlJ9kRKtGJXbJe03OxxzKZjariigw=       xor_keys {'str1': 196, 'str2': 135, 'str3': 45, 'func_arg': 19, 'list_idx': 11, 'strip_str': 241}

免费评分

参与人数 1吾爱币 -15 违规 +1 收起 理由
L_Monkey -15 + 1 警告:CM区等技术板块禁止回复与主题无关非技术内容,违者重罚!

查看全部评分

Hanker2022 发表于 2025-12-14 00:25
真想挣了你们的积分,可是能力不能及,

免费评分

参与人数 1吾爱币 -15 违规 +1 收起 理由
bian96 -15 + 1 警告:CM区等技术板块禁止回复与主题无关非技术内容,违者重罚!

查看全部评分

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2026-2-14 18:16

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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