Subject: [HC] Directory Sorter 95 v2.1 追踪重点?= Date: Sun, 5 Apr 1998 09:34:32 +0800 From: Error Free <errfree@te.fcu.edu.tw> Organization: UnError Station To: HC Mailing List <post@hc.ml.org> Hello !!! http://www.key.net.au/~sflynn/index.html http://www.key.net.au/~sflynn/dirsort.exe 1.执行 Dir Sort v2.1 2.按 Ctrl-D ,BPX FindNextFileA 设断. 3.按 F5 後, 会被 SICE 拦下, 如下: :wc :u eip KERNEL32!FindNextFileA 022F:BFF77947 SUB EDX,EDX ; <- 被拦於此. 022F:BFF77949 PUSH BFF9E0D7 022F:BFF7794E PUSH DWORD PTR FS:[EDX] : : : 4. BD * 暂停所有断点, 开始按 F12 返回, 如下: :wc :u eip 022F:0044F804 PUSH EBP 022F:0044F805 MOV EBP,ESP : : : 022F:0044F8F9 MOV EAX,[EBP-04] 022F:0044F8FC CALL 0044F690 ; 022F:0044F901 MOV EDX,EAX ; <- 返回至此 5. 用 F10 单步执行, 慢慢分析. Sort A to G 的目录看看, 也 Soft A to G 之外的目录看看, 看看那一个 Call 不一样. 022F:0044F903 MOV EAX,[EBP-04] 022F:0044F906 MOV EAX,[EAX+000002B8] : : : 022F:0044FA73 CALL 0040322C 022F:0044FA78 MOV ECX,[EBP-0C] 022F:0044FA7B MOV EDX,[EBP-08] 022F:0044FA7E MOV EAX,[EBP-04] 022F:0044FA81 CALL 0044F3E0 ; <- 这是要害, 进入看看. : : : 022F:0044FAAE FSTP REAL8 PTR [EBP-1C] 022F:0044FAB1 WAIT 022F:0044FAB2 MOV EAX,[00452628] 022F:0044FAB7 CALL 00425A8C ; <- 当 A to G 时, 这里会跳出窗子. 022F:0044FABC CMP BYTE PTR [00451E98],00 6.以下是要害的 Routine :wc :u eip 022F:0044F3E0 PUSH EBP 022F:0044F3E1 MOV EBP,ESP : : : 022F:0044F41D MOV EAX,[EBP-0C] 022F:0044F420 MOV EAX,[EAX+08] 022F:0044F423 MOV AL,[EAX] ; 用 d eax 看看 022F:0044F425 CALL 00402928 022F:0044F42A AND EAX,000000FF ; 取 LSByte 022F:0044F42F ADD EAX,EAX ; * 2 022F:0044F431 ADD EAX,FFFFFF7F ; -128 022F:0044F436 SUB EAX,0F ; -15 022F:0044F439 JB 0044F459 022F:0044F43B MOV BYTE PTR [00451EB4],01 ; <- 这里放 1 时, 就是 A to G. 022F:0044F442 PUSH 00 : : : 6.其它的就自行去研究了哦! 7.一研究的结果, 发现在 SICE 中改没问题, 用 UEDIT 改, 执行 居然不作 Sorting !!! 8.用 BPX CreateFileA 拦拦看! 9.反正也是用 F12 返回试试看, 若如下, 那就对了! 不对再拦下一个 :wc :u eip 022F:004044C2 PUSH EAX ; <- 试试把这里设断, 看看这里的 d eax 022F:004044C3 CALL KERNEL32!CreateFileA 022F:004044C8 CMP EAX,-01 ; <- 返回至此.. : : : 9.用 F12 返回, 应会看见如下: :wc :u eip 022F:00447CE8 PUSH EBP 022F:00447CE9 MOV EBP,ESP : : : 022F:00447D42 CALL 00447ED8 022F:00447D47 MOV [EBX+34],EAX ; <- 返回至此.. 022F:00447D4A MOV EAX,[EBX+34] 022F:00447D4D CMP EAX,[EBX+30] 022F:00447D50 JZ 00447D65 022F:00447D52 CMP DWORD PTR [EBX+30],00919395 022F:00447D59 JNZ 00447D61 022F:00447D5B CMP BYTE PTR [EBX+38],00 022F:00447D5F JZ 00447D65 022F:00447D61 XOR EAX,EAX ; <- 被跳至此就没戏唱了! 022F:00447D63 JMP 00447D67 022F:00447D65 MOV AL,01 : : : ... Error Free ... -- 如欲取消订阅, 请 mailto:req@hc.ml.org , 内文写上 unsubscribe hc 即可, 谢谢.