-
-
无忧计算机等级考试模拟软件评分及分析读KEY盘分析[原创]
-
发表于: 2005-7-8 14:12 5178
-
无忧计算机等级考试超级模拟软件
这个其实是DOS下的程序,就是以前的无忧DOS模拟盘,本来是破解过的,但破解的不完全。发了这个希望对正在用的同志有些帮助。
我试试考三级PC,学了下汇编,拿到证书后发现考这个干什么呢?不过自己学了些东西,还不算吃亏。
cho 0209 可做cho0209.dbf的选择题
fill 0209 可做tk0209.dbf的填空题
★1.)
19:09 2005-2-1
把ping.exe中的a:和b:改为c:即可
---------
三级PC上机评分程序PING.EXE 65,626BYTES 2002-11-18 16:28
此文件未解密,要读KEY盘,我哪里有?
总结:
2528:3DF1 E81F5A CALL 9813 ;把这个CALL nop掉,就不会烦人了
2528:3DF4 59 POP CX
2528:3DF5 59 POP CX
--------------------------
拿出TR252,在BOCHS 2.1.1虚拟机里跟跟:
00003FF1: E81F5A call 000009A13 -----↓ (1)
00003FF4: 59 pop cx
00003FF5: 59 pop cx
00003FF6: 0BC0 or ax,ax
00003FF8: 7422 je 00000401C -----↓ (2)
00003FFA: 33C0 xor ax,ax
00003FFC: 50 push ax
00003FFD: B8FC0C mov ax,00CFC ;"♀?"
00004000: 50 push ax
00004001: E80F5A call 000009A13 -----↓ (3)
;就是上面这个CALL,我是记住机器码,然后在HIEW中搜索的.
00004004: 59 pop cx
00004005: 59 pop cx
00004006: 0BC0 or ax,ax
00004008: 7412 je 00000401C -----↓ (4)
;上行改为EB12,就是JMP,OK!
0000400A: B80B0D mov ax,00D0B ;"?♂"
0000400D: 50 push ax
0000400E: E80167 call 00000A712 -----↓ (5)
00004011: 59 pop cx
00004012: E80D4D call 000008D22 -----↓ (6)
-------------
但是这样,软驱里无盘,还要读,我把软驱的电源线拔掉了,结果搜索软驱都半天,还以为死机了.
用tr发现3df1读盘.
AX=0CED BX=FF6A CX=0CBF DX=000D SP=FF0E BP=FFD4 SI=FFDE DI=1DBE
DS=3331 ES=3331 SS=3331 CS=2528 IP=3DF1 o d I s Z a P c t
2518:0000 CD 20 FF 9F 00 9A F0 FE-1D F0 0B 82 61 05 4B 01 ㄔ ??.ü≡■.≡.éa.K.
2518:0010 21 04 56 01 21 04 21 04-01 01 01 00 02 FF FF FF !.V.!.!......???
2528:3DE4 0050E8 ADD [BX+SI-18],DL
2528:3DE7 F7365933 DIV [WORD 3359]
2528:3DEB C050B8ED RCL [BYTE BX+SI-48],ED
2528:3DEF 0C50 OR AL,50
2528:3DF1 E81F5A CALL 9813 ;把这个CALL nop掉,就不会烦人了
2528:3DF4 59 POP CX
2528:3DF5 59 POP CX
2528:3DF6 0BC0 OR AX,AX
2528:3DF8 7422 JE 3E1C
2528:3DFA 33C0 XOR AX,AX
2528:3DFC 50 PUSH AX
2528:3DFD B8FC0C MOV AX,0CFC
2528:3E00 50 PUSH AX
2528:3E01 E80F5A CALL 9813
2528:3E04 59 POP CX
2528:3E05 59 POP CX
Super Program TRace V2.52, by Liu TaoTao. Nov 30 1998
This is a ShareWare,please register. '?' for Help
g 3df1
========
★2.)
11:09 2004-12-14
cho.exe 选择题程序,按F5评析时,仍会检查a盘,直接退出.
总结:
0000C6F4: 7530 jne 00000C726;这里直接跳到c722,不读盘
0000C6F6: 6A00 push 000
-------------
tr载入,按f10单步一直跟到CALL,然后进入再跟,好麻烦,终于到了.
g 13a两次
g 5827
g 5857 call
g 35bc 这个断点,tr载入,直接go 35bc,然后go,程序运行再按F5,就会断在35BC
5470:35bc 9a113bfc4c call far 4cfc:3b11
:35c1 83c406 add sp,06
;35c4 0bc0 or ax,ax
:35c6 741a je 35e2 ;这里直接跳走即可
:35c8 6a00 push 00
:35ca 1e push ds
:35cb 688c4e push 4e8c
-------
跟进4cfc:3b11
到:
4CFC:3B24 0E PUSH CS
3B25 E8C600 CALL 3BEE ;这个call读盘,但有多处调用
3B28 83C406 ADD SP,06
3B2B 8BD0 MOV DX,AX
------
跟进4cfc:3b25 ;这个call有多次调用,运行程序打开文件时也会用到,不可在这里nop
到:
4cfc:3c00 c55606 lds dx,[bp+0006]
3c03 cd21 int 21 ;get or set file attributes
;发现按F5会检查a盘或b盘的install.exe
--------------
关键代码5470:35bc附近的代码.
5470:3590 76FE JBE 3590
5470:3592 EB0E JMP 35A2
5470:3594 EB15 JMP 35AB
5470:3596 837EFEFF CMP [WORD BP-02],-01
5470:359A 7504 JNE 35A0
5470:359C EBCD JMP 356B
5470:359E EB0B JMP 35AB
5470:35A0 6A01 PUSH 01
5470:35A2 90 NOP
5470:35A3 0E PUSH CS
5470:35A4 E86E14 CALL 4A15
5470:35A7 59 POP CX
5470:35A8 E9010A JMP 3FAC
5470:35AB E9FE09 JMP 3FAC
5470:35AE 0E PUSH CS
5470:35AF E809DC CALL 11BB
...
5470:35B1 DC3C FDIVR [QWORD SI]
5470:35B3 017530 ADD [DI+0030],SI
5470:35B6 6A00 PUSH 00
5470:35B8 1E PUSH DS
5470:35B9 687E4E PUSH 4E7E
5470:35BC 9A113BFC4C CALL FAR 4CFC:3B11
5470:35C1 83C406 ADD SP,06
5470:35C4 0BC0 OR AX,AX
5470:35C6 741A JE 35E2 ;这里jmp
5470:35C8 6A00 PUSH 00
5470:35CA 1E PUSH DS
5470:35CB 688C4E PUSH 4E8C
5470:35CE 9A113BFC4C CALL FAR 4CFC:3B11
5470:35D3 83C406 ADD SP,06
5470:35D6 0BC0 OR AX,AX
5470:35D8 7408 JE 35E2
5470:35DA 6A00 PUSH 00
5470:35DC 9AB006FC4C CALL FAR 4CFC:06B0
5470:35E1 59 POP CX
5470:35E2 0E PUSH CS
5470:35E3 E808EF CALL 24EE
5470:35E6 E9C309 JMP 3FAC
5470:35E9 0E PUSH CS
5470:35EA E8CEDB CALL 11BB
5470:35ED 0AC0 OR AL,AL
5470:35EF 7503 JNE 35F4
5470:35F1 E9B809 JMP 3FAC
5470:35F4 6A00 PUSH 00
5470:35F6 1E PUSH DS
5470:35F7 689A4E PUSH 4E9A
5470:35FA 9A113BFC4C CALL FAR 4CFC:3B11
5470:35FF 83C406 ADD SP,06
5470:3602 0BC0 OR AX,AX
5470:3604 741A JE 3620
5470:3606 6A00 PUSH 00
5470:3608 1E PUSH DS
5470:3609 68A84E PUSH 4EA8
5470:360C 9A113BFC4C CALL FAR 4CFC:3B11
5470:3611 83C406 ADD SP,06
5470:3614 0BC0 OR AX,AX
5470:3616 7408 JE 3620
5470:3618 6A00 PUSH 00
5470:361A 9AB006FC4C CALL FAR 4CFC:06B0
--------
由于直接搜索5470:35C6处的代码找不到,所以,要搜索其附近的代码,这里搜索3590-3596的代码
在hiew搜到这里
0000C6E3: 0E push cs
0000C6E4: E86E14 call 00000DB55
0000C6E7: 59 pop cx
0000C6E8: E9010A jmp 00000D0EC
0000C6EB: E9FE09 jmp 00000D0EC -----↓ (1)
0000C6EE: 0E push cs
0000C6EF: E809DC call 00000A2FB -----↑ (2)
0000C6F2: 3C01 cmp al,001 ;"?"
0000C6F4: 7530 jne 00000C726;这里直接跳到c722,不读盘
0000C6F6: 6A00 push 000
0000C6F8: 1E push ds
0000C6F9: 687E4E push 04E7E ;"N~"
0000C6FC: 9A113B0000 call 00000:03B11 -----↑ (4)
0000C701: 83C406 add sp,006 ;"?"
0000C704: 0BC0 or ax,ax
0000C706: 741A je 00000C722 ;则就是那个关键跳转
0000C708: 6A00 push 000
0000C70A: 1E push ds
0000C70B: 688C4E push 04E8C ;"N?"
0000C70E: 9A113B0000 call 00000:03B11 -----↑ (6)
0000C713: 83C406 add sp,006 ;"?"
0000C716: 0BC0 or ax,ax
0000C718: 7408 je 00000C722 -----↓ (7)
0000C71A: 6A00 push 000
0000C71C: 9AB0060000 call 00000:006B0 -----↑ (8)
改后OK!
=================
★3.)
cho.exe
按f9评分检测软驱.
总结:
0000C72F: 7503 jne 00000C734;这里直接跳到c760,不读盘
0000C731: E9B809 jmp 00000D0EC -----↓ (5)
0000C734: 6A00 push 000
---------------
跟踪方法前几步跟上面一样,省了些功夫
g 13a两次
g 5827
g 5857 这个call读盘
进去,逐步跟到:
3C6A:35CA 1E PUSH DS
3C6A:35CB 688C4E PUSH 4E8C
3C6A:35CE 9A113BF634 CALL FAR 34F6:3B11
3C6A:35D3 83C406 ADD SP,06
3C6A:35D6 0BC0 OR AX,AX
3C6A:35D8 7408 JE 35E2
3C6A:35DA 6A00 PUSH 00
3C6A:35DC 9AB006F634 CALL FAR 34F6:06B0
3C6A:35E1 59 POP CX
3C6A:35E2 0E PUSH CS
3C6A:35E3 E808EF CALL 24EE
3C6A:35E6 E9C309 JMP 3FAC
3C6A:35E9 0E PUSH CS
3C6A:35EA E8CEDB CALL 11BB
3C6A:35ED 0AC0 OR AL,AL
3C6A:35EF 7503 JNE 35F4
3C70:35F1 E9B809 JMP 3FAC
3C70:35F4 6A00 PUSH 00
3C70:35F6 1E PUSH DS
3C70:35F7 689A4E PUSH 4E9A
3C70:35FA 9A113BFC34 CALL FAR 34FC:3B11 ;这里读盘
3C70:35FF 83C406 ADD SP,06
3C70:3602 0BC0 OR AX,AX
3C70:3604 741A JE 3620 ;跳走ok
3C70:3606 6A00 PUSH 00
3C70:3608 1E PUSH DS
3C70:3609 68A84E PUSH 4EA8
3C70:360C 9A113BFC34 CALL FAR 34FC:3B11
---------
直接找该call代码找不到,可能由于dos载入动态改变了远程调用地址,搜索其附近代码,找到:
0000C722: 0E push cs
0000C723: E808EF call 00000B62E -----↑ (1)
0000C726: E9C309 jmp 00000D0EC -----↓ (2)
0000C729: 0E push cs
0000C72A: E8CEDB call 00000A2FB -----↑ (3)
0000C72D: 0AC0 or al,al
0000C72F: 7503 jne 00000C734;这里直接跳到c760,不读盘
0000C731: E9B809 jmp 00000D0EC -----↓ (5)
0000C734: 6A00 push 000
0000C736: 1E push ds
0000C737: 689A4E push 04E9A ;"Nü"
0000C73A: 9A113B0000 call 00000:03B11;这就是读盘的call
0000C73F: 83C406 add sp,006 ;"?"
0000C742: 0BC0 or ax,ax
0000C744: 741A je 00000C760 ;这里跳走OK
0000C746: 6A00 push 000
0000C748: 1E push ds
0000C749: 68A84E push 04EA8 ;"N?"
0000C74C: 9A113B0000 call 00000:03B11 -----↑ (8)
0000C751: 83C406 add sp,006 ;"?"
0000C754: 0BC0 or ax,ax
0000C756: 7408 je 00000C760 -----↓ (9)
0000C758: 6A00 push 000
★4.)
目的:ID每次都要输入准考证号:310199990001,烦!不想输,它有110套题,我还要输110多次!让它不输也可
以进入:
hiew修改:
0000FA61: 75BF jne 00000FA22 ;9090
0000FA63: 8BC7 mov ax,di
---
0000CF23: 7E0C jle 00000CF31 ;9090
0000CF25: 1E push ds
======
详细跟踪过程:
tr2.52载入,go 13a,断下,在go 13a,到如下代码:
4D8D:012A FF367100 PUSH [WORD 0071]
4D8D:012E FF366F00 PUSH [WORD 006F]
4D8D:0132 FF366D00 PUSH [WORD 006D]
4D8D:0136 FF366B00 PUSH [WORD 006B]
4D8D:013A 9A24116357 CALL FAR 5763:1124 ;出现界面
4D8D:013F 50 PUSH AX
4D8D:0140 90 NOP
4D8D:0141 0E PUSH CS
4D8D:0142 E88A05 CALL 06CF
4D8D:0145 2E8E068402 MOV ES,[CS:0284]
4D8D:014A 56 PUSH SI
4D8D:014B 57 PUSH DI
4D8D:014C BEAC0A MOV SI,0AAC
4D8D:014F BFC40A MOV DI,0AC4
4D8D:0152 E8CF00 CALL 0224
4D8D:0155 5F POP DI
---
跟入:
5763:138E 3976F6 CMP [BP-0A],SI
5763:1391 7D03 JGE 1396
5763:1393 E9F1FE JMP 1287
5763:1396 0E PUSH CS
5763:1397 E870ED CALL 010A ;出界面
5763:139A 1E PUSH DS
5763:139B 68A603 PUSH 03A6
5763:139E 9A9C0D8D4D CALL FAR 4D8D:0D9C
5763:13A3 83C404 ADD SP,04
5763:13A6 1E PUSH DS
5763:13A7 68B803 PUSH 03B8
5763:13AA 9A9C0D8D4D CALL FAR 4D8D:0D9C
5763:13AF 83C404 ADD SP,04
5763:13B2 807EF500 CMP [BYTE BP-0B],00
5763:13B6 7505 JNE 13BD
5763:13B8 9AC32F8D4D CALL FAR 4D8D:2FC3
---
再跟入:
5763:13D9 9AEA1F545A CALL FAR 5A54:1FEA
5763:13DE 83C406 ADD SP,06
5763:13E1 C746F00000 MOV [WORD BP-10],0000
5763:13E6 8A46F5 MOV AL,[BP-0B]
5763:13E9 50 PUSH AX
5763:13EA 16 PUSH SS
5763:13EB 8D46F0 LEA AX,[BP-10]
5763:13EE 50 PUSH AX
5763:13EF 16 PUSH SS
5763:13F0 8D46F8 LEA AX,[BP-08]
5763:13F3 50 PUSH AX
5763:13F4 0E PUSH CS
5763:13F5 E85FF7 CALL 0B57 ;再调用
5763:13F8 83C40A ADD SP,0A
5763:13FB 0BC0 OR AX,AX
5763:13FD 7518 JNE 1417
---
5763:13D9 9AEA1F545A CALL FAR 5A54:1FEA
5763:13DE 83C406 ADD SP,06
5763:13E1 C746F00000 MOV [WORD BP-10],0000
5763:13E6 8A46F5 MOV AL,[BP-0B]
5763:13E9 50 PUSH AX
5763:13EA 16 PUSH SS
5763:13EB 8D46F0 LEA AX,[BP-10]
5763:13EE 50 PUSH AX
5763:13EF 16 PUSH SS
5763:13F0 8D46F8 LEA AX,[BP-08]
5763:13F3 50 PUSH AX
5763:13F4 0E PUSH CS
5763:13F5 E85FF7 CALL 0B57
5763:13F8 83C40A ADD SP,0A
5763:13FB 0BC0 OR AX,AX
5763:13FD 7518 JNE 1417
5763:0B7A 9AC9061559 CALL FAR 5915:06C9
5763:0B7F C6066E0000 MOV [BYTE 006E],00
5763:0B84 C6065D0000 MOV [BYTE 005D],00
5763:0B89 C606520000 MOV [BYTE 0052],00
5763:0B8E 807E0E00 CMP [BYTE BP+000E],00
5763:0B92 751F JNE 0BB3
5763:0B94 1E PUSH DS
5763:0B95 686E00 PUSH 006E
5763:0B98 6A1E PUSH 1E
5763:0B9A 6A0C PUSH 0C
5763:0B9C 68C800 PUSH 00C8
5763:0B9F 68F000 PUSH 00F0
5763:0BA2 9AA407545A CALL FAR 5A54:07A4 ;输入准考证号的CALL
5763:0BA7 83C40C ADD SP,0C
5763:0BAA 0BC0 OR AX,AX
5763:0BAC 7505 JNE 0BB3
--
5A54:07B2 FF7610 PUSH [WORD BP+0010] ;循环开始
5A54:07B5 FF760E PUSH [WORD BP+000E]
5A54:07B8 FF760C PUSH [WORD BP+000C]
5A54:07BB 56 PUSH SI
5A54:07BC FF7608 PUSH [WORD BP+0008]
5A54:07BF FF7606 PUSH [WORD BP+0006]
5A54:07C2 90 NOP
5A54:07C3 0E PUSH CS
5A54:07C4 E83500 CALL 07FC
5A54:07C7 83C40C ADD SP,0C
5A54:07CA 8BF8 MOV DI,AX
5A54:07CC FF7610 PUSH [WORD BP+0010]
5A54:07CF FF760E PUSH [WORD BP+000E]
5A54:07D2 0E PUSH CS
5A54:07D3 E881FC CALL 0457
5A54:07D6 83C404 ADD SP,04
5A54:07D9 0BFF OR DI,DI
5A54:07DB 7504 JNE 07E1
5A54:07DD 33C0 XOR AX,AX
5A54:07DF EB16 JMP 07F7
5A54:07E1 FF7610 PUSH [WORD BP+0010]
5A54:07E4 FF760E PUSH [WORD BP+000E]
5A54:07E7 9AC05B8D4D CALL FAR 4D8D:5BC0
5A54:07EC 83C404 ADD SP,04
5A54:07EF 3BC6 CMP AX,SI
5A54:07F1 75BF JNE 07B2;循环,这里判断是否输入了准考证号
;如果NOP那么,不输入准考证号,直接回车也可继续
5A54:07F3 8BC7 MOV AX,DI
5A54:07F5 EBE8 JMP 07DF
5A54:07F7 1F POP DS
5A54:07F8 5F POP DI
5A54:07F9 5E POP SI
5A54:07FA 5D POP BP
---
575D:0B9C 68C800 PUSH 00C8
575D:0B9F 68F000 PUSH 00F0
575D:0BA2 9AA4074E5A CALL FAR 5A4E:07A4
575D:0BA7 83C40C ADD SP,0C
575D:0BAA 0BC0 OR AX,AX
575D:0BAC 7505 JNE 0BB3;如果按ESC,这里不会跳,直接退出
575D:0BAE 33C0 XOR AX,AX
575D:0BB0 E9B702 JMP 0E6A
575D:0BB3 1E PUSH DS
575D:0BB4 686E00 PUSH 006E
575D:0BB7 9A57044E5A CALL FAR 5A4E:0457
575
D:0BBC 83C404 ADD SP,04
575D:0BBF 807E0E00 CMP [BYTE BP+000E],00
575D:0BC3 7E0C JLE 0BD1 ;这里NOP可以抽题
575D:0BC5 1E PUSH DS
575D:0BC6 686E00 PUSH 006E
这个其实是DOS下的程序,就是以前的无忧DOS模拟盘,本来是破解过的,但破解的不完全。发了这个希望对正在用的同志有些帮助。
我试试考三级PC,学了下汇编,拿到证书后发现考这个干什么呢?不过自己学了些东西,还不算吃亏。
cho 0209 可做cho0209.dbf的选择题
fill 0209 可做tk0209.dbf的填空题
★1.)
19:09 2005-2-1
把ping.exe中的a:和b:改为c:即可
---------
三级PC上机评分程序PING.EXE 65,626BYTES 2002-11-18 16:28
此文件未解密,要读KEY盘,我哪里有?
总结:
2528:3DF1 E81F5A CALL 9813 ;把这个CALL nop掉,就不会烦人了
2528:3DF4 59 POP CX
2528:3DF5 59 POP CX
--------------------------
拿出TR252,在BOCHS 2.1.1虚拟机里跟跟:
00003FF1: E81F5A call 000009A13 -----↓ (1)
00003FF4: 59 pop cx
00003FF5: 59 pop cx
00003FF6: 0BC0 or ax,ax
00003FF8: 7422 je 00000401C -----↓ (2)
00003FFA: 33C0 xor ax,ax
00003FFC: 50 push ax
00003FFD: B8FC0C mov ax,00CFC ;"♀?"
00004000: 50 push ax
00004001: E80F5A call 000009A13 -----↓ (3)
;就是上面这个CALL,我是记住机器码,然后在HIEW中搜索的.
00004004: 59 pop cx
00004005: 59 pop cx
00004006: 0BC0 or ax,ax
00004008: 7412 je 00000401C -----↓ (4)
;上行改为EB12,就是JMP,OK!
0000400A: B80B0D mov ax,00D0B ;"?♂"
0000400D: 50 push ax
0000400E: E80167 call 00000A712 -----↓ (5)
00004011: 59 pop cx
00004012: E80D4D call 000008D22 -----↓ (6)
-------------
但是这样,软驱里无盘,还要读,我把软驱的电源线拔掉了,结果搜索软驱都半天,还以为死机了.
用tr发现3df1读盘.
AX=0CED BX=FF6A CX=0CBF DX=000D SP=FF0E BP=FFD4 SI=FFDE DI=1DBE
DS=3331 ES=3331 SS=3331 CS=2528 IP=3DF1 o d I s Z a P c t
2518:0000 CD 20 FF 9F 00 9A F0 FE-1D F0 0B 82 61 05 4B 01 ㄔ ??.ü≡■.≡.éa.K.
2518:0010 21 04 56 01 21 04 21 04-01 01 01 00 02 FF FF FF !.V.!.!......???
2528:3DE4 0050E8 ADD [BX+SI-18],DL
2528:3DE7 F7365933 DIV [WORD 3359]
2528:3DEB C050B8ED RCL [BYTE BX+SI-48],ED
2528:3DEF 0C50 OR AL,50
2528:3DF1 E81F5A CALL 9813 ;把这个CALL nop掉,就不会烦人了
2528:3DF4 59 POP CX
2528:3DF5 59 POP CX
2528:3DF6 0BC0 OR AX,AX
2528:3DF8 7422 JE 3E1C
2528:3DFA 33C0 XOR AX,AX
2528:3DFC 50 PUSH AX
2528:3DFD B8FC0C MOV AX,0CFC
2528:3E00 50 PUSH AX
2528:3E01 E80F5A CALL 9813
2528:3E04 59 POP CX
2528:3E05 59 POP CX
Super Program TRace V2.52, by Liu TaoTao. Nov 30 1998
This is a ShareWare,please register. '?' for Help
g 3df1
========
★2.)
11:09 2004-12-14
cho.exe 选择题程序,按F5评析时,仍会检查a盘,直接退出.
总结:
0000C6F4: 7530 jne 00000C726;这里直接跳到c722,不读盘
0000C6F6: 6A00 push 000
-------------
tr载入,按f10单步一直跟到CALL,然后进入再跟,好麻烦,终于到了.
g 13a两次
g 5827
g 5857 call
g 35bc 这个断点,tr载入,直接go 35bc,然后go,程序运行再按F5,就会断在35BC
5470:35bc 9a113bfc4c call far 4cfc:3b11
:35c1 83c406 add sp,06
;35c4 0bc0 or ax,ax
:35c6 741a je 35e2 ;这里直接跳走即可
:35c8 6a00 push 00
:35ca 1e push ds
:35cb 688c4e push 4e8c
-------
跟进4cfc:3b11
到:
4CFC:3B24 0E PUSH CS
3B25 E8C600 CALL 3BEE ;这个call读盘,但有多处调用
3B28 83C406 ADD SP,06
3B2B 8BD0 MOV DX,AX
------
跟进4cfc:3b25 ;这个call有多次调用,运行程序打开文件时也会用到,不可在这里nop
到:
4cfc:3c00 c55606 lds dx,[bp+0006]
3c03 cd21 int 21 ;get or set file attributes
;发现按F5会检查a盘或b盘的install.exe
--------------
关键代码5470:35bc附近的代码.
5470:3590 76FE JBE 3590
5470:3592 EB0E JMP 35A2
5470:3594 EB15 JMP 35AB
5470:3596 837EFEFF CMP [WORD BP-02],-01
5470:359A 7504 JNE 35A0
5470:359C EBCD JMP 356B
5470:359E EB0B JMP 35AB
5470:35A0 6A01 PUSH 01
5470:35A2 90 NOP
5470:35A3 0E PUSH CS
5470:35A4 E86E14 CALL 4A15
5470:35A7 59 POP CX
5470:35A8 E9010A JMP 3FAC
5470:35AB E9FE09 JMP 3FAC
5470:35AE 0E PUSH CS
5470:35AF E809DC CALL 11BB
...
5470:35B1 DC3C FDIVR [QWORD SI]
5470:35B3 017530 ADD [DI+0030],SI
5470:35B6 6A00 PUSH 00
5470:35B8 1E PUSH DS
5470:35B9 687E4E PUSH 4E7E
5470:35BC 9A113BFC4C CALL FAR 4CFC:3B11
5470:35C1 83C406 ADD SP,06
5470:35C4 0BC0 OR AX,AX
5470:35C6 741A JE 35E2 ;这里jmp
5470:35C8 6A00 PUSH 00
5470:35CA 1E PUSH DS
5470:35CB 688C4E PUSH 4E8C
5470:35CE 9A113BFC4C CALL FAR 4CFC:3B11
5470:35D3 83C406 ADD SP,06
5470:35D6 0BC0 OR AX,AX
5470:35D8 7408 JE 35E2
5470:35DA 6A00 PUSH 00
5470:35DC 9AB006FC4C CALL FAR 4CFC:06B0
5470:35E1 59 POP CX
5470:35E2 0E PUSH CS
5470:35E3 E808EF CALL 24EE
5470:35E6 E9C309 JMP 3FAC
5470:35E9 0E PUSH CS
5470:35EA E8CEDB CALL 11BB
5470:35ED 0AC0 OR AL,AL
5470:35EF 7503 JNE 35F4
5470:35F1 E9B809 JMP 3FAC
5470:35F4 6A00 PUSH 00
5470:35F6 1E PUSH DS
5470:35F7 689A4E PUSH 4E9A
5470:35FA 9A113BFC4C CALL FAR 4CFC:3B11
5470:35FF 83C406 ADD SP,06
5470:3602 0BC0 OR AX,AX
5470:3604 741A JE 3620
5470:3606 6A00 PUSH 00
5470:3608 1E PUSH DS
5470:3609 68A84E PUSH 4EA8
5470:360C 9A113BFC4C CALL FAR 4CFC:3B11
5470:3611 83C406 ADD SP,06
5470:3614 0BC0 OR AX,AX
5470:3616 7408 JE 3620
5470:3618 6A00 PUSH 00
5470:361A 9AB006FC4C CALL FAR 4CFC:06B0
--------
由于直接搜索5470:35C6处的代码找不到,所以,要搜索其附近的代码,这里搜索3590-3596的代码
在hiew搜到这里
0000C6E3: 0E push cs
0000C6E4: E86E14 call 00000DB55
0000C6E7: 59 pop cx
0000C6E8: E9010A jmp 00000D0EC
0000C6EB: E9FE09 jmp 00000D0EC -----↓ (1)
0000C6EE: 0E push cs
0000C6EF: E809DC call 00000A2FB -----↑ (2)
0000C6F2: 3C01 cmp al,001 ;"?"
0000C6F4: 7530 jne 00000C726;这里直接跳到c722,不读盘
0000C6F6: 6A00 push 000
0000C6F8: 1E push ds
0000C6F9: 687E4E push 04E7E ;"N~"
0000C6FC: 9A113B0000 call 00000:03B11 -----↑ (4)
0000C701: 83C406 add sp,006 ;"?"
0000C704: 0BC0 or ax,ax
0000C706: 741A je 00000C722 ;则就是那个关键跳转
0000C708: 6A00 push 000
0000C70A: 1E push ds
0000C70B: 688C4E push 04E8C ;"N?"
0000C70E: 9A113B0000 call 00000:03B11 -----↑ (6)
0000C713: 83C406 add sp,006 ;"?"
0000C716: 0BC0 or ax,ax
0000C718: 7408 je 00000C722 -----↓ (7)
0000C71A: 6A00 push 000
0000C71C: 9AB0060000 call 00000:006B0 -----↑ (8)
改后OK!
=================
★3.)
cho.exe
按f9评分检测软驱.
总结:
0000C72F: 7503 jne 00000C734;这里直接跳到c760,不读盘
0000C731: E9B809 jmp 00000D0EC -----↓ (5)
0000C734: 6A00 push 000
---------------
跟踪方法前几步跟上面一样,省了些功夫
g 13a两次
g 5827
g 5857 这个call读盘
进去,逐步跟到:
3C6A:35CA 1E PUSH DS
3C6A:35CB 688C4E PUSH 4E8C
3C6A:35CE 9A113BF634 CALL FAR 34F6:3B11
3C6A:35D3 83C406 ADD SP,06
3C6A:35D6 0BC0 OR AX,AX
3C6A:35D8 7408 JE 35E2
3C6A:35DA 6A00 PUSH 00
3C6A:35DC 9AB006F634 CALL FAR 34F6:06B0
3C6A:35E1 59 POP CX
3C6A:35E2 0E PUSH CS
3C6A:35E3 E808EF CALL 24EE
3C6A:35E6 E9C309 JMP 3FAC
3C6A:35E9 0E PUSH CS
3C6A:35EA E8CEDB CALL 11BB
3C6A:35ED 0AC0 OR AL,AL
3C6A:35EF 7503 JNE 35F4
3C70:35F1 E9B809 JMP 3FAC
3C70:35F4 6A00 PUSH 00
3C70:35F6 1E PUSH DS
3C70:35F7 689A4E PUSH 4E9A
3C70:35FA 9A113BFC34 CALL FAR 34FC:3B11 ;这里读盘
3C70:35FF 83C406 ADD SP,06
3C70:3602 0BC0 OR AX,AX
3C70:3604 741A JE 3620 ;跳走ok
3C70:3606 6A00 PUSH 00
3C70:3608 1E PUSH DS
3C70:3609 68A84E PUSH 4EA8
3C70:360C 9A113BFC34 CALL FAR 34FC:3B11
---------
直接找该call代码找不到,可能由于dos载入动态改变了远程调用地址,搜索其附近代码,找到:
0000C722: 0E push cs
0000C723: E808EF call 00000B62E -----↑ (1)
0000C726: E9C309 jmp 00000D0EC -----↓ (2)
0000C729: 0E push cs
0000C72A: E8CEDB call 00000A2FB -----↑ (3)
0000C72D: 0AC0 or al,al
0000C72F: 7503 jne 00000C734;这里直接跳到c760,不读盘
0000C731: E9B809 jmp 00000D0EC -----↓ (5)
0000C734: 6A00 push 000
0000C736: 1E push ds
0000C737: 689A4E push 04E9A ;"Nü"
0000C73A: 9A113B0000 call 00000:03B11;这就是读盘的call
0000C73F: 83C406 add sp,006 ;"?"
0000C742: 0BC0 or ax,ax
0000C744: 741A je 00000C760 ;这里跳走OK
0000C746: 6A00 push 000
0000C748: 1E push ds
0000C749: 68A84E push 04EA8 ;"N?"
0000C74C: 9A113B0000 call 00000:03B11 -----↑ (8)
0000C751: 83C406 add sp,006 ;"?"
0000C754: 0BC0 or ax,ax
0000C756: 7408 je 00000C760 -----↓ (9)
0000C758: 6A00 push 000
★4.)
目的:ID每次都要输入准考证号:310199990001,烦!不想输,它有110套题,我还要输110多次!让它不输也可
以进入:
hiew修改:
0000FA61: 75BF jne 00000FA22 ;9090
0000FA63: 8BC7 mov ax,di
---
0000CF23: 7E0C jle 00000CF31 ;9090
0000CF25: 1E push ds
======
详细跟踪过程:
tr2.52载入,go 13a,断下,在go 13a,到如下代码:
4D8D:012A FF367100 PUSH [WORD 0071]
4D8D:012E FF366F00 PUSH [WORD 006F]
4D8D:0132 FF366D00 PUSH [WORD 006D]
4D8D:0136 FF366B00 PUSH [WORD 006B]
4D8D:013A 9A24116357 CALL FAR 5763:1124 ;出现界面
4D8D:013F 50 PUSH AX
4D8D:0140 90 NOP
4D8D:0141 0E PUSH CS
4D8D:0142 E88A05 CALL 06CF
4D8D:0145 2E8E068402 MOV ES,[CS:0284]
4D8D:014A 56 PUSH SI
4D8D:014B 57 PUSH DI
4D8D:014C BEAC0A MOV SI,0AAC
4D8D:014F BFC40A MOV DI,0AC4
4D8D:0152 E8CF00 CALL 0224
4D8D:0155 5F POP DI
---
跟入:
5763:138E 3976F6 CMP [BP-0A],SI
5763:1391 7D03 JGE 1396
5763:1393 E9F1FE JMP 1287
5763:1396 0E PUSH CS
5763:1397 E870ED CALL 010A ;出界面
5763:139A 1E PUSH DS
5763:139B 68A603 PUSH 03A6
5763:139E 9A9C0D8D4D CALL FAR 4D8D:0D9C
5763:13A3 83C404 ADD SP,04
5763:13A6 1E PUSH DS
5763:13A7 68B803 PUSH 03B8
5763:13AA 9A9C0D8D4D CALL FAR 4D8D:0D9C
5763:13AF 83C404 ADD SP,04
5763:13B2 807EF500 CMP [BYTE BP-0B],00
5763:13B6 7505 JNE 13BD
5763:13B8 9AC32F8D4D CALL FAR 4D8D:2FC3
---
再跟入:
5763:13D9 9AEA1F545A CALL FAR 5A54:1FEA
5763:13DE 83C406 ADD SP,06
5763:13E1 C746F00000 MOV [WORD BP-10],0000
5763:13E6 8A46F5 MOV AL,[BP-0B]
5763:13E9 50 PUSH AX
5763:13EA 16 PUSH SS
5763:13EB 8D46F0 LEA AX,[BP-10]
5763:13EE 50 PUSH AX
5763:13EF 16 PUSH SS
5763:13F0 8D46F8 LEA AX,[BP-08]
5763:13F3 50 PUSH AX
5763:13F4 0E PUSH CS
5763:13F5 E85FF7 CALL 0B57 ;再调用
5763:13F8 83C40A ADD SP,0A
5763:13FB 0BC0 OR AX,AX
5763:13FD 7518 JNE 1417
---
5763:13D9 9AEA1F545A CALL FAR 5A54:1FEA
5763:13DE 83C406 ADD SP,06
5763:13E1 C746F00000 MOV [WORD BP-10],0000
5763:13E6 8A46F5 MOV AL,[BP-0B]
5763:13E9 50 PUSH AX
5763:13EA 16 PUSH SS
5763:13EB 8D46F0 LEA AX,[BP-10]
5763:13EE 50 PUSH AX
5763:13EF 16 PUSH SS
5763:13F0 8D46F8 LEA AX,[BP-08]
5763:13F3 50 PUSH AX
5763:13F4 0E PUSH CS
5763:13F5 E85FF7 CALL 0B57
5763:13F8 83C40A ADD SP,0A
5763:13FB 0BC0 OR AX,AX
5763:13FD 7518 JNE 1417
5763:0B7A 9AC9061559 CALL FAR 5915:06C9
5763:0B7F C6066E0000 MOV [BYTE 006E],00
5763:0B84 C6065D0000 MOV [BYTE 005D],00
5763:0B89 C606520000 MOV [BYTE 0052],00
5763:0B8E 807E0E00 CMP [BYTE BP+000E],00
5763:0B92 751F JNE 0BB3
5763:0B94 1E PUSH DS
5763:0B95 686E00 PUSH 006E
5763:0B98 6A1E PUSH 1E
5763:0B9A 6A0C PUSH 0C
5763:0B9C 68C800 PUSH 00C8
5763:0B9F 68F000 PUSH 00F0
5763:0BA2 9AA407545A CALL FAR 5A54:07A4 ;输入准考证号的CALL
5763:0BA7 83C40C ADD SP,0C
5763:0BAA 0BC0 OR AX,AX
5763:0BAC 7505 JNE 0BB3
--
5A54:07B2 FF7610 PUSH [WORD BP+0010] ;循环开始
5A54:07B5 FF760E PUSH [WORD BP+000E]
5A54:07B8 FF760C PUSH [WORD BP+000C]
5A54:07BB 56 PUSH SI
5A54:07BC FF7608 PUSH [WORD BP+0008]
5A54:07BF FF7606 PUSH [WORD BP+0006]
5A54:07C2 90 NOP
5A54:07C3 0E PUSH CS
5A54:07C4 E83500 CALL 07FC
5A54:07C7 83C40C ADD SP,0C
5A54:07CA 8BF8 MOV DI,AX
5A54:07CC FF7610 PUSH [WORD BP+0010]
5A54:07CF FF760E PUSH [WORD BP+000E]
5A54:07D2 0E PUSH CS
5A54:07D3 E881FC CALL 0457
5A54:07D6 83C404 ADD SP,04
5A54:07D9 0BFF OR DI,DI
5A54:07DB 7504 JNE 07E1
5A54:07DD 33C0 XOR AX,AX
5A54:07DF EB16 JMP 07F7
5A54:07E1 FF7610 PUSH [WORD BP+0010]
5A54:07E4 FF760E PUSH [WORD BP+000E]
5A54:07E7 9AC05B8D4D CALL FAR 4D8D:5BC0
5A54:07EC 83C404 ADD SP,04
5A54:07EF 3BC6 CMP AX,SI
5A54:07F1 75BF JNE 07B2;循环,这里判断是否输入了准考证号
;如果NOP那么,不输入准考证号,直接回车也可继续
5A54:07F3 8BC7 MOV AX,DI
5A54:07F5 EBE8 JMP 07DF
5A54:07F7 1F POP DS
5A54:07F8 5F POP DI
5A54:07F9 5E POP SI
5A54:07FA 5D POP BP
---
575D:0B9C 68C800 PUSH 00C8
575D:0B9F 68F000 PUSH 00F0
575D:0BA2 9AA4074E5A CALL FAR 5A4E:07A4
575D:0BA7 83C40C ADD SP,0C
575D:0BAA 0BC0 OR AX,AX
575D:0BAC 7505 JNE 0BB3;如果按ESC,这里不会跳,直接退出
575D:0BAE 33C0 XOR AX,AX
575D:0BB0 E9B702 JMP 0E6A
575D:0BB3 1E PUSH DS
575D:0BB4 686E00 PUSH 006E
575D:0BB7 9A57044E5A CALL FAR 5A4E:0457
575
D:0BBC 83C404 ADD SP,04
575D:0BBF 807E0E00 CMP [BYTE BP+000E],00
575D:0BC3 7E0C JLE 0BD1 ;这里NOP可以抽题
575D:0BC5 1E PUSH DS
575D:0BC6 686E00 PUSH 006E
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
赞赏
他的文章
看原图
赞赏
雪币:
留言: