Chào các pác, với 1 số soft việc đăng ký sẽ được kiểm tra thông qua việc kết nối với registry và kiểm tra 1 số key nào đó, qua bài viết này em xin trình bày 1 phương pháp đơn giản để thị
Trang 1Finish
Chúc bạn đọc mau mắn
Toolcracking
Check Registry Key – How to break it !!!
Chào các pác, với 1 số soft việc đăng ký sẽ được kiểm tra thông qua việc kết nối với registry và kiểm tra 1 số key nào đó, qua bài viết này em xin trình bày 1
phương pháp đơn giản để thịt soft loại này thông qua việc reserve 1 crackme Let get the party started !!!
Target: DaXXoR #8 (you can find it in my zip)
Tool: Olly, PEiD, ASPackDie, Windows Calulator
Protect: Check regkey
Pack: AsSpack 2.12
Level: Beginner
Cracker: haule_nth
1- Unpack:
Dùng PEiD ta biết nó pack = ASPack 2.12
OK cứ xài ASPackDie để unpack (không thì cứ MUP thằng này unpack dễ như ăn cháo ý mà) ta có được file unpacked.exe
2- Keyfile it:
Bước thăm dò bắt đầu
Mở file lên nhấn "I Have Valid Key", bùm nó nhảy ra cái nag “chửi” ta liền
"Invalid key, try again"
Bước tìm hiểu đã xong, không sao cứ từ từ ông sẽ thịt mày con ạ
Load nó vào Olly -> Search for -> All references text strings -> ta thấy ngay 1
chuỗi lạ là:
"SOFTWARE\RetardC\Serial" thử vào registry xem thấy trong
HKEY_LOCAL_MACHINE có cái sub này, nhìn bên fải ta thấy 1 key tên là
"SERIAL" có giá trị là zero Quá trình kiểm tra này thông thường các pác xài cái
tool có tên là RegMon thì chính xác hơn nhiều, cái này thì em chỉ ăn may thui nhá
OK vậy chúng ta có thể hiểu được quá trình check key của crackme như sau:
Trang 2Đầu tiên crackme sẽ kiểm tra giá trị của cái key này trong registry và nếu không đúng với giá trị nó cần thì nó sẽ chửi ta liền
OK, chúng ta bắt tay vào thịt nó nào: Cũng trong bảng String ta tìm chuỗi chúc mừng xem nào: "YOU DID IT, GREAT CRACKER"
Ta sẽ đến đây:
00401B51 > \8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
00401B54 E8 B72B0200 CALL unpacked.00424710
00401B59 8945 B8 MOV DWORD PTR SS:[EBP-48],EAX
00401B5C 8345 B8 05 ADD DWORD PTR SS:[EBP-48],5 < - Cộng thêm 5 đơn vị vào chuỗi serial
00401B60 817D B8 3D350>CMP DWORD PTR SS:[EBP-48],0E353D < -
So sánh với serial của cương trình là 0E353D
00401B67 75 4C JNZ SHORT unpacked.00401BB5
00401B69 A1 7C4D4800 MOV EAX,DWORD PTR DS:[484D7C]
00401B6E 6A 00 PUSH 0
00401B70 B9 E2B14700 MOV ECX,unpacked.0047B1E2 ; ASCII
"REGISTERED!"
00401B75 BA C8B14700 MOV EDX,unpacked.0047B1C8 ; ASCII
"YOU DID IT, GREAT CRACKER"
00401B7A 8B00 MOV EAX,DWORD PTR DS:[EAX]
00401B7C E8 A7860700 CALL unpacked.0047A228
00401B81 66:C745 D0 5C>MOV WORD PTR SS:[EBP-30],5C
00401B87 BA EEB14700 MOV EDX,unpacked.0047B1EE ; ASCII
"Retard-o-Program (Registered)"
00401B8C 8D45 E4 LEA EAX,DWORD PTR SS:[EBP-1C]
Vậy là ta có thể tính ra serial thực sự rùi, vì quá trình kiểm tra sẽ cộng thêm 5 đơn
vị vào chuỗi ser của ta rồi mới so sánh với ser của nó
Cho nên ser thật sự mà crackme cần là cái ser trong memory của nó trừ đi 5, bật cái
Calculator của win lên chuyển sang dạng Hex: E353D - 5 = E3538, nhưng chuỗi ser của crackme cần là ở dạng số thập phân chứ không fải là số Hex, từ Hex
chuyển sang Decmical ta có chuỗi cần tìm là: 931128
Vào registry chỉnh lại giá trị của key SERIAL lại là 931128
Mở crackme check lại thử xem, tuyệt quá: "YOU DID IT, GREAT CRACKER"
Trang 3Thế là xong, bạn đã keyfile thành công DaXXoR Crackme #8
3-Kết thúc:
Qua bài viết em đã trình bày 1 phương pháp đơn giản để pass loại soft dạng này,
mong bài biết này giúp ích cho các pác Cảm ơn
ThAnKs: All members of REAOnline Forum
Thank to all people who take time to read my tut
-===== haule_nth * See Ya ===== -
Target: UnPackMe_Armadillo3.70a.j.exe (included in file rar)
Tool: Olly (edited by hacnho), ImportREC, LordPE, ArmInline, ArmTools, winhex
Tất cả các tool đều có thể down tại site www.tinicat.de/hacnho., ngoài ra trong site còn có loạt tut của Tomo, em chưa có điều kiện để đọc và thực hành nhưng chúng rất tổng quát, và bao quát rộng, giải thích cặn kẽ
Xin lỗi các bác trước, tại tut em viết trong nhiều lúc nên ảnh chụp ko khớp với nhau
_Load target vô PEid:
_Load target vô Olly:
Trang 4_Bản Armadillo này check bp tại 5 byte đầu tiên của mỗi hàm và chỉ check có 1 lần vì vậy ta Ctrl + G, WriteProcessMemory, đặt bp như hình vẽ: (hoặc có thể gõ lệnh bp
WriteProcessMemory+5)
Trang 5_F9, olly break, xóa bp đó đi, gõ bp WaitForDebugEvent, F9, olly break :