我是一只小小小小小小小鸟 很想来看雪学习 虽说临时用户也能看帖子 在新人区发帖子 其他板块大多不能下载
无奈只能写出这样水平的破文 仅供和我一样菜的菜鸟观看 希望能够成为看雪的正式会员吧 如果达不到送邀请码的条件就算了 说明我水平太低了 还得继续学习 我不会放弃的
解压安装,peid查壳为:ASPack 2.12 -> Alexey Solodovnikov
很简单的壳 载入OD
005AD001 > 60 pushad //停在此处 F8单步
005AD002 E8 03000000 call hqxktv.005AD00A //寄存器ESP突显 在寄存器ESP数据窗口跟随 断点——硬件访问——word F9运行
005AD007 - E9 EB045D45 jmp 45B7D4F7
005AD00C 55 push ebp
005AD00D C3 retn
005AD00E E8 01000000 call hqxktv.005AD014
005AD013 EB 5D jmp short hqxktv.005AD072
005AD015 BB EDFFFFFF mov ebx,-13
005AD3B0 /75 08 jnz short hqxktv.005AD3BA //F9运行停在此处 F8单步到005AD3BA
005AD3B2 |B8 01000000 mov eax,1
005AD3B7 |C2 0C00 retn 0C
005AD3BA \68 F03B5100 push hqxktv.00513BF0 //F8
005AD3BF C3 retn //F8 飞向OEP
00513BF0 55 push ebp //oep 脱壳
脱壳文件运行正常 peid显示脱壳后的文件:Borland Delphi 6.0 - 7.0
随便注册下 用户名:lazyboy 注册码:111111 提示:注册完成 请重新运行程序
od载入脱壳后的文件 查找字符串
先试试爆破吧
00512D2C |. E8 DB1DEFFF CALL unpack.00404B0C ;
00512D31 |. 75 07 JNZ SHORT unpack.00512D3A
00512D33 |. C605 B0A25100>MOV BYTE PTR DS:[51A2B0],1
00512D3A |> 8BC6 MOV EAX,ESI
00512D3C |. E8 630BEFFF CALL unpack.004038A4
00512D41 |. 803D B0A25100>CMP BYTE PTR DS:[51A2B0],0
00512D48 |. /75 27 JNZ SHORT unpack.00512D71 //这里显然不会跳 jnz----jmp 跳过未注册
00512D4A |. |8D55 D4 LEA EDX,DWORD PTR SS:[EBP-2C]
00512D4D |. |A1 ACA25100 MOV EAX,DWORD PTR DS:[51A2AC]
00512D52 |. |E8 2115F3FF CALL unpack.00444278
00512D57 |. |8D45 D4 LEA EAX,DWORD PTR SS:[EBP-2C]
00512D5A |. |BA D0305100 MOV EDX,unpack.005130D0 ; - 未购买用户
00512D5F |. |E8 6C1CEFFF CALL unpack.004049D0
00512D64 |. |8B55 D4 MOV EDX,DWORD PTR SS:[EBP-2C]
00512D67 |. |A1 ACA25100 MOV EAX,DWORD PTR DS:[51A2AC]
00512D6C |. |E8 3715F3FF CALL unpack.004442A8
00512D71 |> \33D2 XOR EDX,EDX
但是这样不完美 标题还是显示 未注册版本 其实用pexpoler修改下标题就可以 功能不知道会不会少 没测试 呵呵。。。
我们来追踪注册码吧
查找字符串 找到“未购买用户” 为什么呢?因为前面注册过了 重新打开软件标题显示“环球星空网络电视 未购买用户” 显然 软件启动时读取了注册表中保存的用户名和密码 哈哈 我猜的
因为用OD查找的字符串有注册表项 打开注册表 搜索一下 果然在里面 路径是
HKEY_USERS\S-1-5-21-776561741-492894223-1417001333-500\Software\hqtv
双击未购买用户来到00512D5A 往上找到段首00512C3E F2下端 F9运行
好的成功断下来了 下面F8单步跟踪
00512C3E |. 55 PUSH EBP //这里是读取注册表 获取用户名和注册码的 F2下端吧
00512C3F |. 68 55305100 PUSH unpack.00513055
00512C44 |. 64:FF30 PUSH DWORD PTR FS:[EAX]
00512C47 |. 64:8920 MOV DWORD PTR FS:[EAX],ESP
00512C4A |. B8 C4A25100 MOV EAX,unpack.0051A2C4
00512C4F |. E8 BC1AEFFF CALL unpack.00404710
00512C54 |. 8D45 EC LEA EAX,DWORD PTR SS:[EBP-14]
00512C57 |. E8 E4F7FFFF CALL unpack.00512440
00512C5C |. 8B55 EC MOV EDX,DWORD PTR SS:[EBP-14]
00512C5F |. B8 C4A25100 MOV EAX,unpack.0051A2C4
00512C64 |. E8 FB1AEFFF CALL unpack.00404764
00512C69 |. 8D45 E8 LEA EAX,DWORD PTR SS:[EBP-18]
00512C6C |. E8 83F8FFFF CALL unpack.005124F4
00512C71 |. 8B55 E8 MOV EDX,DWORD PTR SS:[EBP-18]
00512C74 |. B8 B8A25100 MOV EAX,unpack.0051A2B8
00512C79 |. E8 E61AEFFF CALL unpack.00404764
00512C7E |. 8D45 E4 LEA EAX,DWORD PTR SS:[EBP-1C]
00512C81 |. E8 AEF9FFFF CALL unpack.00512634
00512C86 |. 8B55 E4 MOV EDX,DWORD PTR SS:[EBP-1C]
00512C89 |. B8 BCA25100 MOV EAX,unpack.0051A2BC
00512C8E |. E8 D11AEFFF CALL unpack.00404764
00512C93 |. E8 2CF2FFFF CALL unpack.00511EC4
00512C98 |. A1 B8A25100 MOV EAX,DWORD PTR DS:[51A2B8]
00512C9D |. BA 6C305100 MOV EDX,unpack.0051306C ; 220.220.220.1
00512CA2 |. E8 651EEFFF CALL unpack.00404B0C
00512CA7 |. 75 0F JNZ SHORT unpack.00512CB8
00512CA9 |. E8 1AFCFFFF CALL unpack.005128C8
00512CAE |. E8 ADF5FFFF CALL unpack.00512260
00512CB3 |. E8 C4F4FFFF CALL unpack.0051217C
00512CB8 |> C605 B0A25100>MOV BYTE PTR DS:[51A2B0],0
00512CBF |. B2 01 MOV DL,1
00512CC1 |. A1 FC6B4700 MOV EAX,DWORD PTR DS:[476BFC]
00512CC6 |. E8 3140F6FF CALL unpack.00476CFC
00512CCB |. 8BF0 MOV ESI,EAX
00512CCD |. BA 01000080 MOV EDX,80000001
00512CD2 |. 8BC6 MOV EAX,ESI
00512CD4 |. E8 C340F6FF CALL unpack.00476D9C
00512CD9 |. B1 01 MOV CL,1
00512CDB |. BA 84305100 MOV EDX,unpack.00513084 ; Software\hqtv
00512CE0 |. 8BC6 MOV EAX,ESI
00512CE2 |. E8 1941F6FF CALL unpack.00476E00
00512CE7 |. 8D4D E0 LEA ECX,DWORD PTR SS:[EBP-20]
00512CEA |. BA 9C305100 MOV EDX,unpack.0051309C ; RegUser //读取用户名
00512CEF |. 8BC6 MOV EAX,ESI
00512CF1 |. E8 D242F6FF CALL unpack.00476FC8
00512CF6 |. 8B55 E0 MOV EDX,DWORD PTR SS:[EBP-20] //把用户名lazyboy存入edx
00512CF9 |. B8 B4A25100 MOV EAX,unpack.0051A2B4
00512CFE |. E8 611AEFFF CALL unpack.00404764
00512D03 |. 8D4D DC LEA ECX,DWORD PTR SS:[EBP-24]
00512D06 |. BA AC305100 MOV EDX,unpack.005130AC ; RegNo //读取注册码
00512D0B |. 8BC6 MOV EAX,ESI
00512D0D |. E8 B642F6FF CALL unpack.00476FC8
00512D12 |. 8B45 DC MOV EAX,DWORD PTR SS:[EBP-24] //吧注册码存入eax
00512D15 |. 50 PUSH EAX
00512D16 |. 8D4D D8 LEA ECX,DWORD PTR SS:[EBP-28]
00512D19 |. BA BC305100 MOV EDX,unpack.005130BC ; hqtvChina
00512D1E |. A1 B4A25100 MOV EAX,DWORD PTR DS:[51A2B4]
00512D23 |. E8 6CB8FDFF CALL unpack.004EE594 //计算注册码的关键CALL F7进入 来到004EE594 单步向下 一直到 004EE641计算注册吗的关键循环
00512D28 |. 8B55 D8 MOV EDX,DWORD PTR SS:[EBP-28]
00512D2B |. 58 POP EAX
00512D2C |. E8 DB1DEFFF CALL unpack.00404B0C
00512D31 |. 75 07 JNZ SHORT unpack.00512D3A //真假注册码比较
00512D33 |. C605 B0A25100>MOV BYTE PTR DS:[51A2B0],1
00512D3A |> 8BC6 MOV EAX,ESI
00512D3C |. E8 630BEFFF CALL unpack.004038A4
00512D41 |. 803D B0A25100>CMP BYTE PTR DS:[51A2B0],0
00512D48 |. 75 27 JNZ SHORT unpack.00512D71
00512D4A |. 8D55 D4 LEA EDX,DWORD PTR SS:[EBP-2C]
00512D4D |. A1 ACA25100 MOV EAX,DWORD PTR DS:[51A2AC]
00512D52 |. E8 2115F3FF CALL unpack.00444278
00512D57 |. 8D45 D4 LEA EAX,DWORD PTR SS:[EBP-2C]
00512D5A |. BA D0305100 MOV EDX,unpack.005130D0 ; - 未购买用户
00512D5F |. E8 6C1CEFFF CALL unpack.004049D0
00512D2B |. 58 POP EAX ; 00B8277C //edx出现真注册码
成功获得一组注册码 用户名:lazyboy
注册码:B7F3E37F4DBA7093
注册试试
成功了
下面的是计算注册码的关键地方 由于本人很菜 没法分析具体的算法
004EE641 |. BE 08000000 |MOV ESI,8
004EE646 |. 8D5D E8 |LEA EBX,DWORD PTR SS:[EBP-18]
004EE649 |> 8D4D D0 |/LEA ECX,DWORD PTR SS:[EBP-30]
004EE64C |. 33C0 ||XOR EAX,EAX
004EE64E |. 8A03 ||MOV AL,BYTE PTR DS:[EBX]
004EE650 |. BA 02000000 ||MOV EDX,2
004EE655 |. E8 C6ACF1FF ||CALL unpack.00409320
004EE65A |. 8B55 D0 ||MOV EDX,DWORD PTR SS:[EBP-30]
004EE65D |. 8BC7 ||MOV EAX,EDI
004EE65F |. E8 6C63F1FF ||CALL unpack.004049D0
004EE664 |. 43 ||INC EBX
004EE665 |. 4E ||DEC ESI
004EE666 |.^ 75 E1 |\JNZ SHORT unpack.004EE649
004EE668 |. 8345 D8 08 |ADD DWORD PTR SS:[EBP-28],8
最后用keymake2.0做个内存注册机 如下图
虽说破解了 但是还时停留在一个较低的档次 慢慢学习吧 My dream 分析算法 写注册机
最后送给和我一样的菜鸟一句“革命尚未成功,同志仍需努力” 希望my dream will be true!
[课程]FART 脱壳王!加量不加价!FART作者讲授!