91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 169KB
    文件類型: .rar
    金幣: 2
    下載: 0 次
    發(fā)布日期: 2021-06-25
  • 語言: 其他
  • 標(biāo)簽:

資源簡介

大家知道,win32窗口的內(nèi)置滾動自繪是個非常棘手的問題,在寫這篇文章之前首先感謝下CSDN的mynamelj,他寫的那個SkinSB開源的時候我就開始使用來美化一般win32窗口的滾動條,很好用,但是最近有想把自己的應(yīng)用遷移到x64平臺的想法,所以必須把全部源碼編譯成64位的版本,以便能在win 64位下獲得最佳性能,好了廢話不多說,繼續(xù)往下看。 改進SkinSB: 當(dāng)時遇到兩大難題,第一個是API鉤子庫detours在X64下用不了,第二個是skinsb自有源碼小部分不適應(yīng)64位。 對于第一個難題,當(dāng)時到微軟網(wǎng)站看了下其實detours 3.0版本有支持64位的,但是不是免費的,收費$9999一套,相當(dāng)于7萬RMB左右,這費用我等實在付不起,只好另找其他方法,經(jīng)同事介紹mhook庫,稍微看了下也是開源的,使用方法也很方便,就兩個函數(shù),一個Mhook_SetHook加載API鉤子,一個Mhook_Unhook

資源截圖

代碼片段和文件信息

//?Copyright?(C)?2003?Matt?Conover?(mconover@gmail.com)
#include?“cpu.h“
#include?

//?NOTE:?this?assumes?default?scenarios?(i.e.?we?assume?CS/DS/ES/SS?and?flat
//?and?all?have?a?base?of?0?and?limit?of?0xffffffff?we?don‘t?try?to?verify
//?that?in?the?GDT)
//
//?TODO:?use?inline?assembly?to?get?selector?for?segment
//?Segment?=?x86?segment?register?(SEG_ES?=?0?SEG_CS?=?1?...)
BYTE?*GetAbsoluteAddressFromSegment(BYTE?Segment?DWORD?Offset)
{
switch?(Segment)
{
//?Windows?uses?a?flat?address?space?(except?FS?for?x86?and?GS?for?x64)
case?0:?//?SEG_ES
case?1:?//?SEG_CS
case?2:?//?SEG_SS
case?3:?//?SEG_DS
return?(BYTE?*)(DWORD_PTR)Offset;
case?4:?//?SEG_FS
case?5:?//?SEG_GS
return?(BYTE?*)(DWORD_PTR)Offset;
//?Note:?we‘re?really?supposed?to?do?this?but?get_teb?is?not?implemented
//?in?this?bastardized?version?of?the?disassembler.
//?return?(BYTE?*)get_teb()?+?Offset;
default:
assert(0);
return?(BYTE?*)(DWORD_PTR)Offset;
}
}

