吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 23282|回复: 23
收起左侧

[分享] 双色球中奖机破解

[复制链接]
kelvar 发表于 2009-11-11 11:04
【文章标题】: 双色球中奖机破解
【文章作者】: kelvar(老马)
【作者邮箱】: kelvar@sohu.com
【作者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:[ebp+18]
  77D50866     FF75 14              push dword ptr ss:[ebp+14]
  77D50869     FF75 10              push dword ptr ss:[ebp+10]
  77D5086C     FF75 0C              push dword ptr ss:[ebp+C]
  77D5086F     FF75 08              push dword ptr ss:[ebp+8]
  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:[77D71B20],1
  77D5081C     6A 00                push 0
  77D5081E     FF75 14              push dword ptr ss:[ebp+14]
  77D50821     FF75 10              push dword ptr ss:[ebp+10]
  77D50824     FF75 0C              push dword ptr ss:[ebp+C]
  77D50827     FF75 08              push dword ptr ss:[ebp+8]
  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:[eax],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:[ebp-18]
  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:[ebp-1C]
  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:[ebp-4],0          ; 关键比较
  0086BF9D     0F84 38020000        je unpack.0086C1DB                  ; 关键跳转  nop掉就好了。或者将38020000改为全零
  0086BFA3     8B1D 80020301        mov ebx,dword ptr ds:[1030280]
  0086BFA9     895D F0              mov dword ptr ss:[ebp-10],ebx
  
  
  破解的不完美,程序登陆的时候还是要跳出一个注册名错误对话框,但是再次点击就可以去除了。最近比较忙,就不再弄了
  。另外,这个程序即使用真正的用户名和注册码登陆貌似也要点击两次。具体的算法也不会分析。期待高手出现。分析下算法
  
--------------------------------------------------------------------------------
【经验总结】
  E语言的东西没什么好说的了,查找事件按钮,下断,跟进,找关键Call和关键跳转。
  
--------------------------------------------------------------------------------
【版权声明】: 本文原创于PYG论坛, 转载请注明作者并保持文章的完整, 谢谢!

                                                       2009年11月09日 16:04:38

免费评分

参与人数 1吾爱币 +1 收起 理由
yy9910 + 1 我很赞同!

查看全部评分

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

静水凝月 发表于 2009-11-11 12:05
原来如此
我说咋没搞下来
  0086BF8E     74 09                je short unpack.0086BF99

  0086BF90     53                   push ebx

  0086BF91     E8 1D082100          call unpack.00A7C7B3                ; 关键Call

  0086BF96     83C4 04              add esp,4

这里给忘记了。。
学习了,谢谢
『棟』 发表于 2009-11-11 12:48
海达人 发表于 2009-11-11 12:55
clarke.y 发表于 2009-11-11 14:15
学习学习,感谢楼主!!
jomin 发表于 2009-11-11 16:16
顶儿  呵呵 顶顶顶啊啊
wzj0616 发表于 2009-11-11 17:56
500万~我来啦~
幻覺 发表于 2009-11-14 23:33
极力支持原创破文。先顶一下再慢慢看。
zan2008zw 发表于 2009-11-15 11:37
好东西,在学习中
doger 发表于 2010-3-2 13:30
这么复杂,不适合菜鸟,能做个软件出来吗?
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-17 17:54

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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