首页
社区
课程
招聘
[旧帖] [原创]如此简单算法,是超级软柿子,还是圈套? 0.00雪花
发表于: 2008-3-4 15:37 4653

[旧帖] [原创]如此简单算法,是超级软柿子,还是圈套? 0.00雪花

2008-3-4 15:37
4653
【文章标题】: 如此简单算法,是超级软柿子,还是圈套?
【软件名称】: XX 英语听力通5.0
【文章作者】: 海浪轻风(黄仁来)
【作者主页】: http://hi.baidu.com/beyond0769
【加壳方式】: 无
【保护方式】: 机器码→序列号
【使用工具】: PEid
【操作平台】: 盗版XP
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
      老办法,用PEid载入查壳,居然没有任何壳,Delphi编写,是程序员粗心还是过于自信?然后再OD载入运行,  输入试炼码123456789,出现错误提示“您的注册码不正确”,借此查找字符串,来到004DD93B处为关键算法过程.  发现算法居然这样……#$#(#%^%$^_)#*%)$%
  
  004DD93B   .  55            PUSH EBP
  004DD93C   .  68 15DB4D00   PUSH audio-ai.004DDB15
  004DD941   .  64:FF30       PUSH DWORD PTR FS:[EAX]
  004DD944   .  64:8920       MOV DWORD PTR FS:[EAX],ESP
  004DD947   .  8D55 F0       LEA EDX,DWORD PTR SS:[EBP-10]            ;  (初始 cpu 选择)
  004DD94A   .  8B83 14030000 MOV EAX,DWORD PTR DS:[EBX+314]
  004DD950   .  E8 BF39F7FF   CALL audio-ai.00451314                   ;  读取试炼码
  004DD955   .  8B45 F0       MOV EAX,DWORD PTR SS:[EBP-10]
  004DD958   .  8D55 F4       LEA EDX,DWORD PTR SS:[EBP-C]
  004DD95B   .  E8 E4B4F2FF   CALL audio-ai.00408E44
  004DD960   .  837D F4 00    CMP DWORD PTR SS:[EBP-C],0               ;  注册码不能为空
  004DD964   .  0F84 6B010000 JE audio-ai.004DDAD5
  004DD96A   .  33C0          XOR EAX,EAX
  004DD96C   .  55            PUSH EBP
  004DD96D   .  68 9CD94D00   PUSH audio-ai.004DD99C
  004DD972   .  64:FF30       PUSH DWORD PTR FS:[EAX]
  004DD975   .  64:8920       MOV DWORD PTR FS:[EAX],ESP
  004DD978   .  8D55 EC       LEA EDX,DWORD PTR SS:[EBP-14]
  004DD97B   .  8B83 14030000 MOV EAX,DWORD PTR DS:[EBX+314]
  004DD981   .  E8 8E39F7FF   CALL audio-ai.00451314                   ;  读取试炼码
  004DD986   .  8B45 EC       MOV EAX,DWORD PTR SS:[EBP-14]
  004DD989   .  E8 A2D2F2FF   CALL audio-ai.0040AC30                   ;  检测注册码合法性(为纯数字)
  004DD98E   .  DD5D F8       FSTP QWORD PTR SS:[EBP-8]
  004DD991   .  9B            WAIT
  004DD992   .  33C0          XOR EAX,EAX
  004DD994   .  5A            POP EDX
  004DD995   .  59            POP ECX
  004DD996   .  59            POP ECX
  004DD997   .  64:8910       MOV DWORD PTR FS:[EAX],EDX
  004DD99A   .  EB 58         JMP SHORT audio-ai.004DD9F4
  004DD99C   .^ E9 9765F2FF   JMP audio-ai.00403F38
  004DD9A1   .  6A 10         PUSH 10
  004DD9A3   .  8D45 E8       LEA EAX,DWORD PTR SS:[EBP-18]
  004DD9A6   .  50            PUSH EAX
  004DD9A7   .  B9 2CDB4D00   MOV ECX,audio-ai.004DDB2C                ;  注册码不合法。
  004DD9AC   .  BA 44DB4D00   MOV EDX,audio-ai.004DDB44                ;  127
  004DD9B1   .  B8 50DB4D00   MOV EAX,audio-ai.004DDB50                ;  messages
  004DD9B6   .  E8 A517FFFF   CALL audio-ai.004CF160
  004DD9BB   .  8B45 E8       MOV EAX,DWORD PTR SS:[EBP-18]
  004DD9BE   .  E8 B172F2FF   CALL audio-ai.00404C74
  004DD9C3   .  50            PUSH EAX
  004DD9C4   .  A1 2C314F00   MOV EAX,DWORD PTR DS:[4F312C]
  004DD9C9   .  8B00          MOV EAX,DWORD PTR DS:[EAX]
  004DD9CB   .  8B80 5C090000 MOV EAX,DWORD PTR DS:[EAX+95C]
  004DD9D1   .  E8 9E72F2FF   CALL audio-ai.00404C74
  004DD9D6   .  8BC8          MOV ECX,EAX
  004DD9D8   .  A1 44334F00   MOV EAX,DWORD PTR DS:[4F3344]
  004DD9DD   .  8B00          MOV EAX,DWORD PTR DS:[EAX]
  004DD9DF   .  5A            POP EDX
  004DD9E0   .  E8 7347F9FF   CALL audio-ai.00472158
  004DD9E5   .  E8 B668F2FF   CALL audio-ai.004042A0
  004DD9EA   .  E9 E6000000   JMP audio-ai.004DDAD5
  004DD9EF   .  E8 AC68F2FF   CALL audio-ai.004042A0
  004DD9F4   >  A1 6C314F00   MOV EAX,DWORD PTR DS:[4F316C]
  004DD9F9   .  8B00          MOV EAX,DWORD PTR DS:[EAX]               ;  EAX=机器码
  004DD9FB   .  E8 30D2F2FF   CALL audio-ai.0040AC30                   ;  把机器码转为浮点格式
  004DDA00   .  DB2D 5CDB4D00 FLD TBYTE PTR DS:[4DDB5C]                ;  DS:[004DDB5C]=8631202577 (常量1)
  004DDA06   .  DEE1          FSUBRP ST(1),ST                          ;  ST=常量1 减去 机器码常量
  004DDA08   .  D825 68DB4D00 FSUB DWORD PTR DS:[4DDB68]               ;  再减去常量3 [004DDB68]=1202.000
  004DDA0E   .  DC5D F8       FCOMP QWORD PTR SS:[EBP-8]               ;  和输入的注册码比较
  004DDA11   .  DFE0          FSTSW AX                                 ;  不相等就 over
  004DDA13   .  9E            SAHF
  004DDA14   .  75 7B         JNZ SHORT audio-ai.004DDA91
  004DDA16   .  A1 48314F00   MOV EAX,DWORD PTR DS:[4F3148]
  004DDA1B   .  C600 01       MOV BYTE PTR DS:[EAX],1
  004DDA1E   .  A1 20344F00   MOV EAX,DWORD PTR DS:[4F3420]
  004DDA23   .  C600 00       MOV BYTE PTR DS:[EAX],0
  004DDA26   .  8D55 E4       LEA EDX,DWORD PTR SS:[EBP-1C]
  004DDA29   .  8B83 14030000 MOV EAX,DWORD PTR DS:[EBX+314]
  004DDA2F   .  E8 E038F7FF   CALL audio-ai.00451314
  004DDA34   .  8B55 E4       MOV EDX,DWORD PTR SS:[EBP-1C]
  004DDA37   .  A1 38344F00   MOV EAX,DWORD PTR DS:[4F3438]
  004DDA3C   .  E8 D76DF2FF   CALL audio-ai.00404818
  004DDA41   .  6A 40         PUSH 40
  004DDA43   .  8D45 E0       LEA EAX,DWORD PTR SS:[EBP-20]
  004DDA46   .  50            PUSH EAX
  004DDA47   .  B9 74DB4D00   MOV ECX,audio-ai.004DDB74                ;  您已经成功注册,谢谢使用听力通。
  004DDA4C   .  BA A0DB4D00   MOV EDX,audio-ai.004DDBA0                ;  128
  004DDA51   .  B8 50DB4D00   MOV EAX,audio-ai.004DDB50                ;  messages
  004DDA56   .  E8 0517FFFF   CALL audio-ai.004CF160
  004DDA5B   .  8B45 E0       MOV EAX,DWORD PTR SS:[EBP-20]
  004DDA5E   .  E8 1172F2FF   CALL audio-ai.00404C74
  004DDA63   .  50            PUSH EAX
  004DDA64   .  A1 2C314F00   MOV EAX,DWORD PTR DS:[4F312C]
  004DDA69   .  8B00          MOV EAX,DWORD PTR DS:[EAX]
  004DDA6B   .  8B80 60090000 MOV EAX,DWORD PTR DS:[EAX+960]
  004DDA71   .  E8 FE71F2FF   CALL audio-ai.00404C74
  004DDA76   .  8BC8          MOV ECX,EAX
  004DDA78   .  A1 44334F00   MOV EAX,DWORD PTR DS:[4F3344]
  004DDA7D   .  8B00          MOV EAX,DWORD PTR DS:[EAX]
  004DDA7F   .  5A            POP EDX
  004DDA80   .  E8 D346F9FF   CALL audio-ai.00472158
  004DDA85   .  C783 4C020000>MOV DWORD PTR DS:[EBX+24C],1
  004DDA8F   .  EB 44         JMP SHORT audio-ai.004DDAD5
  004DDA91   >  6A 30         PUSH 30
  004DDA93   .  8D45 DC       LEA EAX,DWORD PTR SS:[EBP-24]
  004DDA96   .  50            PUSH EAX
  004DDA97   .  B9 ACDB4D00   MOV ECX,audio-ai.004DDBAC                ;  您的注册码不正确。
  004DDA9C   .  BA C8DB4D00   MOV EDX,audio-ai.004DDBC8                ;  129
  004DDAA1   .  B8 50DB4D00   MOV EAX,audio-ai.004DDB50                ;  messages
  004DDAA6   .  E8 B516FFFF   CALL audio-ai.004CF160
  004DDAAB   .  8B45 DC       MOV EAX,DWORD PTR SS:[EBP-24]
  004DDAAE   .  E8 C171F2FF   CALL audio-ai.00404C74
  004DDAB3   .  50            PUSH EAX
  004DDAB4   .  A1 2C314F00   MOV EAX,DWORD PTR DS:[4F312C]
  004DDAB9   .  8B00          MOV EAX,DWORD PTR DS:[EAX]
  004DDABB   .  8B80 64090000 MOV EAX,DWORD PTR DS:[EAX+964]
  004DDAC1   .  E8 AE71F2FF   CALL audio-ai.00404C74
  004DDAC6   .  8BC8          MOV ECX,EAX
  004DDAC8   .  A1 44334F00   MOV EAX,DWORD PTR DS:[4F3344]
  004DDACD   .  8B00          MOV EAX,DWORD PTR DS:[EAX]
  004DDACF   .  5A            POP EDX
  004DDAD0   .  E8 8346F9FF   CALL audio-ai.00472158
  004DDAD5   >  33C0          XOR EAX,EAX
  004DDAD7   .  5A            POP EDX
  004DDAD8   .  59            POP ECX
  004DDAD9   .  59            POP ECX
  004DDADA   .  64:8910       MOV DWORD PTR FS:[EAX],EDX
  004DDADD   .  68 1CDB4D00   PUSH audio-ai.004DDB1C
  004DDAE2   >  8D45 DC       LEA EAX,DWORD PTR SS:[EBP-24]
  004DDAE5   .  BA 02000000   MOV EDX,2
  004DDAEA   .  E8 F96CF2FF   CALL audio-ai.004047E8
  004DDAEF   .  8D45 E4       LEA EAX,DWORD PTR SS:[EBP-1C]
  004DDAF2   .  E8 CD6CF2FF   CALL audio-ai.004047C4
  004DDAF7   .  8D45 E8       LEA EAX,DWORD PTR SS:[EBP-18]
  004DDAFA   .  E8 C56CF2FF   CALL audio-ai.004047C4
  004DDAFF   .  8D45 EC       LEA EAX,DWORD PTR SS:[EBP-14]
  004DDB02   .  BA 02000000   MOV EDX,2
  004DDB07   .  E8 DC6CF2FF   CALL audio-ai.004047E8
  004DDB0C   .  8D45 F4       LEA EAX,DWORD PTR SS:[EBP-C]
  004DDB0F   .  E8 B06CF2FF   CALL audio-ai.004047C4
  004DDB14   .  C3            RETN
  004DDB15   .^ E9 D266F2FF   JMP audio-ai.004041EC
  004DDB1A   .^ EB C6         JMP SHORT audio-ai.004DDAE2
  004DDB1C   .  5F            POP EDI
  004DDB1D   .  5E            POP ESI
  004DDB1E   .  5B            POP EBX
  004DDB1F   .  8BE5          MOV ESP,EBP
  004DDB21   .  5D            POP EBP
  004DDB22   .  C3            RETN
  
  在偏移 004DDA00 处居然出现浮点计算过程,这可让我汗了一下,本人之前可从没有遇过涉及到浮点运算的算法,看来这样
  难了,像其中某些命令
  004DDA00   .  DB2D 5CDB4D00 FLD TBYTE PTR DS:[4DDB5C]                ;  DS:[004DDB5C]=8631202577 (常量1)
  004DDA06   .  DEE1          FSUBRP ST(1),ST                          ;  ST=常量1 减去 机器码常量
  004DDA08   .  D825 68DB4D00 FSUB DWORD PTR DS:[4DDB68]               ;  再减去常量3 [004DDB68]=1202.000
  004DDA0E   .  DC5D F8       FCOMP QWORD PTR SS:[EBP-8]               ;  和输入的注册码比较
  004DDA11   .  DFE0          FSTSW AX                                 ;  不相等就 over
  004DDA13   .  9E            SAHF
  一开始摸不着头脑,而且这就正是算法的精华处。后来在还是通过自己的猜,把它理解掉。(网上关于它的详细介绍比较少)
  结果发现算法简单处令人难以置信~~~~ -_-!!! 这到底是真是,还是在设计圈套呢??
  
  
  【算法总结】:   真正注册码 = 8631202577 - 机器码 - 1202
  【弦外之音】:   大侠们帮我留意偏移004DD9FB处的CALL,本人多次跟踪返回的结果是机器码变浮点,但有时候却不是,不知道是为什么??此外,哪位大侠能把这个软件的机器码算法过程分析出来,俺不知道在哪里断点啊 ~~~~

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

                                                       2008年03月04日 15:05:45

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (11)
雪    币: 18
活跃值: (87)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
有出现提示您的注册码不正确的窗口..你下MESSAGEBOXA的断点......下完断点你就可以自己慢慢分析了
2008-3-4 15:44
0
雪    币: 241
活跃值: (15)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
是机器码的生成过程,没有任何提示啊,不知道在哪个过程生成,怎么断点?
2008-3-4 15:51
0
雪    币: 1505
能力值: (RANK:210 )
在线值:
发帖
回帖
粉丝
4