//?This?is?an?GDT/LDT?selector?(pGDT+Selector)
BYTE?*GetAbsoluteAddressFromSelector(WORD?Selector?DWORD?Offset)
{
DEscriptOR_ENTRY?Entry;
GATE_ENTRY?*Gate;
ULONG_PTR?base;

assert(Selector? if?(!GetThreadSelectorEntry(GetCurrentThread()?Selector?(LDT_ENTRY?*)&Entry))?return?NULL;
if?(!Entry.Present)?return?NULL;
if?(Entry.System)
{
base?=?0;
#ifdef?_WIN64
base?|=?(ULONG_PTR)Entry.HighOffset64?<#endif
base?|=?Entry.baseHi?< base?|=?Entry.baseMid?< base?|=?Entry.baseLow;
}
else
{
switch?(Entry.Type)
{
case?1:?//?16-bit?TSS?(available)
case?2:?//?LDT
case?3:?//?16-bit?TSS?(busy)
case?9:?//?32-bit?TSS?(available)
case?11:?//?32-bit?TSS?(busy)
base?=?0;
#ifdef?_WIN64
base?|=?(ULONG_PTR)Entry.HighOffset64?<#endif
base?|=?Entry.baseHi?< base?|=?Entry.baseMid?< base?|=?Entry.baseLow;
break;

case?4:?//?16-bit?call?gate
case?5:?//?task?gate
case?6:?//?16-bit?interrupt?gate
case?7:?//?16-bit?task?gate
case?12:?//?32-bit?call?gate
case?14:?//?32-bit?interrupt?gate
case?15:?//?32-bit?trap?gate
Gate?=?(GATE_ENTRY?*)&Entry;
#ifdef?_WIN64
base?=?((ULONG_PTR)Gate->HighOffset64?<HighOffset?<LowOffset;
#else
base?=?(Gate->HighOffset?<LowOffset;
#endif
assert(!Offset);?Offset?=?0;
break;
default:
assert(0);
return?NULL;
}
}
return?(BYTE?*)base?+?Offset;
}


?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件???????2550??2007-07-09?12:59??SkinSB\disasm\cpu.c

?????文件???????6796??2007-07-09?02:04??SkinSB\disasm\cpu.h

?????文件???????4101??2007-07-09?01:33??SkinSB\disasm\disasm.c

?????文件??????16194??2007-07-09?01:45??SkinSB\disasm\disasm.h

?????文件???????6369??2012-08-10?21:39??SkinSB\disasm\disasm.vcproj

?????文件?????150604??2007-07-08?19:58??SkinSB\disasm\disasm_x86.c

?????文件??????21231??2007-07-08?19:39??SkinSB\disasm\disasm_x86.h

?????文件?????264999??2007-05-29?00:09??SkinSB\disasm\disasm_x86_tables.h

?????文件???????4667??2007-07-09?01:06??SkinSB\disasm\misc.c

?????文件???????1366??2007-07-09?02:04??SkinSB\disasm\misc.h

?????文件??????32692??2012-08-10?20:19??SkinSB\mhook\mhook.cpp

?????文件???????1377??2008-06-26?03:35??SkinSB\mhook\mhook.h

?????文件???????5938??2012-08-10?21:39??SkinSB\mhook\mhook.vcproj

?????文件???????7607??2011-01-08?18:10??SkinSB\skinsb\internal.h

?????文件??????49712??2012-08-10?10:59??SkinSB\skinsb\skinsb.cpp

?????文件????????275??2009-09-23?13:42??SkinSB\skinsb\skinsb.def

?????文件???????3583??2011-01-08?18:10??SkinSB\skinsb\skinsb.h

????..A..H.?????24064??2009-06-23?20:58??SkinSB\skinsb\skinsb.suo

????..A..H.??????9216??2008-06-25?10:21??SkinSB\skinsb\skinsb.suo.old

?????文件??????11399??2012-08-10?22:54??SkinSB\skinsb\skinsb_2005.vcproj

?????文件???????3670??2012-08-10?21:44??SkinSB\skinsb.sln

????..A..H.?????14336??2012-08-10?23:26??SkinSB\skinsb.suo

?????文件??????36920??2012-08-02?14:52??SkinSB\SkinSBDemo\res\scroll.bmp

?????文件??????71116??2009-09-22?19:05??SkinSB\SkinSBDemo\res\SCROLL.psd

?????文件??????37110??2011-01-09?11:31??SkinSB\SkinSBDemo\res\scrollex.bmp

?????文件??????46926??2011-01-09?11:31??SkinSB\SkinSBDemo\res\scrollx.bmp

?????文件??????39270??2011-01-09?11:31??SkinSB\SkinSBDemo\res\scrollxx.bmp

?????文件??????21630??2005-08-12?16:37??SkinSB\SkinSBDemo\res\SkinSBDemo.ico

?????文件????????401??2009-02-15?20:59??SkinSB\SkinSBDemo\res\SkinSBDemo.rc2

?????文件????????999??2011-01-09?11:31??SkinSB\SkinSBDemo\resource.h

............此處省略23個文件信息

評論

共有 條評論

相關(guān)資源