好友
阅读权限10
听众
最后登录1970-1-1
|
小得意
发表于 2019-9-7 18:01
CM是什么?Crackme是什么?这是什么东西?楼主发的什么?
他们都是一些公开给别人尝试破解的小程序,制作 Crackme 的人可能是程序员,想测试一下自己的软件保护技术,也可能是一位 Cracker,想挑战一下其它 Cracker 的破解实力,也可能是一些正在学习破解的人,自己编一些小程序给自己破解,KeyGenMe是要求别人做出它的 keygen (序号产生器), ReverseMe 要求别人把它的算法做出逆向分析, UnpackMe 是要求别人把它成功脱壳,本版块禁止回复非技术无关水贴。
本帖最后由 小得意 于 2019-9-10 09:02 编辑
16楼兄弟成功了,但是钻了空子~我其实想让大家跟分析注册算法的。不过也算成功了。恭喜~
|||程序集源码|||
[C] 纯文本查看 复制代码 .版本 2
.支持库 EThread
.支持库 spec
.程序集 窗口程序集_启动窗口
.子程序 __启动窗口_创建完毕
start ()
' 调试输出 (进制_十到十六 (取变量地址 (ID))
x = 0
.子程序 _时钟1_周期事件
x = 解密 (#K1)
x1 = 解密 (#K1) × 8
编辑框1.内容 = “数值:” + 到文本 (x) + #换行符
.子程序 _按钮1_被单击
.局部变量 k, 整数型
' 调试输出 (进制_十到十六 (ID))
' 调试输出 (进制_十到十六 (内存.读长整数1 (进程_打开1 (进程_取自进程ID ()), 取变量数据地址 (ID))))
' 调试输出 (加密数据 (内存.读字节集 (进程_取自进程ID (), 取变量数据地址 (ID), 8), 到文本 (取变量数据地址 (ID)), 2))
' 调试输出 (解密数据 (加密数据 (内存.读字节集 (进程_取自进程ID (), 取变量数据地址 (ID), 8), 到文本 (取变量数据地址 (ID)), 2), 到文本 (取变量数据地址 (ID)), 2))
' 调试输出 (“解密” + 进制_十到十六 (字节集_到整数 (解密数据 (加密数据 (内存.读字节集 (进程_取自进程ID (), 取变量数据地址 (ID), 8), 到文本 (取变量数据地址 (ID)), 2), 到文本 (取变量数据地址 (ID)), 2))))
置随机数种子 ()
加密 (取随机数 (0, 9999), #K1)
x = 解密 (#K1)
x1 = 解密 (#K1) × 8
编辑框1.内容 = “数值:” + 到文本 (x) + #换行符
启动线程 (&XC5, , )
启动线程 (&XC4, , )
启动线程 (&子程序1, , )
.子程序 子程序1
.局部变量 k, 整数型
.局部变量 A, 整数型
.局部变量 b, 整数型
.局部变量 c, 整数型, , "99"
.判断循环首 (k < 99)
k = k + 1
调试输出 (k)
.判断循环尾 ()
b = 0
.计次循环首 (A, b)
释放内存 (c [b])
.计次循环尾 ()
b = 0
.计次循环首 (99, b)
c [b] = 申请内存 (8, 假)
调试输出 (c [b])
.计次循环尾 ()
.子程序 XC4
时钟2.时钟周期 = 900
.子程序 XC5
时钟1.时钟周期 = 500
.子程序 _时钟2_周期事件
延时 (200)
处理事件 ()
.如果真 (x1 ÷ 8 ≠ x)
结束 ()
.如果真结束
.如果真 (x = 99999)
.如果 (x1 ÷ 8 ≠ x)
结束 ()
.否则
.如果真 (x = 解密 (#K1))
_启动窗口.左边 = 0
_启动窗口.顶边 = 0
_启动窗口.宽度 = 取屏幕宽度 ()
_启动窗口.高度 = 取屏幕高度 ()
_启动窗口.底色 = #黑色
_启动窗口.按钮1.可视 = 假
_启动窗口.编辑框1.可视 = 假
时钟2.时钟周期 = 0
.如果真结束
.如果结束
.如果真结束
' 内存.写字节集 (进程_取自进程ID (), ID + K位置, 加密数据 (到字节集 (参数1), md5, 2))
|||加密部分源码|||
[C] 纯文本查看 复制代码 .版本 2
.支持库 EThread
.支持库 dp1
.支持库 spec
.程序集 JM
.子程序 start
启动线程 (&XC1, , )
.子程序 XC1
初始化 ()
_启动窗口.可视 = 真
.子程序 加密
.参数 参数1, 长整数型
.参数 K位置, 整数型
内存.写字节集 (进程_取自进程ID (), ID + K位置, 加密数据 (到字节集 (参数1), md5, 1))
调试输出 (进制_十到十六 (ID + K位置))
调试输出 (加密数据 (到字节集 (到长整数 (99999)), md5, 1))
' 加密数据 (内存.读字节集 (进程_取自进程ID (), 取变量数据地址 (ID), 8), md5, 2)
.子程序 解密, 长整数型
.参数 K位置, 整数型
返回 (字节集_到整数 (解密数据 (内存.读字节集 (进程_取自进程ID (), ID + K位置, 16), md5, 1)))
' 解密数据 (加密数据 (内存.读字节集 (进程_取自进程ID (), 取变量数据地址 (ID), 8), 到文本 (取变量数据地址 (ID)), 2), 到文本 (取变量数据地址 (ID)), 2)
.子程序 取摘要
' 取数据摘要 (内存.读字节集 (进程_取自进程ID (), kw + id, 16))
' 取数据摘要 (内存.读字节集 (进程_取自进程ID (), DEMP, 16))
' 调试输出 (取数据摘要 (内存.读字节集 (进程_取自进程ID (), ID + 8, 16)))
' 调试输出 (取数据摘要 (内存.读字节集 (进程_取自进程ID (), DEMP, 16)))
.子程序 置摘要
.参数 参数1, 长整数型
.参数 K位置, 整数型
' 内存.写字节集 (进程_取自进程ID (), DEMP, 加密数据 (到字节集 (参数1), md5, 1))
.子程序 初始化
ID = 申请内存 (120, 真)
md5 = 取数据摘要 (到字节集 (ID))
其实最主要的,是加密和解密部分~这个思路给大家一个参考吧~
PS:
是否加壳:无
编写语言:无
有无混淆:无
花指令:无
下载地址:
下载:https://www.lanzouj.com/i62psab 密码:bp9c
思路,及实现方法
1.想了多久,但是实现特别难,BUG贼多~
2.破解密码为数值更改为【99999】
3.成功后载入正确的窗口
4.采用字节集加密~
5.如果三天没人成,我会公布源代码~
6.界面图 【!=】
常规界面图
|
免费评分
-
查看全部评分
|