004DD9F4 > A1 6C314F00 MOV EAX,DWORD PTR DS:[4F316C]
004DD9F9 . 8B00 MOV EAX,DWORD PTR DS:[EAX] ; EAX=机器码
004DD9FB . E8 30D2F2FF CALL audio-ai.0040AC30

4F316C处保存的是个指针,可以尝试一下在这个地址下个内存断点,试下.
2008-3-4 17:32
0
雪    币: 220
活跃值: (28)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
没错 刚看了,它的算法就是这么简单。
2008-3-4 21:02
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
转贴
用了4个月开发了一个软件---宇翔听力通,很高兴。因为小时就想成为程序员,没有为什么,就象那时有人想成为诗人一样。那时,电脑还是新鲜的东西,为486就要建一个防潮防静电的机房。对,很神秘很让人兴奋。不是恋爱,胜似恋爱。大概在96年或是97年,我有了自己的电脑---一台二手的486。虽然内存不快,硬盘不大,但我十分喜欢。那时,没有网络,软件也不多,编程的书籍基本上没有。没有老师,朋友中我的电脑水平还是算高的,虽然也是只知道电脑操作。那时也没有什么规划,总是处在找工作、失业,失业、找工作中。但我的工作顽强地向这程序开发靠近了。马马虎虎地做了十年,成就感有一点,只不过是针对十年前的我。那点成就感和现实的实际问题比起来就让人感到十分寒酸,进而有一种恍然大悟的受骗的感觉。谁骗了我?是一腔热血,但青春无悔。
这4个月的业余时间我一直在开发这款英语听力软件,碰到过问题但最终还是解决了。带着一些期盼,我把它传到了天空软件站。第二天,我看到搜索引擎中的下一条赫然显示着破解信息。4个月的梦和1天的现实。虽然有些失望,但我并不失落,认清现实并不代表理想的破灭。但年轻的朋友们进入这个领域不要太盲目,要知道这个行业的付出和得到并不那么合理。
软件破解让我认清了我的理想。
2008-3-5 10:34
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
楼上该行做软件破解吧,嘿嘿
2008-3-5 11:48
0
雪    币: 241
活跃值: (15)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
8
6楼的网友,同感!!

