banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Messages posted by: Z0diac  XML
Profile for Z0diac Messages posted by Z0diac [ number of posts not being displayed on this page: 0 ]
 
[ Em xin ngoài lề tí]
Khi đọc các dẫn chứng bằng Kỹ thuật của anh TQN , đọc thêm các điều khoản BSD , WinRAR Lab , các email của các anh nbthanh, anh mrro ..và thêm cách trả lời của bác Quãng, thì với một người có HIỂU BIẾT về IT nói chung đều có thể nhận thấy được : BKAV Pro đã vi phạm luật rõ ràng. Nếu các bác hay bác Quảng có thể đưa ra được bằng chứng là BKAV Pro đã mua được "Giấy phép sử dụng RAR (Dos) cho multiple end-users" của họ thì hãy phản bác lại các ý kiến bằng Kỹ thuật ( mà Kỹ thuật thì không phải như Cảm tính, các bác phải phân biệt rõ điều đó) chứ đừng như bác Quảng, chỉ biết phán một câu "Chúng tôi đã mua bản quyền Winrar từ giừa năm 2007" --> nói như bác Quảng thì tui cũng nói được , ví dụ "Tui mua bản quyền Window từ thời nó còn là win 95 kìa" --> vậy mọi người có tin tui không ? smilie ,v.v...

P/S : Đề nghị các Mod xóa những bài cố ý làm sai lệch vấn đề hoặc nhằm biện minh cho cái DỐT của họ
Chắc là dự án của anh vnreverser đang bị TREO ...2 tháng nay.
Bạn mở topic là "Làm thế nào...?" đây là câu hỏi mà, vậy sao bạn lại đi xin code. Như mình đã nói ở topic kia (bạn lập 2 topic cùng 1 nội dung là không được đâu) bạn nên phân rõ các bước để đạt được yêu cầu của mình...Bạn bí bước nào thì hỏi bước đó, chứ bây bạn hỏi chung chung như vậy thì khó ai trả lời cho bạn lằm. Bạn có thể vào thử vào www.codeproject.com hoặc www.congdongcviet.com để tìm hiểu thêm.
Mình ko biết lập trình C# và cũng chưa biết cách để thỏa mãn hết các yêu cầu của bạn. Nhưng để đáp ứng được các yêu cầu của bạn thì có lẽ việc đầu tiên bạn phải làm là sử dụng kĩ thuật Windows Message Hooking ( ở mức System wide). Trong đó bạn chặn bắt các sự kiến đóng mở một app và xử lý theo ý của bạn. Bạn có thể lên www.codeproject.com để search và tìm hiểu thêm.
Dạ anh. Và em cũng đã biết cách giải quyết vấn đề của em rồi ah. Cảm ơn anh đã trả lời.
- Yah, em đã làm được rồi. Chỉ việc thêm một biến kiểm tra (gọi là m_ListCtrlInit chẳng hạn) được thiết lập bằng FALSE(List Control chưa được khởi tạo), sau khi khởi tạo xong List Control thì set nó bằng TRUE. Và trong sự kiện LVN_ITEMCHANGED, nếu m_ListCtrlInit = TRUE thì mới bắt đầu xử lý. Kết hợp lại ta sẽ có đoạn code sau

Code:
LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);
CString msg;
if (m_ListCtrlInit)
{
m_Sel = pNMLV->iItem;
if (ListView_GetCheckState(m_ListNamePLR.GetSafeHwnd(), m_Sel))
{
msg.Format(_T("Row %i đã Checked"),m_Sel);
MessageBox(msg,_T("Msg"),MB_OK);
}
else
{
msg.Format(_T("Row %i đã Unchecked"),m_Sel);
MessageBox(msg,_T("Msg"),MB_OK);
}
}


Vì App của em là một dạng mở rộng LVS_EX_CHECKBOXES, nên tất nhiên là em muốn khi mình Click chuột vào một Check Box nào đó để Checked hay Unchecked thì mình phải biết được trạng thái của nò là Checked hay Unchecked để có thể đưa ra các xử lý như ý mình. Em dùng hàm ListView_GetCheckState() để kiểm tra. Nhưng ngặt một nỗi là nếu để nguyên đoạn code như trên nó sẽ xảy ra tình huống là bị lặp lại 3 lần MessageBox. Còn nếu em thêm một lệnh để xác định Row mình đang chọn như sau :

