来个练手CM 难度一颗星
破解后成品图无任何暗装
放心奔放调试
附上文件
根据某教程,
转到到00401000,查找test edx,3
00403C52/$8B5424 04 mov edx,dword ptr ss:
00403C56|.8B4C24 08 mov ecx,dword ptr ss:
00403C5A|.85D2 test edx,edx
00403C5C|.75 0D jnz short CM.00403C6B
00403C5E|.33C0 xor eax,eax
00403C60|.85C9 test ecx,ecx
00403C62|.74 06 je short CM.00403C6A
00403C64|.8039 00 cmp byte ptr ds:,0x0
00403C67|.74 01 je short CM.00403C6A
00403C69|.48 dec eax
00403C6A|>C3 retn
00403C6B|>85C9 test ecx,ecx
00403C6D|.75 09 jnz short CM.00403C78
00403C6F|.33C0 xor eax,eax
00403C71|.803A 00 cmp byte ptr ds:,0x0
00403C74|.74 01 je short CM.00403C77
00403C76|.40 inc eax
00403C77|>C3 retn
00403C78|>F7C2 03000000 test edx,0x3
在00403C78下断,随便输入,断下,查看eax,就是密码。 看全都是爆破的,我附上一个keygen的吧
算法比较简单
侃遍天下无二人 发表于 2021-7-8 23:25
怎么连确认按钮都没有,这种该咋调试,给个思路,从入口开始就单步调试吗
断文 本改变的API就行吧 本帖最后由 侃遍天下无二人 于 2021-7-8 23:28 编辑
怎么连确认按钮都没有,这种该咋调试,给个思路,从入口开始就单步调试吗 00403D69 90 nop
00403D6A 90 nop
00403D6B 90 nop
00403D6C 90 nop
00403D6D 90 nop
00403D6E 90 nop
思路:虽然没有按钮,但是要想判断就必须获取我输入的字符,然后比较。
那么先从第一个思路开始,获取我输入的字符,最常用的就是strlen函数获取字符长长度,我猜测楼主代码可能验证了长度是否为空,以此为突破口,下上断点。
随便输入1个数字断下来了,F8多跟一会走出内层循环。
00403D3B|.50 push eax
00403D3C|.FF75 F8 push ;CM.004D9EF8
00403D3F|.E8 0EFFFFFF call CM.00403C52
这里输入的参数和未知字符串入栈,猜测可能是比较字符串是否相等
00403C52/$8B5424 04 mov edx,dword ptr ss: ;user32.77397C1D
00403C56 8B4C24 08 mov ecx,dword ptr ss: ;CM.004D9EF8
这里直接修改传递的参数,让ecx和edx都存同一个字符串,将esp+0x8都改成esp+0x4,让两个参数相等:
00403C52/$8B5424 04 mov edx,dword ptr ss: ;user32.77397C1D
00403C56 8B4C24 04 mov ecx,dword ptr ss: ;user32.77397C1D
F9运行,爆破成功,随便输入。 算法就是循环取MD5,中间穿插的取中间文本,就不分析了,还是挺简单的 侃遍天下无二人 发表于 2021-7-8 23:25
怎么连确认按钮都没有,这种该咋调试,给个思路,从入口开始就单步调试吗
GetWindowTextA 只会爆破,还是碰运气的。{:301_1008:} 本帖最后由 weikun444 于 2021-7-9 12:20 编辑
跟到这里有明码,但是这个会变的。算法不懂!{:1_909:}
这个CM里面挡住了一部分喜欢用msgbox断点的同学,这也是写这个CM的初衷,改变定式思维
在软件调试中你会发现,找不到提示文本
所以采用了,加密部分字符串和混淆视听的方式来写的CM