|
发表于 2016-3-25 13:19:13
|
显示全部楼层
广东省深圳市
- .版本 2
- .子程序 全局预编译API
- .局部变量 theMachineCode, 字节集
- .局部变量 theMachineCode2, 字节集
- .局部变量 theCodeLength, 整数型
- .局部变量 theSubPtr, 整数型
- .局部变量 theTable, 整数型
- .局部变量 theTableCallDevs, 整数型
- .局部变量 theGbloalTable, 整数型
- .如果真 (是否为调试版 ())
- 返回 () ' 在调试环境下,不做预编译处理
- .如果真结束
- LoadLibraryA = GetProcAddress (LoadLibrary (“kernel32.dll”), “LoadLibraryA”)
- GetProcAddress = GetProcAddress (LoadLibrary (“kernel32.dll”), “GetProcAddress”)
- theMachineCode = { 85, 139, 236, 131, 236, 4, 86, 87, 51, 201, 137, 77, 252, 139, 77, 252, 139, 117, 8, 139, 134, 100, 1, 0, 0, 139, 150, 80, 1, 0, 0, 139, 190, 140, 1, 0, 0, 139, 4, 136, 133, 192, 116, 33, 139, 20, 138, 80, 82, 255, 21 } + 到字节集 (ibase_get_idata (LoadLibraryA)) + { 80, 255, 21 } + 到字节集 (ibase_get_idata (GetProcAddress)) + { 133, 192, 116, 23, 139, 77, 252, 137, 4, 143, 255, 69, 252, 235, 192, 64, 131, 196, 4, 95, 94, 139, 229, 93, 194, 4, 0, 139, 77, 252, 139, 134, 100, 1, 0, 0, 139, 4, 136, 235, 231 }
- theCodeLength = 取字节集长度 (theMachineCode)
- theSubPtr = ibase_get_function (&CompileAPI, 真)
- theTable = ibase_get_function (&GetApiTable, 假) + 22
- theTableCallDevs = ??? () ' <!!!>
- theTable = theTable + theTableCallDevs + 5
- theTableCallDevs = ??? () ' <!!!>
- theTable = theTableCallDevs
- theGbloalTable = ??? () ' <!!!>
- theTableCallDevs = ??? () ' <!!!>
- theGbloalTable = theGbloalTable + theTableCallDevs + 14
- theGbloalTable = ??? () ' <!!!>
- .如果真 (VirtualProtect (theSubPtr, 取字节集长度 (theMachineCode), 64, 0))
- 写到内存 (theMachineCode, theSubPtr, 取字节集长度 (theMachineCode))
- theMachineCode2 = { 185 } + 到字节集 (theGbloalTable) + { 139, 137, 140, 1, 0, 0, 255, 36, 129, 204 }
- theSubPtr = ibase_get_function (&JmpTable, 假)
- .如果真 (VirtualProtect (theSubPtr, 取字节集长度 (theMachineCode2), 64, 0))
- 写到内存 (theMachineCode2, theSubPtr, 取字节集长度 (theMachineCode2))
- .如果真结束
- .如果真 (VirtualProtect (theTable, 4, 64, 0))
- 写到内存 (theSubPtr, theTable, 4)
- .如果真结束
- .如果真结束
- theTable = CompileAPI (theGbloalTable)
- .如果真 (theTable > 1)
- 信息框 (“API: ” + 指针到文本 (theTable) + “ 预编译失败,请检查该函数是否存在!”, #错误图标, “错误:”, )
复制代码 |
|