Code:
if ((pNMLV->uOldState == 0) && (pNMLV->uNewState !=0))


thì khi em Click chuột vào CheckBox thì lại không xảy ra một MessageBox nào, còn Click chuột vào Row thì vẫn hiện ra MessageBox bình thường. Ngoài ra khi thêm đoạn kiểm tra trên vào nó còn một số lỗi ngớ ngẫn khác ví dụ như (Giả sử em đã Click chuột vào Row I và nó đã hiện MessageBox, và CheckBox của Row I đang ở dạng Checked chẳng hạn, nếu giờ em Unchecked cái CheckBox của Row I và Click chuột lại vào Row I đó thì lại không hiện lên Messagebox thông báo, nếu muốn hiện lên Messagebox thì phải Click chuột vào Row khác, sau đó Click chuột lại vào Row này thì mới hiện MessageBox). Em không hiểu tại sao bị như vậy.

Lúc đầu em định dùng cớ chế Timer, sau một khoảng thời gian nhất định sẽ quét lại, nếu có thay đổi gì về các cửa sổ thì cập nhập, nhưng cách này không được hay cho lắm, nên có lẽ em phải dùng kĩ thuật Windows message hooking như anh nói để chặn các thông điệp đó thôi. Nếu anh Z0rr0 còn cách nào khác thì nói cho em biết nhé. Cảm ơn anh đã trả lời.
Giả sử em có 1 ứng dụng tên là App được viết bằng VC8(VS 2005) .Trong ứng dụng này của em nó sẽ liệt kê ra các cửa sổ đang được mở trong Window bằng cách dùng EnumWindows và EnumWindowsProc.Bây giờ, nếu em đóng (hoặc mở thêm) 1 cửa sổ nào đó thì làm thế nào để ứng dụng App của em biết ngay lập tức(nếu có thể) hoặc trong một thời gian nhỏ nhất định nào đó để ứng dụng App của em loại bỏ tên ra khỏi danh sách các cửa sổ đang được mở. (hoặc thêm tên của nó vào danh sách các cửa sổ đang được mở - nếu trường hợp là có thêm 1 cửa sổ mới vừa được mở).
- Anh Z0rr0 xem đoạn code tạo List Control của em đấy, em tạo nó một cách bình thường, nhưng không hiểu sao khi em dùng LVN_ITEMCHANGED để xác định Row mà mình đang select thì khi em chạy Run(Ctrl + F5 trong môi trường VC 8) thì nó sẽ xuất hiện 3 lần Message Box rồi mới xuất hiện cái Dialog của mình.

- Chuyện bị close Dialog khi ấn phím Enter em đã làm được bằng cách override lại hàm OnOk(), hôm qua em quên chọn Buid All nên nó không thực thi. Cảm ơn anh nhé.
Sau khi tìm hiểu lại vấn đề này em có thêm một số thắc mắc như sau:
- Đúng là thông điệp NM_CLICK có thể giải quyết tốt yêu cầu này khi ta chỉ dùng sự kiện CLICK chuột. Nhưng nếu ta dùng các mũi tên lên, xuống thì nó lại không thể nhận biết được
- Và em lại thử dùng thằng LVN_ITEMCHANGED một lần nữa. Và đây là cách để biết Row mình đang chọn có Id bao nhiêu :

Code:
LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);
CString msg;
if ((pNMLV->uOldState == 0) && (pNMLV->uNewState !=0))
{
m_Sel = pNMLV->iItem;
msg.Format(_T("Row %i"),m_Sel);
MessageBox(msg,_T("MSG"),MB_OK);
}

Nhưng có một điều là, khi mình bắt đầu Run App (hay Load App) thì nó sẽ bắt đầu khởi tạo các Selection cho tất cả các Row, bằng chứng là em dùng hàm MessageBox như trên thì nó lại tiếp tục để kiểm tra. Vậy có cách nào để deselection trước khi mình thật sự chọn theo ý mình không? Em có coi qua cấu trúc và thử dùng hàm SelItemState nhưng cũng ko được.