中国共享软件的发展之所以举步维艰,也是就是这样。软件的反盗版和反破解工作做得再细致,如果只停留在技术的层面上,总有一天,也是会给破解掉的。我们缺乏的不是技术,而是一种能够保护国产软件的制度。BillGate不曾几番因为盗版Windows要在中国讨个公道?而这么多年了,请问哪位同志是买正版的??不都是地摊上五钱一张或干脆在网上BT一下回来就用,而且用得比正版的爽。毕竟在国人眼中追棒的是:免费免费再免费,没人想掏腰包买一个本来可以不用花钱买的软件。

   期待真正有一天,国产共享软件能真正地把精力放在软件的实际功能上和技术的创新上,而不是花过多心思在防破解上。会有那么一天么??
2008-3-5 16:58
0
雪    币: 208
活跃值: (40)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
9
lz的代码我没有仔细看,不过想起以前破过的一个英文音标软件,和这个类似,也是delphi的,而且没有加壳,注册验证过程很简单。但作者放到网站上的试用版不包含那些语音文件,所以破解了也没有用,除非你拿到完整版。不过人家搞软件也不容易,如果觉得好,又不贵,就买一个吧。后来我就自己买了一个,29元。
2008-3-5 18:35
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
其实 共享软件开发加密和破解,已经是软件开发人员和软件破解人员之间的业余小游戏了。现在的软件行业和破解关系不大了。

盗版和破解也不完全一样,我们用的很多MS OFFICE,应该不是破解的吧,而是直接输入一个正版的序列号。

关键还是社会的经济发展水平和人的思想意识的进步程度。
2008-3-5 21:20
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
我也遇到浮点运算,也是个软柿子
2008-7-17 12:54
0
雪    币: 206
活跃值: (32)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
可能没有花太多的精力在加密和算法上。
2008-7-18 10:42
0
游客
登录 | 注册 方可回帖
返回
//