kelvar 发表于 2009-11-9 16:08:17

双色球中奖机4.2版破解

【文章标题】: 双色球中奖机4.2版破解
【文章作者】: kelvar
【作者邮箱】: [email protected]
【作者QQ号】: 44232165
【软件名称】: 双色球中奖机破解
【下载地址】: 自己搜索下载
【加壳方式】: 没查出来
【保护方式】: 加壳加网络验证
【编写语言】: 易语言
【使用工具】: OD,易语言自动脱壳机
【操作平台】: windows xp3
【软件介绍】: 双色球中奖机
【作者声明】: 凑热闹~^_^,小菜鸟写文章
--------------------------------------------------------------------------------
【详细过程】
第一步还是查壳,yoda's Protector v1.02 (.dll,.ocx) -> Ashkbiz Danehk
一看就是个不好惹的主,好在有E语言的自动脱壳机,运行下。程序自动给脱好了。方便。

第二步,OD载入脱壳后的程序,停在下面的入口处。
00401000 u>/$E8 06000000      call unpack.0040100B
00401005   |.50               push eax                     ; /ExitCode
00401006   \.E8 BB010000      call <jmp.&KERNEL32.ExitProces>; \ExitProcess
0040100B   /$55               push ebp
0040100C   |.8BEC               mov ebp,esp
0040100E   |.81C4 F0FEFFFF      add esp,-110
00401014   |.E9 83000000      jmp unpack.0040109C
00401019   |.6B 72 6E 6C 6E 2E >ascii "krnln.fnr",0
00401023   |.6B 72 6E 6C 6E 2E >ascii "krnln.fne",0
E语言的入口有特定的字符串可以查找。OD载入后,就F9运行程序吧,当程序运行后,ALT+E
选中易语言的核心库krnln,双击进去。然后CTRL+B,查找FF 55 FC
查找到这个Call后F2下断。现在输入假码112233445566 和用户 kelvar名后,单击 登陆软件
程序出现登陆失败对话框,不管它,点击确定。


出现错误对话框, 点击Alt+K,然后找到上面的一个MessageBoxExA
77D5085C u>8BFF               mov edi,edi
77D5085E   55                   push ebp
77D5085F   8BEC               mov ebp,esp
77D50861   6A FF                push -1
77D50863   FF75 18            push dword ptr ss:
77D50866   FF75 14            push dword ptr ss:
77D50869   FF75 10            push dword ptr ss:
77D5086C   FF75 0C            push dword ptr ss:
77D5086F   FF75 08            push dword ptr ss:
77D50872   E8 8F5B0100          call user32.MessageBoxTimeoutA
77D50877   5D                   pop ebp
77D50878   C2 1400            retn 14
77D5087B   90                   nop
在第二个MessageBoxA上点击,然后来到代码处,下断
77D5080E   85C0               test eax,eax
77D50810   75 0A                jnz short user32.77D5081C
77D50812   C705 201BD777 010000>mov dword ptr ds:,1
77D5081C   6A 00                push 0
77D5081E   FF75 14            push dword ptr ss:
77D50821   FF75 10            push dword ptr ss:
77D50824   FF75 0C            push dword ptr ss:
77D50827   FF75 08            push dword ptr ss:
77D5082A   E8 2D000000          call user32.MessageBoxExA
77D5082F   5D                   pop ebp
77D50830   C2 1000            retn 10
77D50833   90                   nop
程序在77D5087B处断下来了,我们手动F8向下走吧。F8一步就来到了77D5082F处。继续F8

