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 即可, 谢谢.