看了很多教程,头都大了,却没法进步!
[软件]虚拟模式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期)