首页
社区
课程
招聘
程序爆破成功但算法分析不出来,求救!
发表于: 2005-1-19 15:16 4538

程序爆破成功但算法分析不出来,求救!

2005-1-19 15:16
4538
看了很多教程,头都大了,却没法进步!

[软件]虚拟模式DOS小程序,只显示文本,没加壳

[工具]OD 1.10

[目的]学习

[临时结果]爆破成功,但算法分析不会

大家来试试!

[我的破解经历]

先用TRW2000、W32ASM试了好多次,因为是DOS下的程序,没有提示窗口

最后用OD装入,F2下断点在004011BC处,F9运行

在DOS窗中输入1 回车
要求输入密码
787878789  回车

回到OD,按F7/F8,跟下来发现在
004011B1   . 52             PUSH EDX                                 ; /Arg1
004011B2   . B9 08CA4200    MOV ECX,2004.0042CA08                    ; |
004011B7   . E8 B4110000    CALL 2004.00402370                       ; \2004.00402370
004011BC     8D45 AC        LEA EAX,DWORD PTR SS:[EBP-54]            ;===》F2下断点
004011BF     50             PUSH EAX
004011C0     E8 9B3F0000    CALL 2004.00405160                       ;===》转一圈,判断

在004011C0处进去判断,转出来

又经过一段算法转换

