书生CrackMe破文---记录学习过程
本帖最后由 L4Nce 于 2014-3-10 17:41 编辑【文章标题】: 书生--破解思路
【文章作者】: 书生
【软件名称】: 新手写的CM,求践踏,侮辱,各种爆,各种追
【下载地址】: http://www.52pojie.cn/thread-240736-3-1.html
【加壳方式】: 无
【使用工具】: OD
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
拿到易语言首先想到的FF 55 FC 5F 5E按钮事件断点吧
Ctrl+B搜索FF 55 FC 5F 5E按钮事件发现一直被断下不用想了 作者加了时钟立马想到干掉时钟 Bp SetTimer 干掉时钟运行 发现点击按钮后提示空白
立马知道了 作者是在 时钟里赋值成功 或者失败的所以这里我们不干掉时钟 否则就永远不成功了0.0
呵呵
上面仅是思路 下面才是重点
我们在按钮事件上 下条件断点
!=0040142A&!=00401211
这时输入注册码 点击按钮
好断下后F7进入
00401004/.55 push ebp
00401005|.8BEC mov ebp, esp
00401007|.81EC 08000000 sub esp, 0x8
0040100D|.8965 FC mov dword ptr , esp
00401010|.68 D0814800 push 004881D0
00401015|.68 00000000 push 0x0
0040101A|.68 00000000 push 0x0
0040101F|.68 68114000 push 00401168
00401024|.68 00000000 push 0x0
00401029|.68 00000000 push 0x0
0040102E|.B8 00000000 mov eax, 0x0
00401033|.E8 08050000 call 00401540
00401038|.3965 FC cmp dword ptr , esp
0040103B|.74 0D je short 0040104A
0040103D|.68 06000000 push 0x6
00401042|.E8 F3040000 call 0040153A
00401047|.83C4 04 add esp, 0x4
0040104A|>A3 D0814800 mov dword ptr , eax
0040104F|.68 01030080 push 0x80000301
00401054|.6A 00 push 0x0
00401056|.68 C8000000 push 0xC8
0040105B|.68 01000000 push 0x1
00401060|.B8 01000000 mov eax, 0x1
00401065|.BB 508A4400 mov ebx, 00448A50
0040106A|.E8 E3040000 call 00401552
0040106F|.83C4 10 add esp, 0x10
00401072|.68 05000080 push 0x80000005
00401077|.6A 00 push 0x0
00401079|.A1 D4814800 mov eax, dword ptr
0040107E|.85C0 test eax, eax
00401080 75 05 jnz short 00401087
00401082|.B8 FCAC4600 mov eax, 0046ACFC
00401087|>50 push eax
00401088|.68 01000000 push 0x1
0040108D|.BB C0164000 mov ebx, 004016C0
00401092|.E8 B5040000 call 0040154C
00401097|.83C4 10 add esp, 0x10
0040109A|.8945 FC mov dword ptr , eax
0040109D|.6A 00 push 0x0
0040109F|.6A 00 push 0x0
004010A1|.6A 00 push 0x0
004010A3|.68 01030080 push 0x80000301
004010A8|.6A 00 push 0x0
004010AA|.68 00000000 push 0x0
004010AF|.68 04000080 push 0x80000004
004010B4|.6A 00 push 0x0
004010B6|.8B45 FC mov eax, dword ptr
004010B9|.85C0 test eax, eax
004010BB|.75 05 jnz short 004010C2
004010BD|.B8 04AD4600 mov eax, 0046AD04
004010C2|>50 push eax
004010C3|.68 03000000 push 0x3
004010C8|.BB F0174000 mov ebx, 004017F0
004010CD|.E8 7A040000 call 0040154C
004010D2|.83C4 28 add esp, 0x28
004010D5|.8B5D FC mov ebx, dword ptr
004010D8|.85DB test ebx, ebx
004010DA|.74 09 je short 004010E5
004010DC|.53 push ebx
004010DD|.E8 46040000 call 00401528
004010E2|.83C4 04 add esp, 0x4
004010E5|>8BE5 mov esp, ebp
004010E7|.5D pop ebp
004010E8\.C3 retn
---------------------------------------------------------------------
00401079|.A1 D4814800 mov eax, dword ptr 取常量内容给eax
0040107E|.85C0 test eax, eax比较eax
00401080 75 05 jnz short 00401087 是否跳转
00401082|.B8 FCAC4600 mov eax, 0046ACFC不跳转就赋值
00401087|>50 push eax 压入栈eax
00401088|.68 01000000 push 0x1 压入栈1
0040108D|.BB C0164000 mov ebx, 004016C0把004016C0给ebx
00401092|.E8 B5040000 call 0040154C
00401097|.83C4 10 add esp, 0x10
0040109A|.8945 FC mov dword ptr , eax 这里吧eax给ebp-0x4
0040109D|.6A 00 push 0x0
0040109F|.6A 00 push 0x0
004010A1|.6A 00 push 0x0
004010A3|.68 01030080 push 0x80000301
004010A8|.6A 00 push 0x0
004010AA|.68 00000000 push 0x0
004010AF|.68 04000080 push 0x80000004
004010B4|.6A 00 push 0x0
004010B6|.8B45 FC mov eax, dword ptr 然后又把 给eax
004010B9|.85C0 test eax, eax对比eax这里我们使用命令dd eax 然后数据窗口HEX--16位发现里面内容是:注册码不对,还需要努力然后我们往上面看eax最初的值是谁赋的 当然是0x4881D4这个常量
我们对这个常量下内存写入断点
004010BB|.75 05 jnz short 004010C2如果不跳转的话默认赋值这里是跳转的
004010BD|.B8 04AD4600 mov eax, 0046AD04赋值
内存写入断点断在
00401307|.A3 D4814800 mov dword ptr , eax
0040130C|>8BE5 mov esp, ebp
0040130E|.5D pop ebp
0040130F\.C3 retn
然后我们往上面找 注意 mov dword ptr , eax 这样的语句
00401295 /0F84 3B000000 je 004012D6
0040129B|. |B8 1BAD4600 mov eax, 0046AD1B
004012A0|. |85C0 test eax, eax
004012A2|. |74 13 je short 004012B7
004012A4|. |50 push eax
004012A5|. |8B40 04 mov eax, dword ptr
004012A8|. |83C0 08 add eax, 0x8
004012AB|. |50 push eax
004012AC|. |E8 95020000 call 00401546
004012B1|. |59 pop ecx
004012B2|. |5E pop esi
004012B3|. |8BF8 mov edi, eax
004012B5|. |F3:A4 rep movs byte ptr es:, byte ptr>
004012B7|> |50 push eax
004012B8|. |8B1D D4814800 mov ebx, dword ptr
004012BE|. |85DB test ebx, ebx
004012C0|. |74 09 je short 004012CB
004012C2|. |53 push ebx
004012C3|. |E8 60020000 call 00401528
004012C8|. |83C4 04 add esp, 0x4
004012CB|> |58 pop eax
004012CC|. |A3 D4814800 mov dword ptr , eax
004012D1|. |E9 36000000 jmp 0040130C
004012D6|> \B8 4BAD4600 mov eax, 0046AD4B
004012DB|.85C0 test eax, eax
004012DD|.74 13 je short 004012F2
004012DF|.50 push eax
004012E0|.8B40 04 mov eax, dword ptr
004012E3|.83C0 08 add eax, 0x8
004012E6|.50 push eax
004012E7|.E8 5A020000 call 00401546
004012EC|.59 pop ecx
004012ED|.5E pop esi
004012EE|.8BF8 mov edi, eax
004012F0|.F3:A4 rep movs byte ptr es:, byte ptr>
004012F2|>50 push eax
004012F3|.8B1D D4814800 mov ebx, dword ptr
004012F9|.85DB test ebx, ebx
004012FB|.74 09 je short 00401306
004012FD|.53 push ebx
004012FE|.E8 25020000 call 00401528
00401303|.83C4 04 add esp, 0x4
00401306|>58 pop eax
00401307|.A3 D4814800 mov dword ptr , eax
你会发现00401295 这条语句就是关键跳了Nop掉即可
菜鸟第一次写破文 写的不好 大大们别见笑希望在这里能找到几个一起学习的朋友一起学习研究 加好友
--------------------------------------------------------------------------------
【经验总结】
这几天的学习没白学 呵呵
--------------------------------------------------------------------------------
【版权声明】: 本文原创于书生, 转载请注明作者并保持文章的完整, 谢谢!
2014年03月10日 15:51:19
支持一下吧,加油 似乎不是很难的哟 hzg303 发表于 2014-3-10 15:56
似乎不是很难的哟
偶是菜鸟一个大神们别见笑我老忘 所以写下来 下次还能看{:1_907:} 以后出视频教程吧
页:
[1]