- Và điều cuối cùng là, nếu em sau khi em chọn một Row nào đó, và em nhấn phím ENTER một cái thì lập tức App bị đóng lại ngay? Cho em hỏi đây là lỗi gì? Do cái gì gây ra và cách khắc phục như thế nào.Em không có 2 hàm OnOK()hay OnCancel().
App của em là một dạng Dialog. Em có dùng Tab Control (em ko dùng PropertPage để tạo các Tab). Sau đây là đoạn code tạo List Report của em :

Code:
void CDialogA::OnInitDialog()
{
.....
CRect rect;
m_ListCtrl.GetClientRect(&rect);
int m_Width = rect.Width()/7;
m_ListCtrl.SetExtendedStyle( LVS_EX_CHECKBOXES |LVS_EX_FULLROWSELECT |LVS_EX_GRIDLINES |);
m_ListCtrl.InsertColumn(0,_T("Mau"),LVCFMT_LEFT,m_Width);
m_ListCtrl.InsertColumn(1,_T("Chat Lieu"),LVCFMT_LEFT,m_Width*4.8);
m_ListCtrl.InsertColumn(2,_T("Gia Tien"),LVCFMT_LEFT,m_Width*1.2);
int m_ListItem = 3;
LVITEM lvi;
CString strItem;
for (int i = 0;i<m_ListItem;i++)
{
lvi.mask= LVIF_TEXT;
strItem.Format(_T("Item %i"),i);
lvi.iItem=i;
lvi.iSubItem=0;
lvi.pszText = (LPTSTR)(LPCTSTR)(strItem);
m_ListCtrl.InsertItem(&lvi);
strItem.Format(_T("%d"), 10*i);
lvi.iSubItem =1;
lvi.pszText = (LPTSTR)(LPCTSTR)(strItem);
m_ListCtrl.SetItem(&lvi);
}
}
Cảm ơn anh Z0rr0 đã trả lời một cách rõ ràng và chi tiết. Em sẽ thử dùng cách bắt thông điệp NM_CLICK thử xem. Hôm qua em cũng đã có thử ngó qua thắng này, nhưng không biết sử dụng hàm GetSelectionMark() để giải quyết.
Các bạn cho mình hỏi là:
Giả sử như mình có một List Control ở dạng Report như sau, mình set chế độ FULLROWSELECT.

Code:
[Màu] [Chất Liệu]
1 Xanh Vải
2 Đỏ Da
3 Vàng Giấy

Bây giờ nếu như mình chọn Row 2 (Đỏ, Da) để xử lý một tình huống nào đó. Vậy làm cách nào để nhận ra được sự kiện mình chọn Row 2 đó, để có thể đưa ra một ứng xử như mình mong muốn.

Em đã dùng sự kiện LVN_ItemChanged để thử tìm hiểu xem như sau :


Code:
CAppDlg::OnLvnItemchangedListname(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);
int m_Selected = pNMLV->iItem;
CString strMsg;
strMsg.Format(_T("Chon row %i),m_Selected);
MessageBox(strMsg,_T("Msg"),MB_OK);
}

Khi em chạy thử và chọn thử một Row nào đó ( lần chọn thứ i) thì nó sẽ xuất hiện 3 lần MessageBox. Và em để ý thấy là 2 MessageBox đầu đều thông báo về Row mà mình đã chọn ở lần (i-1). Em không hiểu tại sao lại xảy ra như vậy, vậy mình có thể biết được chính xác iItem của Row mình đang chọn ko?Và có cách nào khắc phục không ạ tình trạng này ko ah?
Mình đã tìm được câu trả lời.. Mình quên mất là CDialogB của mình là modeless Dialog nên không thể dung DoModal() được mà phải dung Create()

Code:
CDialogB aDlg;
aDlg.Create(IDD_DialogB,this);
aDlg.SetDlgItemText(IDD_EDIT1,m_DlgA);
IDE : Visual C++ 2005 (MFC)
Giả sử em có 2 Dialog A và Dialog B .
Trong Dialog B có một Edit Control là IDC_EDIT1 .(Number = False chằng hạn)
Giờ em có giá trị của một biến m_DglA = "Nice to met you!" trong Dialog A. Và em muốn chuyển giá trị của m_DlgA qua IDC_EDIT1 của Dialog B thì làm sao?
Em đã thử dùng cách như sau :

Code:
CDialogB aDlg;
aDlg.SetDlgItemText(IDC_EDIT1,m_DlgA);


Lúc biên dịch thì không có lỗi gì. Nhưng lúc Run thì nó lại báo lỗi và không thực thi tiếp được.

Mong các anh chị chỉ giao thêm.
Bạn thử Debug từng bước trong solution của bạn xem. Bạn thử làm ngoài giấy bằng tay từng bước giải thuật mà bạn đang áp dụng với một ví dụ cụ thể nào đó, sau đó trong quá trình Debug, bạn xem mình bị sai chỗ nào, và vì sao sai...Chúc bạn may mắn.
Ah, mình đã khắc phục được lỗi này . Cái này khi biên dịch trên nền VS 2005, nó tự mặc định biên dịch trên nền 64 bits, nên thành ra nó sẽ xuất hiện warning. Để không xuất hiện warning và để biên dịch trên nền 32 bit trong VS 2005, thì mình đã chuyển Detect 64-bit Portability Issues thành No trong Project Properties Page.
Để mình kiểm tra lại đoạn code xem. Xin cảm ơn bạn. Nhưng tại sao ở VC 6 thì nó không bị warning gì cả mà ở VC 8 lại bị .
Yah! Cảm ơn bạn.
Tiện đây mình cũng muốn hỏi thêm vấn đề này.

Khi mình viết hàm này trong ứng dụng Hook của mình (mình đang tập tành tìm hiểu)

Code:
LRESULT CALLBACK MyWndProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam)

và khi biên dịch thì nó thông báo một warning như sau

Code:
warning C4311: 'type cast' : pointer truncation from 'LRESULT (__stdcall *)(HWND,UINT,WPARAM,LPARAM)' to 'LONG'
warning C4312: 'type cast' : conversion from 'LONG' to 'WNDPROC' of greater size
warning C4311: 'type cast' : pointer truncation from 'WNDPROC' to 'LONG'


Mình thật sự không hiểu tại sao nó warning như vậy trong môi trường của VC 8 trong khi VC 6 biên dịch bình thường.



Mình đang học về C++ và mình dùng VS 2005. Trong môi trường của VS 2005, khi mình dùng các hàm API như (RegisterWindowMessage, GetModuleFileName, LoadLibrary,...) thì nếu tham sỗ mình truyền vào là kiểu char thì ngay lập tức nó báo lỗi và bắt mình phải chuyển về kiểu wchar_t thì mời dùng được. Mình thử search 1 hàm (ví dụ : RegisterWindowMessage) trong MSDN thì mình thấy có 2 hàm sau : RegisterWindowMessage và RegisterWindowMessageW . Trong đó chỉ có hàm RegisterWindowMessageW là bắt buộc mình phải dùng kiểu wchar_t.

Vậy mình xin hỏi là : Có phải trong môi trường VC 8(VS 2005) , các hàm API như trên sẽ tự động được mặc định sang các dạng như RegisterWindowMessageW, GetModuleFileNameW,... phải không ạ?

Nếu mình chỉ muốn dùng các hàm API dạng cũ (không có kí tự W sau cùng) thì phải làm sao?

P/S: Nếu câu hỏi của mình có gì không rõ ràng xin các bạn thông cảm dùm.
Vào topic thấy các bạn nói về bộ Cracker ToolKit v2.0 , mình cũng xin share một link sống về bộ này cho các bạn, mặc dù mình ko biết gì về crack hay reserve.

Link download :

http://downtown.vc/index.php?page=main&id=3c060631&name=crackerskit.v2.00-icu.zip

Sau đây là một số thông tin về CrackersKit v2.0 trong document của nó:

CrackersKit 2.0 INSTALLATION

Welcome to the CrackersKit 2.0 installation!
Below is a list of the current tools included :

Analysis :

• OllyDbg 1.10 & Plugins - Modified by SLV *NEW*
• W32Dasm 8.93 - Patched *NEW*
• PEiD 0.93 + Plugins *NEW*
• RDG Packer Detector v0.5.6 Beta - English *NEW*

Rebuilding :

• ImpRec 1.6 - Fixed by MaRKuS_TH-DJM/SnD *NEW*
• Revirgin 1.5 - Fixed *NEW*
• LordPE De Luxe B *NEW*