004011C5   . 83C4 04        ADD ESP,4
004011C8   . 8945 A8        MOV DWORD PTR SS:[EBP-58],EAX
004011CB   . 8B45 A8        MOV EAX,DWORD PTR SS:[EBP-58]
004011CE   . 2B45 8C        SUB EAX,DWORD PTR SS:[EBP-74]
004011D1   . 99             CDQ
004011D2   . F77D 88        IDIV DWORD PTR SS:[EBP-78]
004011D5   . 8945 A8        MOV DWORD PTR SS:[EBP-58],EAX
004011D8   . 8B45 A8        MOV EAX,DWORD PTR SS:[EBP-58]
004011DB   . 99             CDQ
004011DC   . B9 40420F00    MOV ECX,0F4240
004011E1   . F7F9           IDIV ECX
004011E3   . 8BC2           MOV EAX,EDX
004011E5   . 99             CDQ
004011E6   . B9 A0860100    MOV ECX,186A0
004011EB   . F7F9           IDIV ECX
004011ED   . 8945 D0        MOV DWORD PTR SS:[EBP-30],EAX
004011F0   . 8B45 A8        MOV EAX,DWORD PTR SS:[EBP-58]
004011F3   . 99             CDQ
004011F4   . B9 80969800    MOV ECX,989680
004011F9   . F7F9           IDIV ECX
004011FB   . 8945 CC        MOV DWORD PTR SS:[EBP-34],EAX
004011FE   . 8B45 A8        MOV EAX,DWORD PTR SS:[EBP-58]
00401201   . 99             CDQ
00401202   . B9 10270000    MOV ECX,2710
00401207   . F7F9           IDIV ECX
00401209   . 8BC2           MOV EAX,EDX
0040120B   . 99             CDQ
0040120C   . B9 E8030000    MOV ECX,3E8
00401211   . F7F9           IDIV ECX
00401213   . 8945 C8        MOV DWORD PTR SS:[EBP-38],EAX
00401216   . 8B45 A8        MOV EAX,DWORD PTR SS:[EBP-58]
00401219   . 99             CDQ
0040121A   . B9 64000000    MOV ECX,64
0040121F   . F7F9           IDIV ECX
00401221   . 8BC2           MOV EAX,EDX
00401223   . 99             CDQ
00401224   . B9 0A000000    MOV ECX,0A
00401229   . F7F9           IDIV ECX
0040122B   . 8945 C4        MOV DWORD PTR SS:[EBP-3C],EAX
0040122E   . 8B45 A8        MOV EAX,DWORD PTR SS:[EBP-58]
00401231   . 99             CDQ
00401232   . B9 80969800    MOV ECX,989680
00401237   . F7F9           IDIV ECX
00401239   . 8BC2           MOV EAX,EDX
0040123B   . 99             CDQ
0040123C   . B9 40420F00    MOV ECX,0F4240
00401241   . F7F9           IDIV ECX
00401243   . 8945 C0        MOV DWORD PTR SS:[EBP-40],EAX
00401246   . 8B45 A8        MOV EAX,DWORD PTR SS:[EBP-58]
00401249   . 99             CDQ
0040124A   . B9 A0860100    MOV ECX,186A0
0040124F   . F7F9           IDIV ECX
00401251   . 8BC2           MOV EAX,EDX
00401253   . 99             CDQ
00401254   . B9 10270000    MOV ECX,2710
00401259   . F7F9           IDIV ECX
0040125B   . 8945 B4        MOV DWORD PTR SS:[EBP-4C],EAX
0040125E   . 8B45 A8        MOV EAX,DWORD PTR SS:[EBP-58]
00401261   . 99             CDQ
00401262   . B9 E8030000    MOV ECX,3E8
00401267   . F7F9           IDIV ECX
00401269   . 8BC2           MOV EAX,EDX
0040126B   . 99             CDQ
0040126C   . B9 64000000    MOV ECX,64
00401271   . F7F9           IDIV ECX
00401273   . 8945 B8        MOV DWORD PTR SS:[EBP-48],EAX
00401276   . 8B45 A8        MOV EAX,DWORD PTR SS:[EBP-58]
00401279   . 99             CDQ
0040127A   . B9 0A000000    MOV ECX,0A
0040127F   . F7F9           IDIV ECX
00401281   . 8955 BC        MOV DWORD PTR SS:[EBP-44],EDX
00401284   . 8B55 D0        MOV EDX,DWORD PTR SS:[EBP-30]
00401287   . 69D2 E8030000  IMUL EDX,EDX,3E8
0040128D   . 8B45 CC        MOV EAX,DWORD PTR SS:[EBP-34]
00401290   . 6BC0 64        IMUL EAX,EAX,64
00401293   . 0345 C4        ADD EAX,DWORD PTR SS:[EBP-3C]
00401296   . 8B4D C8        MOV ECX,DWORD PTR SS:[EBP-38]
00401299   . 6BC9 0A        IMUL ECX,ECX,0A
0040129C   . 03C2           ADD EAX,EDX
0040129E   . 03C8           ADD ECX,EAX
004012A0   . 8B55 F0        MOV EDX,DWORD PTR SS:[EBP-10]
004012A3   . 8D8411 6CF4FFF>LEA EAX,DWORD PTR DS:[ECX+EDX-B94]
004012AA   . 8945 A4        MOV DWORD PTR SS:[EBP-5C],EAX
004012AD   . 8B4D C0        MOV ECX,DWORD PTR SS:[EBP-40]
004012B0   . 69C9 E8030000  IMUL ECX,ECX,3E8
004012B6   . 8B55 BC        MOV EDX,DWORD PTR SS:[EBP-44]
004012B9   . 6BD2 64        IMUL EDX,EDX,64
004012BC   . 0355 B4        ADD EDX,DWORD PTR SS:[EBP-4C]
004012BF   . 8B45 B8        MOV EAX,DWORD PTR SS:[EBP-48]
004012C2   . 6BC0 0A        IMUL EAX,EAX,0A
004012C5   . 03D1           ADD EDX,ECX
004012C7   . 8D8C10 6CF4FFF>LEA ECX,DWORD PTR DS:[EAX+EDX-B94]
004012CE   . 894D A0        MOV DWORD PTR SS:[EBP-60],ECX
004012D1   . 8B55 A4        MOV EDX,DWORD PTR SS:[EBP-5C]
004012D4   . 3B55 A0        CMP EDX,DWORD PTR SS:[EBP-60]     ;关键比较
004012D7   . 0F85 EB020000  JNZ 2004.004015C8                 ;关键跳,不等则跳,此处可以爆破,但无法得到正确的序号

来到了上面的关键跳处。
用爆破可以完成,能显示程序内容,但无法得到正确的序号。

因为上面输入的密码是假的,就是爆破了得到的序列号为:
200491
那是错的。

正确的输入密码为:239449359
那么得到的序号为:600251

[小结]
此程序比较特别,一是运行在虚拟模式下,没有提示窗;二是没有明码比较,仅是输入9-10位的数字,经过一系列的算法,得到比较,最后又据此数字经过算法,得到6位数的序号。整个程序仅是文字显示,此序号才是最终的完美破解。

请高手分析一下,小弟不断学习中。。。。。

