Cú pháp khai báo tổng quát: Quote: [Public | Private] Declare Sub | Function Name Lib “libname” [Alias “aliasname”] [(args)] [As Type] Quote: - Khai báo Public | Private tương ứng việc khai vùng hoạt động của hàm. Với Public hàm có thể gọi từ ngoài module khai báo nó ( trong cả chương trình ), ngược lại Private chỉ cho phép sử dụng trong module khai báo nó. Mặc định của Visual Basic khi không khai báo Public/Private là Public. Ở đây có thể sử dụng kĩ thuật “wrapper”. Với kĩ thuật này bạn khai báo hàm APIs trong module với Private. Sau đó code một hàm gọi nó rồi khai Public cho hàm này. - Declare Sub | Function: Tương ứng khai báo hàm này là Function or Sub. - Name: Tên của hàm sẽ được dùng để gọi. - Lib “libname”: Tên thư viện DLL chứa hàm cần gọi. - Alias: Tên hàm được export ra trong thư viện DLL. Lưu ý phải đúng chính xác tên hàm được export. - args: Các đối số của hàm. Đây cũng là phần quyết định quan trọng. Phải khai báo tuyệt đối chính xác (ByVal/ByRef, Data type,v v.). Trong trường hợp khai báo sai có khả năng làm crash Windows bằng lỗi GPF ( General Protect Fault ). - As Type: Kiểu giá trị trả về khi sử dụng hàm là Function Examples: ( Code by Visual Basic 6.0 ) 1. Hàm FindWindow: Trả về Handle của một Window khi biết một/cả hai đối số. Khai báo (code trong module mdlAPIs.mdl) Quote: Private Declare Function Lib “user32” Alias “FindWindowA” (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Quote: > Hàm khai báo với tên FindWindow được export từ thư viện user32.dll (với các thư viện dll chuẩn của Windows không cần khai FullName ) với tên FindWindowA. > Các đối số của hàm là lpClassName As String và lpWindowName. Cả hai đều là ByVal. > Trả về giá trị là kiểu Long. > Về việc sử dụng hàm: Có thể thấy ở đây hàm này nhận 2 args truyền vào. Tuy nhiên ở đây bạn có thể truyền vào giá trị 1 trong 2 hàm là đủ (có thể truyền luôn cả 2 nếu muốn). Các đối số ở đây là tên Class hoặc Caption của Windows cần lấy Handle Với arg không dùng đến thì đưa giá trị vbNullString hoặc 1 giá trị Null (lưu ý: Giá trị Null hiểu theo ngôn ngữ C, không phải là vbNull). Quote: Public Function wrpFindWindow (Optional ClsName As String = “”, Optional Caption As String = ”” ) As Long wrpFindWindow = FindWindow(ClsName, Caption) End Function Quote: > “Wrapp” lại bằng Function wrpFindWindow *****Có thể sử dụng API Viewer của Visual Basic 6.0 để lấy các Declare sẳn có và paste vào chương trình… Tuy nhiên như vậy bạn sẽ phụ thuộc vào API Viewer, trong khi không ít hàm hoàn toàn không có trong đây. Bạn chí được thông tin trong MSDN. Do đó cần biết cách tự khai báo. Để khai báo cần nắm rõ chút về cách định nghĩa khai báo theo kiểu Hungarian Quote: Sơ lược về định nghĩa Hungarian: ( Sử dụng nguyên văn tài liệu ) API mong đợi một trong hai điều ở các đối số của nó: Một giá trị hoặc địa chỉ của một biến chứa một giá trị. Chìa khóa để biết API mong đợi một giá trị hay một địa chỉ nằm ở định nghĩa Hungarian của tên thông số trong prototype của hàm liệt kê trong SDK. Nếu tên thông số có tiếp đầu ngữ “lp”, có nghĩa là API mong đợi một địa chỉ. Trong định nghĩa C Hungarian, “lp” viết tắt cho một Long Pointer – Một địa chỉ bộ nhớ. Thường gặp nhất là “lpsz”, tức một con trỏ long đến một chuỗi kết thúc bằng Null ( một khai báo ByVal As String trong Visual Basic ), nhưng bạn cũng có thể đưa một “lp” cho API với tất cả các kiểu ( trừ một string ), dùng ByRef để gửi địa chỉ biến của bạn cho API. Trong thực tế bạn có thể sử dụng các chương trình khai báo sẵn APIs và chỉ việc copy & paste vào chương trình. Tuy nhiên nên biết sơ về cách khai báo. Một số APIs các bạn thường gặp trong quá trình Cracking là: Quote: Int GetWindowText(HWND hWnd, LPTSTR lpString, int nMaxCount); Quote: Hàm này nhận 3 đối số là: - Handle Control chứa nội dung cần Get - Biến đệm chứa nội dung sẽ được lấy và trả về - Max Chars sẽ lấy, nếu vượt quá số max này sẽ truncate đi Thường thì hàm này dùng với Alias GetWindowTextA Tương tự GetWindowText là GetDlgItemText (được sử dụng cho việc lấy Text từ control trong Dialog) Quote: UINT GetDlgItemText(HWND hDlg, int nIDDlgItem, LPTSTR lpString, int nMaxCount ); các APIs khác Quote: int MessageBox(HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType ); BOOL MessageBeep(UINT uType ); Các khá hữu dụng để lần ra chỗ cần bp và từ đó trace ngược về Module Protect Basic Rule of Cracking Mình xin mạn phép post bài này của một Cracker người nước ngoài . Đây là một bài viết mà mình cho là rất có ích cho các Newbie chúng ta khi muốn trở thành một cracker hay chỉ muốn khám phá những điều mới mẻ mà chúng ta chưa từng biết . Những điều mà chúng ta sẽ không thể tìm được ở bất kì một cuốn sách nào……Ok Come on! ~~~~~~~~~~~~~~ Tutorial Type : Essay Tutorial Topic : Basic rules of cracking Utilities : Brain (yes, i know, its hard to get one but you have to !) Music : Final Countdown (no bob today ;p) Written By : ParaBytes (the one and only ;p) Date : Nov. 18th, 2001 Lets begin lets clear thing : + + the reason i wrote this essay is to make clear what it takes to be a good cracker, i'm an expirianced cracker, but i've seen the best crackers, and i know what it takes, but i nkow it only now so i wrote this essay so newbies who have no xp will able to enjoy my basic knowledge ParaBytes. lets start : + + well this is not a real tutorial, its more kind of an essay today we will review the basic of cracking it is important for you to know the basic rules of cracking, this basic rules will help ya to become a good cracker 1. you cant crack everything, remember this, always. you are not the el-mighty, you'll never know enough 2. EVERYTHING IS CRACKABLE. everything become crackable sometimes, if we see asprotect 1.3 almost impossible, in a year or two, every newbie will inject funtions threw this protector 3. Share your knowledge, if you learnt some tricks, tell them to others, write tutorials, essays, crackmes do all you can do to help the next crackers generation in cracking 4. read MORE tutorials, as rule no. 1 says, we are not the best, but other crackers know things we dont and we know things they dont so keep on reading tutorials. 5. learn to code, if you'll know how a complicated program works, and how its coded, it will be easier to crack it 6. dont be one of the gang, be the rebel, use alternate tools, so the sharewares coders wont be able to blick ya, find a tool, learn it, be a master of the tool, be the tool 7. learn tools, dont be just a rebel, be a rebel that know the usual tools, like me i use w32dasm as debugger, almost no one use it so no anti-coding but i know sice 8. if you'll join groups, even as trial member, you'll meet people, they'll probably help you, you will might be able to help them as well, finally, you'll get to know the protections you are working on better and better 9. keep yourself updated, this one is very important, you should be using the latest tools, learn the newest protections, start a hotmail that will use ya to be a member in a mailing list of sharewares coders, learn thier techniques, be almost one of them 10. discover things by yourself, teach yourself on tricks you've found and you never read about'em. dont forget to teach other these tricks, self-learning is the best 11. don’t ripp other people's work, they've worked very hard on thier releases, don’t ripp the cracks/keygens/create serials from other peoples keygens its not fair. 12. code more, read more, crack more, write more, be cracker. Ending : + + this is an essay on the basics you should remember on being a cracker, a good one. you dont have to obey all of them, but you shuold remember all of them and just remeber, a looser is a good cracker, as long they keep obeying rule 11. so, read more tutorials. Mình xin dịch tạm bài viết trên như sau ( hi vọng là với vốn tiếng Anh của mình có thể giúp các bạn hiều được phần nào_ hì hì vì tiếng Anh ko phải tiếng mẹ đẻ của chúng ta mà). He he các bạn có thấy cái dòng Utilities : Brain (yes, i know, its hard to get one but you have to !): ngay ở đầu không . Lúc đầu mình cứ nghĩ đó là một Soft dùng để crack nhưng suy nghĩ một lúc thì cũng hiểu ra , mọi công việc mà chúng ta muốn thực hiện đều qua một trung tâm điều khiển là bộ não của chúng ta ( Brain). Những người Code ra phần mềm cố gắng dùng bộ não( trí óc ) của họ để code ra được một cái ổ khóa để bảo vệ phần mềm của họ . Còn chúng ta thì sao ,chúng ta cũng sử dụng bộ não ( trí óc) của chúng ta để là việc , nhưng công việc của chúng ta hoàn toàn ngược lại với họ . Chúng ta cố gắng tìm ra trong hàng trăm cái chìa khóa có thể mở được cái ổ khóa đó , và chiếc chìa khóa vàng đó là của chúng ta . Đúng vậy trí óc của con người là rất quan trọng trong mọi công việc chứ không riêng gì Crack phải không các bạn Ok Let’s Translate : the basic rules of cracking , to help ya become a good cracker. 1.Hãy luôn luôn nhớ lấy điều này , bạn không thể bẻ khóa tất cả các phần mềm.Bạn không phải là người giỏi nhất , những kiến thức mà bạn biết được không bao giờ là đủ 2.Mọi phần mềm đều có thể crack được. Thỉnh thoảng , mọi thứ đều có thể được crack nếu chúng ta hiểu không rõ ràng về asprotect 1.3 . Trong vòng một hoặc hai năm ,tất cả các newbies sẽ thêm vào những đoạn mã ( những hàm) để phá vỡ sư bảo vệ này ( Ý của tác giả chắc là đề cập đến việc Unpacking đúng không các bạn) 3.Hãy chia sẻ sự hiểu biết của bạn , nếu bạn đã tìm được một vài mẹo nhỏ( thủ thuật) hãy nói cho những người khác để chia sẻ những gì mà bạn biết được , hãy viết các bài hướng dẫn, các thủ thuật , và tất cả những gì bạn có thể làm được để giúp đỡ các thể hệ cracker tiếp theo về cracking. 4.Hãy đọc thật nhiều các bài hướng dẫn , đây dường như là một quy luật không thể phá bỏ.Trước tiên cũng phải nói rằng chúng ta chưa chắc đã là người giỏi nhất,bởi vì những điều mà các cracker khác biết thì có thể chúng ta lại không biết và ngựơc lại những điều mà chúng ta biết thì cỏ thể các cracker khác lại không biết . Vì vậy hãy thường xuyên đọc các bài hướng dẫn. 5.Hãy học để code , nếu các bạn có thể biết được một chương trình phức tạp nó hoạt động thế nào và nó được code thế nào thì thật quá dễ dàng để crack nó ( Do đó bạn phải biết code vd Code KeyGen chẳng hạn : chính là chúng ta nghiên cứu quá trình tạo Key của chương trình đó ra sao , sau đó dựa vào đó chúng ta viết một Keygen sao cho nhập vào tên bất kì thì chương trình có thể tạo ra được Serial tương ứng vơi Username nhập vào ) 6.Không nên chỉ là những kẻ chỉ biết sử dụng các công cụ luân phiên, hãy tìm lấy một công cụ , học lấy nó và làm chủ nó 7.Hãy biết thêm các công cụ khác , đừng chỉ biết các công cụ thông thường như Windasm, bạn nên biết thêm cả các chương trình dùng để Debug chương trình như Softice ( hoặc Olly ) 8.Nếu bạn là thành viên của một tổ chức hay một nhóm nào đó, hoặc thậm chí có thể bạn chỉ là một thành viên thử thì bạn cũng nên gặp mọi người ,họ sẽ sẵn sàng giúp bạn. Và bạn cũng có thể giúp họ nữa là đằng khác , Bạn sẽ được biết về các kiểu bảo vệ của những soft khác nhau để từ đó bạn có thể tiếp tục làm việc ngày càng tốt hơn 9.Bản thân bạn cũng phải thường xuyên được updated, điều này là rất quan trọng . Bạn nên sử dụng các công cụ mới nhất , học những kiểu bảo vệ mới nhất 10.Tự bản thân bạn phải khám phá mọi thứ, hãy tự thực hành với tất cả các thủ thuật mà bạn đã tìm được kể cả những thủ thuật mà bạn chưa từng đọc. Và cũng đừng quên đem tất cả những thủ thuật mà bạn biết được truyền lại cho những người khác , tự nghiên cứu là phương pháp tốt nhất 11.Đừng có phá hoại hay can thiệp vào công việc của người khác ( hãy tôn trọng lẫn nhau), họ đã phải làm việc rất vất vả . Cũng đừng có phá hoại các file cracks , keygen hay creat serials của những người khác dù là nó chưa được hay lắm. 12.Cuối cùng là các bạn hãy code thật nhiều, đọc thật nhiều , crack thật nhiều và viết thật nhiều các bạn sẽ trở thành một cracker. HẾT : ) Cảm ơn các bạn đã đọc bài viết này. Thanx Hãy góp tất cả những gì các bạn có để làm cho diễn đàn này ngày càng hay và phong phú hơn. :laugh: Kienmanowar(REAonline.net) Cracking Dictionary beta 1 (By hoadongnoi+Merc+hacnho+trickyboy+haule_nth+lena+Mrangelx+Why not bar) 1. Breakpoint : hay còn được gọi là “điểm ngắt” - tức là ngắt (hay dừng) 1 tiến trình đang hoạt động tại 1 vị trí nào đó, từ đó có thể kết xuất giá trị của 1 vài hoặc tất cả các biến của chương trình. Điểm ngắt còn có thể được thiết lập bởi các lập trình viên như là một sự tương tác với công cụ gỡ rối. Nói chung điểm . ;p) Date : Nov. 18 th, 20 01 Lets begin lets clear thing : + + the reason i wrote this essay is to make clear what it takes to be a good cracker, i'm an expirianced cracker, but i've. crackmes do all you can do to help the next crackers generation in cracking 4. read MORE tutorials, as rule no. 1 says, we are not the best, but other crackers know things we dont and we know. them 10 . discover things by yourself, teach yourself on tricks you've found and you never read about'em. dont forget to teach other these tricks, self-learning is the best 11 . don’t