直到返回到主程序中
02C57D80   4C                   dec esp
02C57D81   0000               add byte ptr ds:,al
02C57D83   83C4 28            add esp,28
02C57D86   E9 D5010000          jmp ssqzjj.02C57F60
02C57D8B   EB 01                jmp short ssqzjj.02C57D8E
02C57D8D   7A 8B                jpe short ssqzjj.02C57D1A
02C57D8F   5D                   pop ebp
02C57D90   F8                   clc
此时观察堆栈中的数据发现,出现了假码
0012F51C   03D806D8    ASCII "112233445566"
0012F520   03D80D00    ASCII "42086A1EB5820DC80D0341CE709B675F"
0012F524   03D806A8
0012F528   0023C070
0012F52C   03D806B0
0012F530   03D806A8
0012F534   03D80D00    ASCII "42086A1EB5820DC80D0341CE709B675F"
0012F538/0012F5A0
0012F53C|02C5C937    返回到 ssqzjj.02C5C937 来自 ssqzjj.02C579DE
好了,那我们就去02C5C937处下个断点吧。
由于假码"112233445566"还在堆栈中说明处理还没有完成,我们就一直向下走吧,不用修改它的流程。

当程序运行到下面时,用户名也开始出现在堆栈中了。
02C580C5   8BE5               mov esp,ebp
02C580C7   5D                   pop ebp
02C580C8   C2 1400            retn 14
02C580CB   55                   push ebp
02C580CC   8BEC               mov ebp,esp
F8一步,发现程序在我们刚才下的02C5C937处了,好关键快到了,我们继续
0086BF6C   68 06000000          push 6
0086BF71   E8 49082100          call unpack.00A7C7BF
0086BF76   83C4 04            add esp,4
0086BF79   8B5D E8            mov ebx,dword ptr ss:
0086BF7C   85DB               test ebx,ebx                        ; 判断用户名是否为空
0086BF7E   74 09                je short unpack.0086BF89
0086BF80   53                   push ebx
0086BF81   E8 2D082100          call unpack.00A7C7B3
0086BF86   83C4 04            add esp,4
0086BF89   8B5D E4            mov ebx,dword ptr ss:
0086BF8C   85DB               test ebx,ebx                        ; 判断密码是否为空
0086BF8E   74 09                je short unpack.0086BF99
0086BF90   53                   push ebx
0086BF91   E8 1D082100          call unpack.00A7C7B3                ; 关键Call
0086BF96   83C4 04            add esp,4
0086BF99   837D FC 00         cmp dword ptr ss:,0          ; 关键比较
0086BF9D   0F84 38020000      je unpack.0086C1DB                  ; 关键跳转nop掉就好了。或者将38020000改为全零
0086BFA3   8B1D 80020301      mov ebx,dword ptr ds:
0086BFA9   895D F0            mov dword ptr ss:,ebx
破解的不完美,程序登陆的时候还是要跳出一个注册名错误对话框,但是再次点击就可以去除了。最近比较忙,就不再弄了
。另外,这个程序即使用真正的用户名和注册码登陆貌似也要点击两次。具体的算法也不会分析。期待高手出现。分析下算法

--------------------------------------------------------------------------------
【经验总结】
E语言的东西没什么好说的了,查找事件按钮,下断,跟进,找关键Call和关键跳转。

--------------------------------------------------------------------------------
【版权声明】: 本文原创于PYG论坛, 转载请注明作者并保持文章的完整, 谢谢!

                                                       2009年11月09日 16:05:02

xugk 发表于 2009-11-9 16:21:01

我来顶你了,能把主程序破解发上来谢谢

dzbbs 发表于 2009-11-9 17:01:43

感谢楼主提供!!!支持原创~

寒痕 发表于 2009-11-10 22:03:37

不错呀,支持~

xugk 发表于 2009-11-10 22:48:13

找不到e自动脱壳机,谁有上传一个吧

kelvar 发表于 2009-11-11 13:57:05

回复 5# xugk 的帖子

看雪上貌似就有这个E语言的脱壳机。去搜索下吧。

zhwh111 发表于 2009-12-6 09:01:02

能把主程序破解发上来谢谢

cunzai 发表于 2009-12-6 10:58:06

看看!好东西 !

humao3118437 发表于 2014-3-26 09:35:50

学习学习感谢分享

jiang7825 发表于 2019-10-14 03:38:31

学习中,不错
页: [1]
查看完整版本: 双色球中奖机4.2版破解