=================================================
抛砖引玉,好好学习

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (11)
雪    币: 209
活跃值: (55)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
============判断相等则往下进一步显示
004012DD   . 8B45 A0        MOV EAX,DWORD PTR SS:[EBP-60]
004012E0   . 99             CDQ
004012E1   . B9 E8030000    MOV ECX,3E8
004012E6   . F7F9           IDIV ECX
004012E8   . 8945 E0        MOV DWORD PTR SS:[EBP-20],EAX
004012EB   . 8B45 A0        MOV EAX,DWORD PTR SS:[EBP-60]
004012EE   . 99             CDQ
004012EF   . B9 E8030000    MOV ECX,3E8
004012F4   . F7F9           IDIV ECX
004012F6   . 8BC2           MOV EAX,EDX
004012F8   . 99             CDQ
004012F9   . B9 64000000    MOV ECX,64
004012FE   . F7F9           IDIV ECX
00401300   . 8945 DC        MOV DWORD PTR SS:[EBP-24],EAX
00401303   . 8B45 A0        MOV EAX,DWORD PTR SS:[EBP-60]
00401306   . 99             CDQ
00401307   . B9 64000000    MOV ECX,64
0040130C   . F7F9           IDIV ECX
0040130E   . 8BC2           MOV EAX,EDX
00401310   . 99             CDQ
00401311   . B9 0A000000    MOV ECX,0A
00401316   . F7F9           IDIV ECX
00401318   . 8945 D8        MOV DWORD PTR SS:[EBP-28],EAX
0040131B   . 8B45 A0        MOV EAX,DWORD PTR SS:[EBP-60]
0040131E   . 99             CDQ
0040131F   . B9 0A000000    MOV ECX,0A
00401324   . F7F9           IDIV ECX
00401326   . 8955 D4        MOV DWORD PTR SS:[EBP-2C],EDX
---------------------------------------------------------------------(以下内容重复多次)
00401329   . 68 0F104000    PUSH 2004.0040100F
0040132E   . 68 A8854200    PUSH 2004.004285A8                       ; /Arg1 = 004285A8
00401333   . 68 28854200    PUSH 2004.00428528                       ; |/Arg1 = 00428528
00401338   . 8B55 D4        MOV EDX,DWORD PTR SS:[EBP-2C]            ; ||
0040133B   . 52             PUSH EDX                                 ; ||/Arg1        此处压入栈的,正确的是00000001
0040133C   . 8B45 D8        MOV EAX,DWORD PTR SS:[EBP-28]            ; |||
0040133F   . 50             PUSH EAX                                 ; |||/Arg1       此处压入栈的,正确的是00000005
00401340   . 8B4D DC        MOV ECX,DWORD PTR SS:[EBP-24]            ; ||||
00401343   . 51             PUSH ECX                                 ; ||||/Arg1      此处压入栈的,正确的是00000002
00401344   . 6A 00          PUSH 0                                   ; |||||/Arg1 = 00000000  此处压入栈的,00000000
00401346   . 6A 00          PUSH 0                                   ; ||||||/Arg1 = 00000000 此处压入栈的,00000000
00401348   . 8B55 E0        MOV EDX,DWORD PTR SS:[EBP-20]            ; |||||||
0040134B   . 52             PUSH EDX                                 ; |||||||/Arg1   此处压入栈的,正确的是00000006
0040134C   . 68 08854200    PUSH 2004.00428508                       ; ||||||||/Arg1 = 00428508
00401351   . B9 58CA4200    MOV ECX,2004.0042CA58                    ; |||||||||
00401356   . E8 85190000    CALL 2004.00402CE0                       ; ||||||||\2004.00402CE0
0040135B   . 8BC8           MOV ECX,EAX                              ; ||||||||
0040135D   . E8 6E080000    CALL 2004.00401BD0                       ; |||||||\2004.00401BD0
00401362   . 8BC8           MOV ECX,EAX                              ; |||||||
00401364   . E8 67080000    CALL 2004.00401BD0                       ; ||||||\2004.00401BD0
00401369   . 8BC8           MOV ECX,EAX                              ; ||||||
0040136B   . E8 60080000    CALL 2004.00401BD0                       ; |||||\2004.00401BD0
00401370   . 8BC8           MOV ECX,EAX                              ; |||||
00401372   . E8 59080000    CALL 2004.00401BD0                       ; ||||\2004.00401BD0
00401377   . 8BC8           MOV ECX,EAX                              ; ||||
00401379   . E8 52080000    CALL 2004.00401BD0                       ; |||\2004.00401BD0
0040137E   . 8BC8           MOV ECX,EAX                              ; |||
00401380   . E8 4B080000    CALL 2004.00401BD0                       ; ||\2004.00401BD0
00401385   . 8BC8           MOV ECX,EAX                              ; ||
00401387   . E8 54190000    CALL 2004.00402CE0                       ; |\2004.00402CE0
0040138C   . 8BC8           MOV ECX,EAX                              ; |
0040138E   . E8 4D190000    CALL 2004.00402CE0                       ; \2004.00402CE0
00401393   . 8BC8           MOV ECX,EAX
00401395   . E8 6BFCFFFF    CALL 2004.00401005
------------------------------------------------------------------

看到了吗?输入正确的密码,在压栈时就能看到600251

这就是所要的结果。

好古怪的程序呀!!
2005-1-19 15:18
0
雪    币: 0
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
3
这是一个股票推荐软件吧?

骗人的,我看过了,作者号称每个月更新3个版本,告诉你一个密码.

你相信一个密码可以管10天的推荐股票吗?
2005-1-19 15:27
0
雪    币: 0
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
4
004012D1   . 8B55 A4        MOV EDX,DWORD PTR SS:[EBP-5C]
004012D4   . 3B55 A0        CMP EDX,DWORD PTR SS:[EBP-60]     ;关键比较

到这里你分别看一下5c和60的值,呵呵,接着下面的,然后你再把5c的值改到60里面,再运行,看会出现什么??

哈哈哈,这个软件本来就是骗人的
2005-1-19 15:29
0
雪    币: 0
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
5
看到了吗?输入正确的密码,在压栈时就能看到600251

====
这个600251就是它所谓的推荐的股票代码!!!

而这个代码作者声称每天推荐的不一样,可是这个值是有输入的系列号经过转换以后得到的,那么

我问你

一个密码如何得出每天不同的股票号呢?
2005-1-19 15:32
0
雪    币: 313
活跃值: (440)
能力值: ( LV12,RANK:530 )
在线值:
发帖
回帖
粉丝
6
最初由 great123 发布
这是一个股票推荐软件吧?

骗人的,我看过了,作者号称每个月更新3个版本,告诉你一个密码.

你相信一个密码可以管10天的推荐股票吗?

同意,骗人的软件,我帮别人破解过,垃圾一个。。。
2005-1-19 15:44
0
雪    币: 209
活跃值: (55)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
我不做股票,我只想学其编程,当然包括破解。

楼上的破解过,能否详细指点我,谢谢!盼!
2005-1-19 15:46
0
雪    币: 209
活跃值: (55)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
让我们仅从技术上分析

004012D1   . 8B55 A4        MOV EDX,DWORD PTR SS:[EBP-5C]
004012D4   . 3B55 A0        CMP EDX,DWORD PTR SS:[EBP-60]     ;关键比较

到这里你分别看一下5c和60的值,呵呵,接着下面的,然后你再把5c的值改到60里面,再运行,看会出现什么??

===================
我知道,这样就能相等,不再转到错误提示。直接运行下去了。

但,没法得到真正的序号600251

我需要大家帮助,跟踪推断出算法。

谢谢大家,继续盼!!!!
2005-1-19 15:50
0
雪    币: 313
活跃值: (440)
能力值: ( LV12,RANK:530 )
在线值:
发帖
回帖
粉丝
9
最初由 qwert 发布
我不做股票,我只想学其编程,当然包括破解。

楼上的破解过,能否详细指点我,谢谢!盼!


具体的不是很清楚了,时间比较久
1357位换算一下,和2468换算后比较,相等就成功。。。

换算是一一对应的,,,
2005-1-19 16:08
0
雪    币: 209
活跃值: (55)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
谢谢!,再盼
2005-1-19 16:42
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
算法分析不是一天两天的事情
是需要有基础的
首先就是要汇编要过关
2005-1-19 18:04
0
雪    币: 223
活跃值: (105)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
12
先告诉我是个干什么用处的程序?
算法其实很简单,就是用你输入的密码的不同部分进行加减乘除,给出几个应该能用的密码你试一下:
10335     10336     10337     10338     10339
2005-1-19 18:50
0
游客
登录 | 注册 方可回帖
返回
//