Packers :

• FSG 2.0
• MEW 11 1.2 SE
• UPX 1.25 & GUI *NEW*
• SLVc0deProtector 0.61 *NEW*
• ARM Protector v0.3 *NEW*
• WinUpack v0.31 Beta *NEW*

Patchers :

• dUP 2 *NEW*
• CodeFusion 3.0
• Universal Patcher Pro v2.0
• Universal Patcher v1.7 *NEW*
• Universal Loader Creator v1.2 *NEW*
• aPatch v1.07
• PMaker v1.2.0.0 *NEW*
• Tola's Patch Engine v2.03b
• ABEL Loader v2.31
• Yoda's Process Patcher *NEW*
• Registry Patch Creator *NEW*
• ScAEvoLa's PatchEngine v1.33 *NEW*
• Dogbert's Genuine Patching Engine v1.41 *NEW*
• Graphical-PatchMaker v1.4 *NEW*
• The aPE v0.0.7 BETA *NEW*
• Liquid2 *NEW*
• PELG v0.3 *NEW*
• PrincessSandy v1.0 *NEW*

HEX Editor :

• Biew v5.6.2
• Hiew v7.10 *NEW*
• WinHex v12.5 *NEW*

Decompilers :

• DeDe 3.50.04
• VB ’Decompiler’ Lite v0.4 *NEW*
• Flasm

Unpackers :

• ACProtect - ACStripper
• ASPack - ASPackDie
• ASProtect > Stripper 2.07 Final & Stripper 2.11 RC2 *NEW*
• DBPE > UnDBPE
• FSG 1.33 > Pumqara's Dumper
• FSG 2.00 > UnFSG
• MEW > UnMEW
• PeCompact 1.x > UnPecomp
• PEncrypt > UnPEncrypt
• PeSpin 0.3 > DeSpinner 0.3
• tELock 0.98-1.0 > UntELock
• EXEStealth > UnStealth
• Xtreme-Protector / Themida > XprotStripper v1.1 *NEW*
• Morphine Killer 1.1 by SuperCracker/SND *NEW*
• ASPR Dumper v0.1 *NEW*
• Armadillo Process Detach v1.1 *NEW*
• Armadillo Dumper v1.0 *NEW*
• Armadillo Nanomite Fixer *NEW*
• Armadillo Distance Decryptor aka Jump Table Fixer *NEW*
• ArmTools (Translated!) *NEW*
• ArmInline v0.1 *NEW*
• Quick Unpack v1.0b3 *NEW*
• Procdump v1.6.2 *NEW*

Keygenning : *NEW*

• TMG Ripper Studio 0.02 *NEW*

Other :

• FileMon v7 (Patched) *NEW*
• RegMon v7 (Patched) *NEW*
• RSATool 2
• DAMN HashCalc
• EVACleaner 2.7
• Process Explorer
• Resource Hacker
• PUPE 2002
• PointH Locator *NEW*
• ASPR CRC Locator 1.2 *NEW*
• PE Tools 1.5 RC5 *NEW*
• API Address Finder *NEW*
• Jump to Hex Convertor *NEW*
• PE GeNeRaToR 1.2.1 *NEW*
• Quick File Viewer v1.0.1 *NEW*
• PE Insight 0.3b *NEW*
• Crypto Searcher *NEW*
• PE Editor v1.7 *NEW*
• bkslash's Inline Patcher *NEW*
• Stud_PE v2.1 *NEW*
• Injecta v0.2 *NEW*
• PE Rebuilder v0.96b *NEW*
• PE Optimizer v1.4 *NEW*
• ToPo v1.2 *NEW*
• NFO Builder 2000 v1.02 *NEW*
• NFO File Maker v1.6 *NEW*
• TMG NFOmakeR v1.0 *NEW*
• hCalc *NEW*


CrackersKit was originally created by DappA/ICU and CrackersKIT2 was put together by Whiterat/ICU.




EBook về hướng dẫn tạo các bản Windows Unattended một cách chi tiết và đầy đủ.

Copy link sống từ nguồn benhvientinhoc.com


http://www.mediafire.com/?sharekey=72922b952588103fa2463c4a2cf80b56c586423bd6ad6f02

 

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|