Undocument Windows API và VBA

Liên hệ QC

ThangCuAnh

Mới rờ Ét xeo
Tham gia
1/12/17
Bài viết
896
Được thích
792
Giới tính
Nam
Nghề nghiệp
Coder nghỉ hưu, RCE dạo
Cái laptop hư lâu lắc, phải gởi vào thành hồ chứa mưa sữa, mới lấy về.
Nên quay lại tiếp với cái gọi là "rờ chxx em" Windows và VBA.
Topic này tui sẽ đăng lần lượt những gì cu anh tui phát hiện ra trong quá trình "rờ em" Windows API, DLLs và VBAxxx.dll. Các tips, tricks này sẽ bảo đảm không có trên ông "Gấu gồ". Và dùng được cho VBA trên Offices. Chứ "ưn đồ cú mèn" API mà chỉ dùng được cho C/C++, Delphi... thì dân tin học VP ở đây thua.
Tui chỉ sẽ tập trung ở các Windows DLL sau: kernel32.dll, shell32.dll, shlwapi.dll, oleaut32.dll, ole32.dll, advapi32.dll... và 1 ít từ ntdll.dll (core usermode API của Windows). Trên VBExxx.dll thì tui chỉ tập trung vào VBE6 của Office 2007, VBE7 của Office2010 32 và 64bit, các VBExxx.dll khác cũng sẽ gần như tương đượng, không khác nhau mấy.
 
Lần chỉnh sửa cuối:
Khi bật 2 nhân cho Excel, kết quả trên máy tôi, vùng nhớ trao đổi giữa VBA và Excel vẫn là 2, nhưng số thread tham gia tính toán thay đổi đáng kể.
Excel GUI thread (thread chính) giờ lên 2, Worker thread chính để tính toán vẫn là 1, nhưng tại sao lại có sự tham gia của các thread lạ của MSO.dll và 2 đến 3 từ ông Windows bắn ra ? Ông từ winmm.dll có thread priority cao nhất (Highest), ông từ ntdll.dll lâu lâu phọt ra 1 cái rồi biến mất, phải canh nhanh tay chụp màn hình mới được.
Sợ máy bà con nhanh quá không thấy rõ đâu.
Cái này ngoài tầm hiểu biết của em rồi :unknw: :unknw:
 
Upvote 0
Hì hì, tìm ra rồi. Excel Team chơi vầy ai chơi, đua cho lại nổi :) Chia buồm bạn mình :(
 
Upvote 0
Cảm ơn bé nhen, đúng mình suy đoán, 4 nhân 4 string.
Hì hì, test tính năng có phải code của Excel đã được code, build và dùng tính năng chạy đa luồng, đa nhân đó em.
Tội nghiệp ông VBA, đứng giữa Excel với VBA coder, phải è cổ phục vụ khi VBA coder yêu cầu, rồi phải đứng giữa VBA coder với API nữa, cũng phải è cổ mà chạy phục vụ. Nhưng cũng được cái ưu ái là chạy trong 1 thread riêng. Hì hì, không phải tốt vậy đâu, tại thằng Excel nó sợ mày chết ảnh hưởng tao, nên đá mày ra đường đất riêng, đường rộng tao đi cho an toàn. Code của VBEx.dll chỉ được build đơn luồng, đơn nhân mới ác chứ.
Trong đây chỉ thằng oleaut32.dll với cái cache là sướng nhất. OANOCACHE = OLE Allocating No Cache. Bật cờ này lên thằng oleaut32.dll này mới vắt chân lên cổ mà chạy, không thì nó chơi trò ăn gian, làm biếng cấp mới, cứ cache các vùng nhớ yêu cầu cấp bởi SysAllocXXX API hết.
Nghĩ mà tội nghiệp cho Delphi GetMem, làm đủ cách, bao nhiêu năm, cuối cùng cũng phải thua trò Undocument của MS này.
 

File đính kèm

  • 1.png
    1.png
    46.2 KB · Đọc: 15
  • 3.png
    3.png
    47.5 KB · Đọc: 19
Lần chỉnh sửa cuối:
Upvote 0
Cảm ơn bé nhen, đúng mình suy đoán, 4 nhân 4 string.
Hì hì, test tính năng có phải code của Excel đã được code, build và dùng tính năng chạy đa luồng, đa nhân đó em.
8 nhân 8 string
Why ?

Anh có thể giải thích dễ hiểu chúc hơn được không em xắp thắm thắm rồi
 
Lần chỉnh sửa cuối:
Upvote 0
Bé hỏi tụi Excel team đó, cho em xem code Excel của tụi anh đi ? :)
Test sáng giờ, từ hôm qua tới giờ, vì đã nghi nghi rồi. Có nói với bạn mình, thua họ, các hàm built-in của họ thôi, làm sao mà thắng nổi họ, ngang ngang 8-90% của họ là mừng rồi. Cái đó là cái ngưỡng người bình thường không thể vượt qua, phải chấp nhận thôi.
Hì hì, nhưng phát hiện ra cái này, Excel Team chơi chưa khủng đâu, chưa bằng Chrome. Trong lúc chạy, chờ đợi kết quả, mới phát hiện ra là ông Excel không đụng chạm gì đến GPU cả, còn ông Chrome mà nặng tải là ổng nhảy qua dùng GPU tính dùm luôn. Vừa đa process,đa luồng,đa nhân, giờ chơi luôn với GPU. Cửa thắng Excel là ở đây thôi.
Đúng là thiên hạ "nắm nắm" người tài.
 
