1. Trang chủ
  2. » Công Nghệ Thông Tin

Cracker Handbook 1.0 part 253 pdf

6 143 1

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 6
Dung lượng 85,18 KB

Nội dung

007D22E3 |> /8D45 EC /LEA EAX, [LOCAL.5] 007D22E6 |. |8BD3 |MOV EDX, EBX ; EDX = EBX (StartIndex) 007D22E8 |. |E8 0F39C3FF |CALL dumped_.00405BFC 007D22ED |. |8B55 EC |MOV EDX, [LOCAL.5] 007D22F0 |. |8D45 FC |LEA EAX, [LOCAL.1] 007D22F3 |. |E8 103AC3FF |CALL dumped_.00405D08 ; Name = Name & Char(EDX) Sau đó tăng EBX: Code: 007D22F8 |. 43 |INC EBX Zom tạm gọi đoạn code trên là nhằm fix Name.Length cho đủ Ah chars, nếu không thì lần lượt thêm kí tự có mã ASCII = 21h và cộng 1 cho kí tự kế tiếp. Và đây là Function đó Zom viết lại bằng Visual Basic .NET Code: Shared Function FixNameLength(ByVal in_strName As String, _ Optional ByVal in_byteStart4CrypName As Byte = &H21) As String Dim intIndex As Integer = in_byteStart4CrypName If in_strName.Length <= 0 Then Return "" Else Do While in_strName.Length < &HA in_strName = in_strName & Chr(intIndex) intIndex = intIndex + 1 Loop ' End If Return in_strName End Function Lý do Zom sử dụng Optional cho byteStart4CrypName (Default=21h) là vì thấy nó gán EBX = 21h. Với Optional này giả sử một trường hợp nào đó nó cũng sử dụng chính đoạn code trên nhưng thay EBX = một giá trị <> 21h thì khi đó ta cũng linh động sử dụng lại được Function trên, chỉ cần truyền Parameter giá trị cho EBX. Tiếp Code: 007D2306 |. 8D55 E8 LEA EDX, [LOCAL.6] 007D2309 |. 8B45 FC MOV EAX, [LOCAL.1] 007D230C |. E8 E38FC3FF CALL dumped_.0040B2F4 ; Name.UCase UCase Name thôi Không có gì quan trọng lắm (nhưng cũng phải nhớ code vào keyen nóa ). Code: 007D231F |. E8 DC39C3FF CALL dumped_.00405D00 ; Check Name.Length 007D2324 |. 8BF0 MOV ESI, EAX 007D2326 |. 85F6 TEST ESI, ESI 007D2328 |. 7E 5E JLE SHORT dumped_.007D2388 Ở đây có thể thấy nó check lại Name.Length của mình Nếu như TEST ESI mà xảy ra (tức Name.Length <=0) thì Jump đến Code: dumped_.007D2388 Ở Code: dumped_.007D2388 không quan trọng lắm (vì sure là ta entered User rồi đúng không ?). Nhưng để cho đủ or wởn thì ta tạm set SF = 1 để cho nó Jump đến thử xem sao ? Zom cũng nói luôn đoạn code ở đó đơn thuần chỉ là lần lượt thêm kí tự 1, 2, 3 9 rồi quay lại 1 cho đến khi User đủ 14h. Mà thôi chả sao ai rãnh viết khúc đó cũng được coi như cho đủ bộ. Zom thì lười lém nên passed. Nhưng NOTE lại luôn nhá ! ặc check lại System Time tới giờ đón mami To be continue :D hix Bị mami cấm cung hix bùn Viết tiếp Đến đâu rùi ta òh giờ mần tiếp đoạn Loop tiếp theo xem nó làm khỉ gì Code: 007D232F |> /8B45 FC /MOV EAX, [LOCAL.1] 007D2332 |. |0FB64418 FF |MOVZX EAX, BYTE PTR DS:[EAX+EBX-1] ; MOVZX EAX = Name.SubString(EBX-1,1) 007D2337 |. |8B55 0C |MOV EDX, [ARG.2] ; EDX = 1A (Const) 007D233A |. |83C2 46 |ADD EDX, 46 ; EDX = EDX + 46 007D233D |. |3BC2 |CMP EAX, EDX 007D233F |. |7E 22 |JLE SHORT dumped_.007D2363 ; If EAX (Name.SubString) <= EDX Then Jump 007D2341 |. |8B45 FC |MOV EAX, [LOCAL.1] 007D2344 |. |0FB64418 FF |MOVZX EAX, BYTE PTR DS:[EAX+EBX-1] 007D2349 |. |8D143B |LEA EDX, DWORD PTR DS:[EBX+EDI] 007D234C |. |2BC2 |SUB EAX, EDX 007D234E |. |8D55 E4 |LEA EDX, [LOCAL.7] 007D2351 |. |E8 FA9AC3FF |CALL dumped_.0040BE50 007D2356 |. |8B55 E4 |MOV EDX, [LOCAL.7] 007D2359 |. |8D45 F4 |LEA EAX, [LOCAL.3] 007D235C |. |E8 A739C3FF |CALL dumped_.00405D08 007D2361 |. |EB 20 |JMP SHORT dumped_.007D2383 007D2363 |> |8B45 FC |MOV EAX, [LOCAL.1] ; EAX = NameEncrypted 007D2366 |. |0FB64418 FF |MOVZX EAX, BYTE PTR DS:[EAX+EBX-1] ; EAX = Name.SubString(EBX-1,1) 007D236B |. |8D143B |LEA EDX, DWORD PTR DS:[EBX+EDI] ; EDX = EBX + EDI 007D236E |. |03C2 |ADD EAX, EDX ; EAX = EAX + EDX 007D2370 |. |8D55 E0 |LEA EDX, [LOCAL.8] 007D2373 |. |E8 D89AC3FF |CALL dumped_.0040BE50 ; Convert 2 HexString 007D2378 |. |8B55 E0 |MOV EDX, [LOCAL.8] 007D237B |. |8D45 F4 |LEA EAX, [LOCAL.3] 007D237E |. |E8 8539C3FF |CALL dumped_.00405D08 007D2383 |> |47 |INC EDI 007D2384 |. |43 |INC EBX 007D2385 |. |4E |DEC ESI 007D2386 |.^\75 A7 \JNZ SHORT dumped_.007D232F ; Encrytp Name Ở đây Zom xin nhắc lại 1 chút về ở đầu chỗ Select Case (mọi người còn nhớ chứ). Code: 007D275B |> \56 PUSH ESI ; Case 9 of switch 007D2677 007D275C |. 57 PUSH EDI 007D275D |. 8BCB MOV ECX, EBX 007D275F |. BA 26000000 MOV EDX, 26 007D2764 |. 8B45 FC MOV EAX, [LOCAL.1] 007D2767 |. E8 3CFBFFFF CALL dumped_.007D22A8 Xem nào Code: PUSH ESI Mà ESI ở Code: 007D266A |. BE 1A000000 MOV ESI, 1A đã gán 1A rồi. OK ? PUSH đầu tiên nghĩa là sẽ được lấy ra sau OK ? Rồi quay lại vòng Loop. Code: 007D232F |> /8B45 FC /MOV EAX, [LOCAL.1] 007D2332 |. |0FB64418 FF |MOVZX EAX, BYTE PTR DS:[EAX+EBX-1] ; MOVZX EAX = Name.SubString(EBX-1,1) 007D2337 |. |8B55 0C |MOV EDX, [ARG.2] ; EDX = 1A (Const) 007D233A |. |83C2 46 |ADD EDX, 46 ; EDX = EDX + 46 007D233D |. |3BC2 |CMP EAX, EDX 007D233F |. |7E 22 |JLE SHORT dumped_.007D2363 ; If EAX (Name.SubString) <= EDX Then Jump Đầu tiên là gán EAX là kí tự tại trong Name tại vị trí EBX-1. Code: 007D232A |. BB 01000000 MOV EBX, 1 EBX đã được khởi tạo = 1 nên có thể hiểu là vòng Loop đầu sẽ lấy kí tự đầu tiên trong Name. Tiếp gán EDX = ARG.2 nhớ rùi hén. Đối số thứ 2 tức là đối số được truyền vào thứ 1 :D tức là giá trị ESI = 1Ah OK ?? Code: 007D233A |. 83C2 46 |ADD EDX, 46 ; EDX = EDX + 46 EDX = EDX + 46h No prob tiếp. Code: 007D233D |. 3BC2 |CMP EAX, EDX 007D233F |. 7E 22 |JLE SHORT dumped_.007D2363 ; If EAX (Name.SubString) <= EDX Then Jump Nếu mã ASCII kí tự vừa lấy trong Name <= EDX thì JUMP OK Code: 007D2366 |. 0FB64418 FF |MOVZX EAX, BYTE PTR DS:[EAX+EBX-1] ; EAX = Name.SubString(EBX-1,1) No prob Lấy char thôi tương tự Code: 007D236B |. 8D143B |LEA EDX, DWORD PTR DS:[EBX+EDI] ; EDX = EBX + EDI 007D236E |. 03C2 |ADD EAX, EDX ; EAX = EAX + EDX Khúc này để ý tí hén. EDX = EBX + EDI. Mà EDI nhớ gì hun ?? Code: 007D22C1 |. 8BFA MOV EDI, EDX ; EDI = EDX (StartEDI 4 Encryption) = 26h Cái Zom NOTE lần trước á OK ? Nghĩa là EDI sẽ bằng 26h trong trường hợp này. EBX thì bằng số lần Loop để lấy Chars trong Name (khởi tạo EBX = 1). Nên EDX = EBX + EDI = 1 + 26h = 27h Code: 007D236E |. 03C2 |ADD EAX, EDX ; EAX = EAX + EDX Cộng dồn vào EAX Code: 007D2373 |. E8 D89AC3FF |CALL dumped_.0040BE50 ; Convert 2 HexString Convert giá trị đó sang kí tự mã Hex. Code: 007D237E |. E8 8539C3FF |CALL dumped_.00405D08 . Code: 00 7D275B |> 56 PUSH ESI ; Case 9 of switch 00 7D2677 00 7D275C |. 57 PUSH EDI 00 7D275D |. 8BCB MOV ECX, EBX 00 7D275F |. BA 2 600 000 0 MOV EDX, 26 00 7D2764 |. 8B45 FC MOV EAX, [LOCAL .1] . dumped_ .00 405 D08 00 7D23 61 |. |EB 20 |JMP SHORT dumped_ .00 7D2383 00 7D2363 |> |8B45 FC |MOV EAX, [LOCAL .1] ; EAX = NameEncrypted 00 7D2366 |. |0FB64 418 FF |MOVZX EAX, BYTE PTR DS:[EAX+EBX -1] ;. |CALL dumped_ .00 40BE 50 ; Convert 2 HexString 00 7D2378 |. |8B55 E0 |MOV EDX, [LOCAL.8] 00 7D237B |. |8D45 F4 |LEA EAX, [LOCAL.3] 00 7D237E |. |E8 8539C3FF |CALL dumped_ .00 405 D08 00 7D2383 |>

Ngày đăng: 03/07/2014, 17:21

TỪ KHÓA LIÊN QUAN