The GetDlgItemText function retrieves the title or text associated with a control in a dialog box.
UINT GetDlgItemText(
HWND hDlg, // handle of dialog box
int nIDDlgItem, // identifier of control
LPTSTR lpString, // address of buffer for text
int nMaxCount // maximum size of string
);
Parameters
hDlg
Identifies the dialog box that contains the control.
nIDDlgItem
Specifies the identifier of the control whose title or text is to be retrieved.
lpString
Points to the buffer to receive the title or text.
nMaxCount
Specifies the maximum length, in characters, of the string to be copied to the buffer pointed to by lpString. If the length of the string exceeds the limit, the string is truncated.
Return Values
If the function succeeds, the return value specifies the number of characters copied to the buffer, not including the terminating null character.
If the function fails, the return value is zero.
Remarks
The GetDlgItemText function sends a WM_GETTEXT message to the control.
_Bài viết của hacnho xin vui lòng để lại dòng này khi trích dẫn hoặc đăng tải.
_download bản tut bằng HTML : Yeah! Để hưởng ứng với HacNho part II “Cracker! Who are you” phần lấy correct Serials, Zombie post tiếp tuts cho chương trình này…
Production: IPSearch 1.9 Copyright by: Paul Gerhart Homepage: http://www.worldlynx.net/pgerhart/ Protector: Name/Serials Packed: None Tools: OllyDbg 1.09d Done: Get Correct Serials Cracked by: Zombie DeathMan Comment: IPsearch lets you search the Internet's IP address space - give it a starting IP address and it sequentially searches for HTTP ports and reports summary HTML content. IPsearch can also do a complete Whois function and can convert domain names to IP addresses. Results can be saved and printed.
Sử dụng thử thử chương trình bạn sẽ thấy gặp một số khó chịu khi chưa Reg: Menu Item yêu cầu Reg, hiện Nag khi Exit, limited functions…
Hm…Với ngần ấy rắc rối này mà patch thì hơi mệt đa (vì phải tìm đến từng vị trí cần correct serials mà Patch). Thui…Đành chơi ra correct Serials vậy (còn Keygen thì….hm..Chương trình này thuật tạo Keygen cũng no so hard..You can try it.. )
Bắt đầu crack để tìm correct serials là việc tìm đến BadBoy. Ở đây là string “Name/Code mis-match. Try again.” Oki! Sử dụng OllyDbg để tìm đến String này. Bạn sẽ đến được BadBoy này tại Addr: 004057F7
004057F3 |> \6A 00 PUSH 0 -->Dịch dấu nháy đến here bạn sẽ thấy OllyDbg chỉ đến lệnh nhảy trước đó (Jump from) ở Addr 00405760, 0040579B 004057F5 |. 6A 00 PUSH 0 004057F7 |. 68 8C834100 PUSH IPsearch.0041838C ; ASCII "Name / Code mis-match. Try again."
Như vậy ở 2 Addr 00405760, 0040579B nếu nhảy sẽ --> BadBoy. Vì thế chắc chắn trước đó phải có hàm tạo Keygen…Yeh! Hàm tạo Keygen ở 00405743. Vào trong hàm này bạn sẽ thấy nó được Call từ khá nhiều chỗ --> Patch là mệt nghĩ.
Ở đây là hàm cmp với 2 đối số là 2 String cần so sánh. Rõ rồi. Chỉ cần set bp here là bạn sẽ có được CorrectSerials (Nhìn giá trị ở các đối số: 1 cái là your entered, còn cái kia là correct). Xong! Vậy bạn chỉ việc chạy lại chương trình và nhập lại đúng thôi.
PS: Trong quá trình trace code bạn sẽ thấy một chuỗi string..ke..ke..Lưu ý nó nha..Khá quan trong cho việc code keygen đó… Name/Code sau khi Oki sẽ được lưu trong Reg ở HKEY_LOCAL_MACHINE\SOFTWARE\Paul Gerhart Software\IPsearch\User Hic..Zombie tìm ra được thuật code keygen của nó (dựa trên language ASM) nhưng code ngược lại bằng Visual Basic .NET không được..Tức cành hông ..!
[/B]
-------------------- Welcome to THE H-E-L-L A world no sense of mercy !!!
*********************************************
Buồn...Thương người đơn phương ...! Chỉ mong rollback thời gian... Chỉ mong có được người ấy như xưa... Chỉ mong.... ********************************************* Tìm real key hả cho tui tham gia với:
[Marquee]CRACK FAMALY KEYLOGGER v2.53[/Marquee]
Download at: www.SpyArsenal.com
Cracker : deux
Tool: softice for win, w32dasm
Đây là một soft kiểm tra key không phức tạp nhưng lại rất dài dòng vậy nên nếu không tìm ra chô cần carck thì rất dễ nản , bây giờ hãy bắt đầu.
Mở W32Dasm disasembler nó ra tìm cái nag invalid key trong Refs>String Data.
như vậy đều cần thiết là cái lệnh nhảy đó phải đứng im, tuy nhiên điều cần làm là tìm key chớ không phải patch, và nếu bạn patch thì cho dù co lên cái câu "Thank you for registration" bạn cũng vẫn bị đòi đăng ký ở lần sau, các soft bây giờ nó đểu lắm, patch nag là xưa rồi,Okie bạn hãy nhìn lên trước cái lệnh nhảy sẽ có lệnh call 00401D69, chính lệnh call này sẽ gọi một hàm , và hàm này quyết định xem số key của bạn đúng hay sai. Vậy hãy di chuyển đến đó và click vào nút Call , bạn sẽ đến một nơi nào đó trong chương trình , hãy kéo xuống một đoạn nữa đến chỗ sau:
:00401E4B 8D95F8FDFFFF lea edx, dword ptr [ebp+FFFFFDF8] chuyển key bạn nhập vào edx
:00401E51 52 push edx
* Reference To: KERNEL32.lstrlenA, Ord:0308h hàm này cho chiều dài của chuỗi ban nhập
|
:00401E52 FF159C104000 Call dword ptr [0040109C]
:00401E58 83F81D cmp eax, 0000001D so sánh số ký tự với 1D(hex)=29(Dec)
:00401E5B 7407 je 00401E64 nhảy nếu bằng
:00401E5D 33C0 xor eax, eax set cho eax=0 ( nguyên nhân dẫn đến cái nag)
:00401E5F E942040000 jmp 004022A6
như vậy số ký tự bạn nhập vào phải bằng 29, tất nhiên nếu nhìn vào W32dasm thì không thể thấy chính xác các phép toán thực hiện như thế nào vì nó không thể hiện được giá trị của register hay address tại thời điểm chạy đến đoan mã này, nhưng bạn cần suy đoán để tìm ra thôi, ví dụ như tại sao nhìn vào lea edx, dword ptr [ebp+FFFFFDF8] lại biết là nó chuyển reg của mình nhập vào edx, cái này thì không ai có thể bày cho bạn được mà bạn phải crack nhiều , chịu khó quan sát và kinh nghiệm sẽ cho bạn biết chỗ cần tìm. Đối với người mới bắt đầu có thể xài soft-ice để kiểm chứng lại cái đoạn tôi nói ở trên,
do crack này hơi dài tôi chỉ nói sơ trong SI như sau:
set BP trong SI là getdlgitemtextA xong press F5 trở về lại màn hình đăng ký, nhấn OK bạn sẽ trở lại màn hình của SI, nhấn F12 để trở về vị trí vừa gọi hàm Getdlgitemtexta, trace down bằng F10 , thêm một luu ý nữa nếu gặp các hàm API thì cứ việc nhấn F10, bạn có thể biết nó là hàm API khi trước đó có phần Kernell32.dll.. hay User32., bởi vì bạn không cần biết nội dung của hàm đó, nếu muốn biết thì tốtnhất là tìm các tut về hàm API, còn nếu gặp các lệnh call đến các địa chỉ như
Call 004xxxxxx thì các bạn làm ơn trace bằng F8 để vào xem cái hàm đó nó làm gì nếu không sẽ trace qua cái đoạn code cần tìm. Bạn trce bằng F10 đến khi gặp hàm [Kernel32!sleep], ngay bên dưới nó sẽ có một lệnh Call, trace bằng F8 vào lệnh call này bạn sẽ đến đoạn mã cần tìm tương ứng bên W32dasm.
lưu ý đối với những người mới cài và sử dụng SI:để set breakpoint cho các hàm API trong Kernek32.dll và User32.dll cần phải mở Winice.dat bằng Notepad và bỏ dấu ";" trước các lệnh sau
EXP=c:\windows\system\kernel32.dll
EXP=c:\windows\system\user32.dll
Rồi khởi động lại.
Trở lại với W32Dasm, nói chung nhiệm vụ của bạn là phải làm sao cho nó đừng nhảy tới chỗ
xor eax,eax mà lèo lái sao cho nó đến chỗ mov eax,00000001 thì soft sẽ đăng ký thành công, tất nhiên bạn có thể patch nhưng như vậy thì cũng phải sử cả chục cái lệnh nhảy chớ không ít đâu,bây giờ giả sử bạn đã nhập đủ 29 ký tự thì sẽ đến vị trí sau:
:00401E6B 83C00A add eax, 0000000A cộng kt thứ 5 với A
:00401E6E 83F837 cmp eax, 00000037 so sánh với 37
:00401E71 7E07 jle 00401E7A nhảy nếu nhỏ hơn
:00401E73 33C0 xor eax, eax
:00401E75 E92C040000 jmp 004022A6
Bạn hãy nhớ byte ptr[ebp+FFFFFDF8] là ký tự đầu tiên, nên byte ptr [ebp+FFFFFDFC] là ký tự thứ 5
Bạn thấy đó dưới cái jle nó lăm lăm cái xor eax,eax chui vào đó là tiêu luôn, vạy nên ký tự của bạn có mã ASCII hệ 16 sau khi cộng với 5 phải <= 37, (kí tự thứ 5<=2D)
Bạn hãy dò đến các phần tiếp theo nó sẽ kiểm tra các ký tự thứ 10([ebp+FFFFFE01], ký tự thứ 15([ebp+FFFFFE06]) ký tự thứ 20... tất cả nó đều có điểm chung là phải nhỏ hơn hoặc bằng 2D hãy tìm đến vị trí tiếp theo:
:00401ED2 0FBE95FCFDFFFF movsx edx, byte ptr [ebp+FFFFFDFC] ký tụ thứ 5 vào edx
:00401ED9 0FBE8501FEFFFF movsx eax, byte ptr [ebp+FFFFFE01] ký tự thứ 10 vào eax
:00401EE0 3BD0 cmp edx, eax ktthứ 5 phải bằng kt thứ 10
:00401EE2 7572 jne 00401F56
:00401EE4 0FBE8DFCFDFFFF movsx ecx, byte ptr [ebp+FFFFFDFC] ký tự thứ 5 vào ecx
:00401EEB 0FBE9506FEFFFF movsx edx, byte ptr [ebp+FFFFFE06] ký tự thứ 20 edx
cái thằng soft này quả là lắm chuyện tôi chỉ có thể nói vắn tắt thế này các ký tự từ 1 đến 4 , kt 1 phải khác 46 hoặc kt2 phải khác 45 hặc kt3 khác 46.. Có nghĩa là phải làm cho 1 trong bốn lệnh nhảy trên nhảy nếu không sẽ đến cái chỗ xor eax,eax.
cũng như trên bạn phải làm cho nó nhảy một trong các lệnh nhảy này, không là ra cái nag, còn mấy cái kt trên là ký tự thứ mấy thì chắc là bạn cũng nắm được cách tính rồi phải không?
Đơn giản tôi lấy cái đầu tiên nó chuyển kt thứ nhất vào ecx và kt thứ 3 vào edx, và nó so edx với ecx vậy nếubạn muốn nó nhảy thì ký tự thứ nhất phải khác ký tự thứ 3.