Upvote 0
Bé hỏi tụi Excel team đó, cho em xem code Excel của tụi anh đi ? :)
Test sáng giờ, từ hôm qua tới giờ, vì đã nghi nghi rồi. Có nói với bạn mình, thua họ, các hàm built-in của họ thôi, làm sao mà thắng nổi họ, ngang ngang 8-90% của họ là mừng rồi. Cái đó là cái ngưỡng người bình thường không thể vượt qua, phải chấp nhận thôi.
Hì hì, nhưng phát hiện ra cái này, Excel Team chơi chưa khủng đâu, chưa bằng Chrome. Trong lúc chạy, chờ đợi kết quả, mới phát hiện ra là ông Excel không đụng chạm gì đến GPU cả, còn ông Chrome mà nặng tải là ổng nhảy qua dùng GPU tính dùm luôn. Vừa đa process,đa luồng,đa nhân, giờ chơi luôn với GPU. Cửa thắng Excel là ở đây thôi.
Đúng là thiên hạ "nắm nắm" người tài.
Ua cái thằng Chrome no liên quan tới đồ họa nhiều hơn excel chứ anh nên có thể Excel team không muốn dùng chăng..

Thôi em đi lại xe đạp đây, đi máy bay chóng mặt quá:;;;::::;;;::::;;;::::;;;::::;;;::::;;;:::
 
Upvote 0
Chỉ người trong team họ mới biết chính xác họ làm gì thôi bé. Mình test vầy chỉ là đưa ra kết luận kiểu suy đoán, vì anh chưa "rờ em" thằng Excel với mso.dll, do nó bự quá mà không có pdb symbol nữa.
Bài đã được tự động gộp:

Thế bé đã hiểu hàm DumpMem, DumpString nó làm gì, nhiệm vụ gì chưa vậy ? :)
Bài đã được tự động gộp:

Giờ bé tự test trên máy bé đi, máy bé nhanh mà, tắt multithread, test 1 nhân, 2 nhân, 3 nhân, 4 nhân, rồi bật multithread, test 1 nhân, 2 nhân, 3 nhân, 4 nhân. Phần setting số nhân đó chú úp cái hình rồi.
Bài đã được tự động gộp:

Nói chung là giờ bạn mình chỉ test cái XLL Delphi của bạn mình được chạy trong thread nào của Excel. Chạy trong thread chính GUI thread thì thua, nếu chạy trong Worker thread của nó cũng thua, nhưng thua ít ít, vì các hàm của nó chạy đa nhân.
Nói chung là thua hết, nên phải tìm hiểu kỹ, sâu về multithread trong Delphi, xuống dưới API thật kỹ luôn. Xem Delphi có support parallel,đa nhân không rồi dùng cho tối ưu nhất. Nếu Delphi support GPU thì dùng GPU đua luôn.
Đó là trước mắt muốn ngang nó hoặc may mắn thì hơn nó chút xíu.
Chứ đầu tụi nó toàn thiên tài, có sạn hết. Người bình thường không có cửa qua. Chưa kể mấy cái giấu, undocument của tụi nó nữa. SDK mà còn giấu, xóa bớt đi mà :)
 
Lần chỉnh sửa cuối:
Upvote 0
Theo lý thuyết thì chúng ta tin rằng chuỗi Ax là 1 thì chuỗi xuống tới VBA chỉ là 1 thôi đó bé. Nôm na cho dễ hiểu và tin vậy đi, biết nhiều khổ, nhức đầu chứ được gì đâu :)
Tự nhiên cảm thấy buồn, nản nản. Biết thêm về 1 điều mà mình không thể vượt qua thì nó buồn hơn vui.
GCC với OpenMP: Open Multi Processor Library có thể vượt qua Excel. Chứ dùng Delphi hay VC++ thuần mà tính dùng multithread để chạy đua với Excel Team thì cũng tốn công vô ích ! Code multithread lại họ không đã ? Tại sao họ chỉ sinh đúng 1 worker thread chạy hết công suất để tính toán ?Trong khi ở đây họ dùng cả parallel, multi processor nữa !
Còn ai ngoài MS nắm rành nhất về hệ điều hành của họ, ngôn ngữ C/C++ của họ, IDE của họ, compiler của họ, thư viện C/C++ của họ, SDK của họ, API của họ, các Undocument của họ, sản phẩm cũng của chính họ !!!!!!!!?????????????
 
