换种思维写 Smart Install Maker 5.04算法注册机
本帖最后由 zhangyun173 于 2015-10-22 15:47 编辑算法分析参考crackvip https://www.chinapyg.com/thread-78116-1-1.html
通过分析 0050B7EC是算法CALL 传入的用户名和假码
比较位置1:
0050B8D1|.8D55 C0 |lea edx, dword ptr
0050B8D4|.8B45 F8 |mov eax, dword ptr
0050B8D7 8A4418 FF mov al, byte ptr
0050B8DB B9 23000000 mov ecx, 23
0050B8E0 E8 ABF4FFFF call 0050AD90
0050B8E5 3BF0 cmp esi, eax
0050B8E7 0F94C0 |sete al
0050B8EA|.25 FF000000 |and eax, 0FF
这里比较假码在字符串位置中的位置eax与真码位置esi对比,那么在字符串中取出esi位置的值就是真码;下面我们将真码覆盖假码。
0050B8D1|.8D55 C0 |lea edx, dword ptr
0050B8D4|.8B45 F8 |mov eax, dword ptr
0050B8D7|.8A0C32 |mov cl, byte ptr ---将真码存放到cl
0050B8DA|.884C18 FF |mov byte ptr , cl ---cl中的值覆盖假码中的值
0050B8DE|.B9 23000000 |mov ecx, 23
0050B8E3|.E8 A8F4FFFF |call 0050AD90
0050B8E7 0F94C0 |sete al
0050B8EA|.25 FF000000 |and eax, 0FF
比较位置2
0050B92B 3A02 cmp al, byte ptr
改为
0050B92B|.8802 mov byte ptr , al
以下操作方式一样我直接写结果
0050B94C|.8842 01 mov byte ptr , al
0050B970|.8842 02 mov byte ptr , al
0050B995|.8842 03 mov byte ptr , al
0050B9BB|.8842 04 mov byte ptr , al
0050B9E0|.8842 18 mov byte ptr , al
0050BA05|.8842 19 mov byte ptr , al
0050BA2C|.8842 1A mov byte ptr , al
0050BA51|.8842 1B mov byte ptr , al
0050BA76|.8842 1C mov byte ptr , al
在最后我们在加上一个信息框弹出真码( edx中的就是我们的真码)
0050BA79|.6A 00 push 0 ; /Style = MB_OK|MB_APPLMODAL
0050BA7B 68 84D75000 push 0050D784 ;ASCII "Smart Install Maker"
0050BA80|.52 push edx ; |Text
0050BA81|.6A 00 push 0 ; |hOwner = NULL
0050BA83 E8 58BEEFFF call <jmp.&user32.MessageBoxA>
0050BA88|.90 nop
0050BA89|.33C0 xor eax, eax
效果图
**** Hidden Message *****
(0050D05D E8 8AE7FFFF call 0050B7EC>>
0050D05D 90 nop
0050D05E 90 nop
0050D05F 90 nop
0050D060 90 nop
0050D061 90 nop
完善了下NOP掉了启动时候调用这个函数避免没有注册码信息的时候报错,另外假码需要输入29位)
我这里不是来提供注册机的,我只是给大家分享一种方法。
另外说一下,这种方法是是介于内存注册机和算法注册机之间,
它需要你理解什么地方做了对比,这样在你写算法注册机中多一个过渡的过程。
说内存注册机更确切一些。 方法不错,比单独制作内存注册机酷 本质是内存注册机
谢谢,分享,我们论坛有你们的支持更加强大 好东西,收藏先. 虽然用不到,但是还要感谢楼主的无私奉献精神。 不错的思路,赞一个了 好想法,好创意,不错,鼓励 很详细,我想看看隐藏了什么。