吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1688|回复: 14
上一主题 下一主题
收起左侧

[CrackMe] 卷土重来,CM2

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


基于前面的CM1换了一种写法,一定很有趣,你可以用任何方法破解,如果成功了务必贴出详细流程让大家都学习一下
这个是易语言写的用黑月编译,有部分无用的代码混淆视听用的,密码是明文可以追溯的不是一个校验值


本帖子中包含更多资源

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

x

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
Bob5230 + 1 + 1 我很赞同!

查看全部评分

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

推荐
爱飞的猫 发表于 2024-7-1 00:51
本帖最后由 爱飞的猫 于 2024-7-1 01:02 编辑

用带 VM 的壳 + 混淆就没意思了啊…

应该是用 VMP (旧版) 或类似的壳套上,然后将这部分给虚拟化了。

去掉外层的花指令倒是不难:

import re

rJunkCode = re.compile(rb'\xE8\x00\x00\x00\x00([\s\S])+?\x8F\x44\x24\xFC')

with open('CM2.exe', 'rb') as f:
    cm2 = f.read()

def replacer(group: re.Match):
    return b'\x90' * len(group.group(0))

# .VIP5:0046A000 ; Section 5. (virtual address 0006A000)
# .VIP5:0046A000 ; Virtual size                  : 00003B4F (  15183.)
# .VIP5:0046A000 ; Section size in file          : 00003C00 (  15360.)
# .VIP5:0046A000 ; Offset to raw data for section: 00058000
# .VIP5:0046A000 ; Flags E0000000: Executable Readable Writable
# .VIP5:0046A000 ; Alignment     : default

sec5 = cm2[0x00058000:0x00058000+0x00003C00]
sec5 = rJunkCode.sub(replacer, sec5)

cm2_dejunk = bytearray(cm2)
cm2_dejunk[0x00058000:0x00058000+0x00003C00] = sec5

with open('CM2.dejunk.exe', 'wb') as f:
    f.write(cm2_dejunk)

然后就是虚拟化处理后的部分,粗略看了下至少有 32 个 Handler 要分析:

;.VIP4:00466000 off_466000      dd offset loc_463000    ; DATA XREF: sub_4030DE+6A371↓o
;                               ...
;.VIP4:0046607C                 dd offset loc_463353
; (0x0046607C + 4 - 0x00466000) / 4 = 32 个 Handler 块

第一个 Handler 处理块,凭感觉应该是拷贝 12 字节,然后继续跳到虚拟机其它地方执行:

; 463000: handler 0
    push    ebp
    mov     ebp, esp
    sub     esp, 3Ch
    mov     dword ptr [ebp-4], 0
    push    0x466404
    push    eax
    push    ecx
    push    edx
    push    ebx
    push    ebp
    push    esi
    push    edi
    pushf
    push    0
    mov     esi, [esp+24h] ; vm_inst
    mov     ebx, [esp]
    add     esi, ebx
    mov     ebp, esp
    sub     esp, 200h
    mov     eax, esp
    add     eax, 0F0h
    cmp     ebp, eax
    jge     loc_46D3F2
    mov     eax, esp
    mov     esp, ebp
    sub     esp, 0F0h

    ; memcpy(esp, eax, 0x0C)
    push    esi
    push    edi
    push    ecx
    mov     esi, eax
    mov     edi, esp
    add     edi, 0Ch
    rep movsb
    pop     ecx
    pop     edi
    pop     esi

loc_46D3F2:
    movzx   eax, byte ptr [esi]    ; eax = dword[0x466000 + byte[esi] * 4 + ebx] + ebx
    shl     eax, 2
    lea     esi, [esi+1]           ; inc esi
    add     eax, offset off_466000 ; 跳到下一个 vm handler?
    add     eax, ebx
    mov     eax, [eax]
    add     eax, ebx
    jmp     eax

如果真要分析的话,估计得全部看一遍,分析虚拟机字节码对应的指令,然后再破解了。

因为我没对抗过 VM 虚拟机的壳,就不继续看了。

记录 VM 访问:

地址=0046D45A
模块/标签/异常=cm2.exe
状态=已禁用
反汇编=mov eax,dword ptr ds:[eax]
命中=0
摘要=暂停条件(0), 日志("eax: {eax}")

分析日志/对比,dword[466064] (即 004632B8) 在按下按钮的时候会执行(这个 Handler 应该是加载字符串)。可能刚好在判断之前,也可能已经判断完了 :)

推荐
 楼主| czyr 发表于 2024-7-1 02:34 |楼主
本帖最后由 czyr 于 2024-7-1 02:36 编辑
爱飞的猫 发表于 2024-7-1 00:51
[md]用带 VM 的壳 + 混淆就没意思了啊…

应该是用 VMP (旧版) 或类似的壳套上,然后将这部分给虚拟化了 ...

照你这样分析的话,那我防破解的目的就达到了呀。没有vm是扛不住的。vm只是第一招,第二招我这里弄了个蜜罐,一般破解的人都是从按钮事件下手,分析那个按钮事件下面的代码完全就是浪费时间,没有任何作用。当你花了大量的时间去分析完了那个按钮下面的所有代码,你会发现你得不到任何信息。核心都在线程里面,当然代码也都vm了,如果不vm的话,一个对比特征码就可以定位了不好玩,当然你会说放在线程里面不也一样吗,接下来就是第三招了,对线程进行一些特殊处理。让别人摸不着北,对于新手来说这一步就难倒一大片了,有意思的就是第三招,你去看看吧

点评

不看了,我对 VM 没经验也没兴趣… 交给有兴趣的人继续看了。  发表于 2024-7-1 05:05
头像被屏蔽
沙发
wfvw126 发表于 2024-6-30 17:11
3#
你好,再见 发表于 2024-6-30 17:57
从00404C06往下只找到一个1702556|0|1,不知道是啥
前面几个call全部跟进去看了没找到有用的信息
蹲一个大佬解密

本帖子中包含更多资源

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

x
4#
 楼主| czyr 发表于 2024-6-30 21:00 |楼主
你好,再见 发表于 2024-6-30 17:57
从00404C06往下只找到一个1702556|0|1,不知道是啥
前面几个call全部跟进去看了没找到有用的信息
蹲一个 ...

成功带偏,你看到的这里只不过是自绘信息窗口的流程而已
5#
 楼主| czyr 发表于 2024-7-1 00:07 |楼主
密码是肯定有的,长度是6位,三天无人解出就给正确密码
8#
hahaleizi123 发表于 2024-7-1 09:22
不明觉厉!!

免费评分

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

查看全部评分

9#
OPQ 发表于 2024-7-1 15:39
本帖最后由 OPQ 于 2024-7-1 17:21 编辑

我是看不懂,破解的是什么情况?还是加密的工具,就问一下

免费评分

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

查看全部评分

10#
凉游浅笔深画眉 发表于 2024-7-2 11:17
本帖最后由 凉游浅笔深画眉 于 2024-7-2 11:24 编辑

密码:119818

按钮事件里只是读取是否正确的标志,没有实际算法。

算法在线程里,每隔100毫秒读取一次编辑框内容。

到整数(编辑框_注册码.内容)==119818




上面分析都是我猜的,毕竟VM了,完全看不懂。


本帖子中包含更多资源

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

x

免费评分

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

查看全部评分

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

本版积分规则

返回列表

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

GMT+8, 2024-12-3 23:01

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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