PYG 5.4 Cracker 小组 课外练习7
相对简单的,呵呵..Delphi程序.猫给加了个壳.ASPack 2.12 -> Alexey Solodovnikov
大鸟请让着点小菜嘛...呵呵.
+++++++++++++++++++++++++++++
要求
1)爆破
2)追码
3)内存注册机
4)算法分析(选做)
练习的目的只在于巩固学习成果.
希望大家积极相互交流相.互讨论.
+++++++++++++++++++++++++++
逍遥兄如果来了,请将以下这个Crackme改成:
PYG 5.4 Cracker 小组 课外练习6
https://www.chinapyg.com/viewthread.php?tid=4897&extra=page%3D1
[ 本帖最后由 野猫III 于 2006-5-20 16:09 编辑 ] 猫哥,,,出CRACKME的速度真快啊,收下了,呵呵 跟出了注册码! 原帖由 晚枫 于 2006-5-20 17:07 发表
跟出了注册码!
晚枫兄弟进步神速呀! 贴个简单算法分析~~
00467893|.55 push ebp
00467894|.68 5A794600 push 0046795A
00467899|.64:FF30 push dword ptr fs:
0046789C|.64:8920 mov fs:, esp
0046789F|.8D55 FC lea edx,
004678A2|.8B83 FC020000 mov eax,
004678A8|.E8 E7BCFCFF call 00433594 ;取第一个文本框
004678AD|.837D FC 00 cmp dword ptr , 0 ;与0比较
004678B1|.74 7C je short 0046792F ;是空的就挂~~~
004678B3|.8D55 F8 lea edx,
004678B6|.8B83 FC020000 mov eax,
004678BC|.E8 D3BCFCFF call 00433594 ;在来取一次
004678C1|.8B45 F8 mov eax, ;把取到的内容放到eax中
004678C4|.E8 BFFEFFFF call 00467788 ;看看是不是数字
004678C9|.84C0 test al, al ;测试低8位
004678CB|.74 58 je short 00467925 ;是0就跳(不是数字就跳)(检查输入字符的格式)
004678CD|.8D55 F4 lea edx,
004678D0|.8B83 00030000 mov eax,
004678D6|.E8 B9BCFCFF call 00433594 ;在来取一次(取第2个文本框的内容)
004678DB|.8B45 F4 mov eax, ;把取到的内容放到eax中
004678DE|.50 push eax ;把eax压栈
004678DF|.8D55 EC lea edx,
004678E2|.8B83 FC020000 mov eax,
004678E8|.E8 A7BCFCFF call 00433594 ;在来取一次(取第1个文本框的内容)
004678ED|.8B45 EC mov eax, ;把取到的内容放到eax中
004678F0|.E8 9305FAFF call 00407E88 ;此call就是把 字符串 转成16进制码放到eax中
004678F5|.35 1DD20C05 xor eax, 50CD21D ;(这里就是唯一的算法)EAX_1=EAX XOR 0x50CD21D
004678FA|.8D55 F0 lea edx,
004678FD|.E8 4A04FAFF call 00407D4C ;把计算好的16进制值转成10进制
00467902|.8B55 F0 mov edx, ;把转好的真码放到edx中
00467905|.58 pop eax ;弹出 第2个文本框中的 假码
00467906|.E8 4DC9F9FF call 00404258 ;比较call(经典)(内存注册机)
0046790B|.74 0C je short 00467919 ;相等就成功~~
0046790D|.B8 70794600 mov eax, 00467970 ;重来撒....
00467912|.E8 A5FEFBFF call 004277BC
00467917|.EB 16 jmp short 0046792F
00467919|>B8 84794600 mov eax, 00467984 ;做对了!!!
0046791E|.E8 99FEFBFF call 004277BC
00467923|.EB 0A jmp short 0046792F
00467925|>B8 98794600 mov eax, 00467998 ;输入的数据格试错误,请检查
0046792A|.E8 8DFEFBFF call 004277BC
0046792F|>33C0 xor eax, eax
00467931|.5A pop edx
00467932|.59 pop ecx
00467933|.59 pop ecx
00467934|.64:8910 mov fs:, edx
00467937|.68 61794600 push 00467961
0046793C|>8D45 EC lea eax,
0046793F|.E8 08C5F9FF call 00403E4C
00467944|.8D45 F0 lea eax,
00467947|.E8 00C5F9FF call 00403E4C
0046794C|.8D45 F4 lea eax,
0046794F|.BA 03000000 mov edx, 3
00467954|.E8 17C5F9FF call 00403E70
00467959\.C3 retn
算法没什么好总结的:
就是把输入的用户名(要是整形的数字)转成16进制在与0x50CD21D异或结果转成10进制就是注册码
顺便来个内存注册机
yeah:victory:,看看算法! 厉害啊 ,会算法分析的都高手啊,哎...俺要好好学习喽...哎...
[ 本帖最后由 godhack 于 2006-5-20 20:14 编辑 ] 如果问我,今天有什么感受.我要说.谢谢了,猫哥,你让我不再停止不前,有人带着学,真好.
谢谢团结的PYG. 我的注册机怎么做不了,fantasy 兄看看
中断地址:467906
中断次数:1
第一字节:E8
指令长度:5
内存方式->寄存器->edx 中断地址:00467905
中断次数:1
第一字节:58
指令长度:1
内存方式->寄存器->edx
我这样做的成功了