吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 6124|回复: 18
收起左侧

[原创] 一个简单crackme的算法分析2013.06.16

[复制链接]
Ericky 发表于 2013-6-16 22:28
本帖最后由 PoJie_小雨 于 2013-6-17 11:07 编辑

【文章标题】:一个简单crackme的算法分析  
【文章作者】: xiaoyu
【作者邮箱】: hy_xiaoyu@126.com
【下载地址】: http://pan.baidu.com/share/link?shareid=968304825&uk=892352529
【保护方式】: UPX 0.89.6 - 1.02 / 1.05 - 2.90 -> Markus & Laszlo
【使用工具】: PEiD,OllyDbg
【作者声明】: 主要记录自己的学习过程!欢迎交流学习
--------------------------------------------------------------------------------
【详细过程】
1.脱壳
首先查壳:我们用PEID v0.95版

QQ截图20130616195131.jpg

是很老的UPX 0.89.6 - 1.02 / 1.05 - 2.90 -> Markus & Laszlo
我们用ESP 定律即可脱壳
用OD自带的dump即可
OEP如下:
2.jpg
脱壳后不用修复可以运行
查下壳,发现是汇编写的,废话不多说。
我们接着破解
2.破解
将unpacked的程序用OD载入,运行起来
接着下API断点CreatDlg、WM_command、GetDlgItemTextA
找到注册码的地址的地址段
下面我们进行分析:
3.jpg
看到右边的ASCII码和2个CMP
1个CMP EAX,1
1个CMP EAX,32   2进制为50
可以确定用户名长度为1到50
继续单步走............................发现:
00402174    E8 AB050000     call <jmp.&USER32.GetDlgItemTextA>               ; 获取Serial
继续单步走、、、、
0040219A    E8 C3010000     call unpacked.00402362                           ; 序列号位数验证
这里我们进去分析一下
4.jpg


分析 看我的注视
要注意的是:都是16进制的 计算要转换
输入40为序列号。。。。继续走。。。来到:
5.jpg
注意关键CALL 下面那一条对比语句
说明这个CALL 里EAX运算值及为重要,不为1则验证失败
进去关键CALL后,我们继续分析:
6.jpg
接着继续向下来到:图中算法CALL其实就是tea算法
7.jpg
00402435    E8 62010000     call unpacked.0040259C                           ; TEA 算法
0040243A    6A 08           push 8
0040243C    FF35 947B4000   push dword ptr ds:[407B94]
00402442    FF75 0C         push dword ptr ss:[ebp+C]
00402445    E8 87000000     call unpacked.004024D1                           ; 继续跟进这个CALL  压了几个数据
0040244A    68 00400000     push 4000
0040244F    68 E8030000     push 3E8
00402454    FF35 947B4000   push dword ptr ds:[407B94]
0040245A    E8 97030000     call <jmp.&kernel32.VirtualFree>
0040245F    6A 40           push 40
00402461    68 00100000     push 1000
00402466    68 E8030000     push 3E8
0040246B    6A 00           push 0
0040246D    E8 7E030000     call <jmp.&kernel32.VirtualAlloc>
00402472    A3 987B4000     mov dword ptr ds:[407B98],eax
00402477    68 D87A4000     push unpacked.00407AD8                           ; ASCII "11111"
0040247C    E8 7B030000     call <jmp.&kernel32.lstrlen>
00402481    FF35 987B4000   push dword ptr ds:[407B98]
00402487    50              push eax
00402488    68 D87A4000     push unpacked.00407AD8                           ; ASCII "11111"
0040248D    E8 C2010000     call unpacked.00402654                           ; base64算法
00402492    6A 00           push 0
00402494    50              push eax
00402495    FF35 987B4000   push dword ptr ds:[407B98]
0040249B    E8 90000000     call unpacked.00402530                           ; 再用crc32算法
004024A0    8B55 0C         mov edx,dword ptr ss:[ebp+C]
004024A3    2902            sub dword ptr ds:[edx],eax                       ; 与TEA算法结果 比较


其实就是Serial的tea算法算出来的值“+”00402190计算出来的一个值
与Name的BASE64算法的结果再用CRC32算法算出来的结果相比较
一致则注册成功
反之失败!
最后,再用peid的插件K-analysis检测下如图:
8.jpg
最后  累死了 。。。
希望与君共勉。
最后也感谢下H老大...没来报道没删我号- -谢了!






crackme20130616.zip

135.94 KB, 下载次数: 20, 下载积分: 吾爱币 -1 CB

免费评分

参与人数 3热心值 +3 收起 理由
bansjs + 1 吾爱有你更精彩
Shark恒 + 1 期待小雨更多作品.
小雨细无声 + 1 感谢教程,很详细,给大神加分

查看全部评分

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

小雨细无声 发表于 2013-6-16 22:38
感谢教程,很详细,给大神加分,今天花了百多个冤枉爱币。
LoongKing 发表于 2013-6-16 22:38
 楼主| Ericky 发表于 2013-6-16 22:45
小雨细无声 发表于 2013-6-16 22:38
感谢教程,很详细,给大神加分,今天花了百多个冤枉爱币。

谢谢。。。。。怎么冤枉了。。。
 楼主| Ericky 发表于 2013-6-16 22:46
E_eYYF 发表于 2013-6-16 22:38
膜拜楼主,小菜现在还不会分析算法......

加油吧  先学汇编。
小雨细无声 发表于 2013-6-16 23:09
PoJie_小雨 发表于 2013-6-16 22:45
谢谢。。。。。怎么冤枉了。。。

莫提起
提起泪流满江河
 楼主| Ericky 发表于 2013-6-16 23:09
小雨细无声 发表于 2013-6-16 23:09
莫提起
提起泪流满江河

。。。加油。
头像被屏蔽
Shark恒 发表于 2013-6-16 23:18
提示: 作者被禁止或删除 内容自动屏蔽
 楼主| Ericky 发表于 2013-6-16 23:19
Shark恒 发表于 2013-6-16 23:18
论坛禁止留下QQ,已帮你修改。特此提醒。期待更多作品!

好的。谢谢。
老万 发表于 2013-6-17 06:46
学习了,谢谢分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-25 16:01

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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