Lần chỉnh sửa cuối:
Upvote 0
Chưa kể bao nhiêu nhân tài IT về đầu quân cho MS: cha đẻ Delphi, cao thủ số 1 về C++ thế giới (ngang ngữa cha đẻ C++) cũng về MS phụ trách team viết Universal C++ Library: thư viện C++ chạy đa hệ điều hành, IOT. Các cao thủ số 1, số 2 thế giới về security cũng về MS, như Skype, về MS, phát minh ra Delay Loading, thay thế static link và dynamic call MS phải dùng bao nhiêu năm. Code hàm _delayLoadHelper trong C RTL của VC++ cũng do chính tay ông ta viết.
VN mình tui biết, quen vài người số 1 về security đã và đang làm cho MS: Bruce Dang, Thug4Life... Google thì có Dương Ngọc Thái (morro), người viết cái bài Học An Toàn Thông Tin thì phải học gì mà tôi vừa post bên kia cho bé @thuyyeu99 đọc đó.
Và người ta còn đồn đoán, và đã có xác nhận là MS có những tool, compiler, thư viện hoàn toàn dùng internal riêng trong cty, không bao giờ release ra ngoài. Dùng riêng cho sp của họ.
Chuyện vui chút: hồi Windows 2000 source code bị leak, gần như chứa 80-90% cả Windows ở tầng Kernel và User,người ta ùa nhau download, MS bó tay không chặn được. Sau đó nhiều người xem phải khen các kỹ sư của MS quá siêu, quá giỏi, họ code C/C++ gần như vô địch.
Và trong đó nhiều chuyện cười, MS coder cũng goto, workaround, tà đạo tá lã âm binh, và trong comment nhiều cái buồn cười. Họ cũng fuck fiec chữi nhau, chửi team khác,đổ thừa qua lại, workaround tạm cho các sp của cty khác ở ngoài chạy được.
Lúc đó tui cũng download được, ghi đúng 1 đĩa CD. Giờ nó đâu mất tiêu rồi :)
 
Lần chỉnh sửa cuối:
Upvote 0
MỚI COI TẸO Việt nam mình nhân tài khá nhiều đấy
Lâu lâu hay ngó tẹo
 
Upvote 0
Uhm, các bạn trẻ này bên Viettel Security
 
Upvote 0
Hì hì, thế giờ tin cái vụ TDS symbols chưa ?
 
Upvote 0
HÌnh như trong Delphi nó cho tắt đi đấy

.....................
Tôi chỉ có một phần
trong phần mềm của chúng tôi.
(Bản án dự án yêu cầu Phần mềm C ++ Builder)

Các phần mềm của phần mềm Delphi (32 và 64 bit!):
- Biên dịch vụ của bạn và bạn "TD32" (D7?)
- Tách thông tin TD32 thành thành
tdstrp32.exe -s <yourproject.exe>
Lưu ý: không có phần mềm của bạn -s với exe 64 bit -> nó làm cho bạn exe của bạn! (.tds là OK)
- Tối ưu hóa .tds thành công .pdb.
tds2pdb.exe <yourproject.tds>
- của bạn
- Phần cứng và phần mềm, phần mềm và phần mềm.
- WinDbg.exe (Công thức tính toán của Microsoft cho Windows, x86 cho 32 bit, x64 cho 64 bit)
- Phần mềm -> bản hướng dẫn
- Phá phá
- Phần mềm ->
- Hacker
- Hacker -> hoàng ván ->
- Xem phần mềm của bạn và bạn -> bạn có thể "
 
Upvote 0
Cái vụ layout của bảng VMT của 1 object trong Delphi, nó nằm trong bộ nhớ ra sao, tui cũng đã post rồi, tại bạn không chịu đọc thôi. Đọc cái link bạn vừa post thì cần phải xem lại cái link hồi trước tui post bên kia, link về Internal Data của Delphi đó. Mới hiểu tại sao được.
Hì hì,à mà bạn tắt TDS đi thì cũng vô ích thôi. Vì nó hổ trợ cho coder debug code của họ. Chứ build release thì vẫn có cách lấy lại code Delphi của bạn, chỉ mất thời gian hơn thôi. Vd có TDS thì 1, không có TDS thì 3-5 thôi. Kiên nhẫn là ra hết :)
 
Upvote 0
coi tới lui ròi tại trình kém chưa hiểu tới
ngay code tại GPE này có file Mạnh Lưu lại mấy năm sau coi lại mới à lên 1 cái thì ra nó thế

Thấy mấy trang nó keo trong Delphi nên tắt RTTI đi thì dung lượng file giản + abcxzy
 
Lần chỉnh sửa cuối:
Upvote 0

File đính kèm

  • 1.png
    1.png
    19.3 KB · Đọc: 22
Lần chỉnh sửa cuối:
Upvote 0
Tại trang đó 1 thời là số 1 thế giới về hack, RE, toàn thứ dữ trong đó
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom