当前位置: 主页 > 百科 > 计算机编程 > 易语言源码 >
-12 Comments

如何篇写GETDisksn源代码?

发布于:2016-07-05  |   作者:http://www.zxjsq.net  |   已聚集:人围观


.子程序 _启动子程序, 整数型, , 请在本子程序中放置易模块初始化代码


调试输出 (Disksn ())

_临时子程序 ()  ' 在初始化代码执行完毕后调用测试代码

返回 (0)  ' 可以根据您的需要返回任意数值


.子程序 _临时子程序


' 本名称子程序用作测试程序用,仅在开发及调试环境中有效,编译发布程序前将被系统自动清空,请将所有用作测试的临时代码放在本子程序中。 ***注意不要修改本子程序的名称、参数及返回值类型。


.子程序 GUID, 文本型, 公开

.局部变量 guid, 字节集

.局部变量 a, 长整数型

.局部变量 b, 整数型

.局部变量 c, 整数型

.局部变量 s, 文本型

.局部变量 i, 整数型


guid = 取空白字节集 (16)

CoCreateGuid (guid)

a = 取字节集数据 (取字节集左边 (guid, 4), #长整数型)

b = 取字节集数据 (取字节集中间 (guid, 5, 2), #整数型)

c = 取字节集数据 (取字节集中间 (guid, 7, 2), #整数型)

s = “”

s = s + 取文本右边 (“00000000” + 取十六进制文本 (a), 8) + “-”

s = s + 取文本右边 (“0000” + 取十六进制文本 (b), 4) + “-”

s = s + 到小写 (取文本右边 (“0000” + 取十六进制文本 (c), 4)) + “-”  ' 第三部分中的字母为小写字母

.计次循环首 (8, i)

    s = s + 取文本右边 (“00” + 取十六进制文本 (guid [i + 8]), 2)

    .如果真 (i = 2)

        s = s + “-”

    .如果真结束


.计次循环尾 ()

返回 (“{” + s + “}”)


.子程序 Hash, 文本型, 公开

.参数 TempByte, 字节集

.局部变量 hCryptProv, 整数型

.局部变量 hKey, 整数型

.局部变量 hHash, 整数型

.局部变量 pbBuffer, 字节集

.局部变量 cbHash, 整数型

.局部变量 rgbHash, 字节集

.局部变量 rgbDigits, 字节集

.局部变量 temp, 字节集

.局部变量 temp2, 整数型

.局部变量 temp3, 整数型

.局部变量 len, 整数型


.如果 (CryptAcquireContextA (hCryptProv, “”, “”, 1, -268435456) = 0)

    .如果真 (CryptAcquireContextA (hCryptProv, “”, “”, 1, 0) = 0)

        返回 (“”)

    .如果真结束


.否则

    .如果 (CryptCreateHash (hCryptProv, 32771, hKey, 0, hHash) = 0)

        CryptReleaseContext (hCryptProv, 0)

        返回 (“”)

    .否则

        pbBuffer = TempByte

        len = 取字节集长度 (TempByte)

        .如果 (CryptHashData (hHash, pbBuffer, len, 0) = 0)

            CryptDestroyHash (hHash)

            CryptReleaseContext (hCryptProv, 0)

            返回 (“”)

        .否则

            rgbHash = 取空白字节集 (32)

            cbHash = 32

            .如果 (CryptGetHashParam (hHash, 2, rgbHash, cbHash, 0) = 0)

                CryptDestroyHash (hHash)

                CryptReleaseContext (hCryptProv, 0)

                返回 (“”)

            .否则

                rgbDigits = 到字节集 (“0123456789ABCDEF”)

                temp = 取空白字节集 (32 × 2)

                .变量循环首 (0, cbHash - 1, 1, temp3)

                    temp2 = rgbHash [temp3 + 1]

                    temp [temp3 × 2 + 1] = rgbDigits [右移 (temp2, 4) + 1]

                    temp [temp3 × 2 + 2] = rgbDigits [位与 (temp2, 15) + 1]

                .变量循环尾 ()

                CryptDestroyHash (hHash)

                CryptReleaseContext (hCryptProv, 0)

            .如果结束


        .如果结束


    .如果结束


.如果结束

返回 (到文本 (temp))


.子程序 Disksn, 文本型, 公开

.局部变量 driveName, 文本型

.局部变量 hPhysicalDriveIOCTL, 整数型

.局部变量 query, 字节集

.局部变量 cbBytesReturned, 整数型

.局部变量 buffer, 字节集

.局部变量 buffersize, 整数型

.局部变量 Disksn, 文本型

.局部变量 Temp, 文本型


driveName = “\\.\PhysicalDrive0”

hPhysicalDriveIOCTL = CreateFileA (driveName, 0, 位或 (#FILE_SHARE_READ, #FILE_SHARE_WRITE), 0, #OPEN_EXISTING, 0, 0)

.如果真 (hPhysicalDriveIOCTL = #INVALID_HANDLE_VALUE)

    返回 (“”)

.如果真结束

buffersize = 1024

query = 取空白字节集 (12)

buffer = 取空白字节集 (buffersize)

DeviceIoControl (hPhysicalDriveIOCTL, 2954240, lstrcpyn (query, query, 0), 12, lstrcpyn (buffer, buffer, 0), buffersize, cbBytesReturned, 0)

CloseHandle (hPhysicalDriveIOCTL)

Disksn = Hash (buffer)

Temp = 取文本左边 (Disksn, 8) + “-”

Temp = Temp + 取文本中间 (Disksn, 5, 4) + “-”

Temp = Temp + 取文本中间 (Disksn, 10, 4) + “-”

Temp = Temp + 取文本中间 (Disksn, 14, 4) + “-”

Temp = Temp + 取文本中间 (Disksn, 19, 12)

返回 (“{” + Temp + “}”)


.子程序 HEXByte, 文本型, 公开

.参数 Original, 字节集

.局部变量 A, 整数型

.局部变量 B, 整数型

.局部变量 C, 整数型

.局部变量 D, 整数型

.局部变量 Result, 文本型


置入代码 ({ 139, 93, 8, 139, 27, 139, 91, 4, 137, 93, 252 })  ' 取字节集长度

' 原文长度---dword ptr [ebp-4]

.如果真 (A < 1)

    返回 (“”)

.如果真结束

置入代码 ({ 232, 0, 0, 0, 0, 89, 131, 193, 9, 233, 0, 2, 0, 0 })  ' 跳转到代码

' 下面是码表

置入代码 ({ 48, 48, 48, 49, 48, 50, 48, 51, 48, 52, 48, 53, 48, 54, 48, 55, 48, 56, 48, 57, 48, 65, 48, 66, 48, 67, 48, 68, 48, 69, 48, 70, 49, 48, 49, 49, 49, 50, 49, 51, 49, 52, 49, 53, 49, 54, 49, 55, 49, 56, 49, 57, 49, 65, 49, 66, 49, 67, 49, 68, 49, 69, 49, 70, 50, 48, 50, 49, 50, 50, 50, 51, 50, 52, 50, 53, 50, 54, 50, 55, 50, 56, 50, 57, 50, 65, 50, 66, 50, 67, 50, 68, 50, 69, 50, 70, 51, 48, 51, 49, 51, 50, 51, 51, 51, 52, 51, 53, 51, 54, 51, 55, 51, 56, 51, 57, 51, 65, 51, 66, 51, 67, 51, 68, 51, 69, 51, 70, 52, 48, 52, 49, 52, 50, 52, 51, 52, 52, 52, 53, 52, 54, 52, 55, 52, 56, 52, 57, 52, 65, 52, 66, 52, 67, 52, 68, 52, 69, 52, 70, 53, 48, 53, 49, 53, 50, 53, 51, 53, 52, 53, 53, 53, 54, 53, 55, 53, 56, 53, 57, 53, 65, 53, 66, 53, 67, 53, 68, 53, 69, 53, 70, 54, 48, 54, 49, 54, 50, 54, 51, 54, 52, 54, 53, 54, 54, 54, 55, 54, 56, 54, 57, 54, 65, 54, 66, 54, 67, 54, 68, 54, 69, 54, 70, 55, 48, 55, 49, 55, 50, 55, 51, 55, 52, 55, 53, 55, 54, 55, 55, 55, 56, 55, 57, 55, 65, 55, 66, 55, 67, 55, 68, 55, 69, 55, 70, 56, 48, 56, 49, 56, 50, 56, 51, 56, 52, 56, 53, 56, 54, 56, 55, 56, 56, 56, 57, 56, 65, 56, 66, 56, 67, 56, 68, 56, 69, 56, 70, 57, 48, 57, 49, 57, 50, 57, 51, 57, 52, 57, 53, 57, 54, 57, 55, 57, 56, 57, 57, 57, 65, 57, 66, 57, 67, 57, 68, 57, 69, 57, 70, 65, 48, 65, 49, 65, 50, 65, 51, 65, 52, 65, 53, 65, 54, 65, 55, 65, 56, 65, 57, 65, 65, 65, 66, 65, 67, 65, 68, 65, 69, 65, 70, 66, 48, 66, 49, 66, 50, 66, 51, 66, 52, 66, 53, 66, 54, 66, 55, 66, 56, 66, 57, 66, 65, 66, 66, 66, 67, 66, 68, 66, 69, 66, 70, 67, 48, 67, 49, 67, 50, 67, 51, 67, 52, 67, 53, 67, 54, 67, 55, 67, 56, 67, 57, 67, 65, 67, 66, 67, 67, 67, 68, 67, 69, 67, 70, 68, 48, 68, 49, 68, 50, 68, 51, 68, 52, 68, 53, 68, 54, 68, 55, 68, 56, 68, 57, 68, 65, 68, 66, 68, 67, 68, 68, 68, 69, 68, 70, 69, 48, 69, 49, 69, 50, 69, 51, 69, 52, 69, 53, 69, 54, 69, 55, 69, 56, 69, 57, 69, 65, 69, 66, 69, 67, 69, 68, 69, 69, 69, 70, 70, 48, 70, 49, 70, 50, 70, 51, 70, 52, 70, 53, 70, 54, 70, 55, 70, 56, 70, 57, 70, 65, 70, 66, 70, 67, 70, 68, 70, 69, 70, 70 })

' 跳转到这里了~~

D = 0  ' ebp-8

C = 1  ' ebp-c

B = 2  ' ebp-10

置入代码 ({ 137, 77, 248 })  ' 码表地址到---》变量dword ptr [ebp-8]

置入代码 ({ 209, 101, 252 })  ' 原文长度 × 2

Result = 取空白文本 (A)

置入代码 ({ 137, 69, 244 })  ' 结果地址 ebp-c

置入代码 ({ 139, 93, 8, 139, 27, 131, 195, 8, 137, 93, 240 })  ' 原文地址ebp-10

' 核心计算过程

置入代码 ({ 139, 117, 240, 139, 93, 248, 139, 125, 244, 209, 109, 252, 139, 77, 252, 3, 206, 51, 192, 138, 6, 70, 209, 224, 102, 139, 20, 24, 102, 137, 23, 71, 71, 59, 241, 124, 236 })

返回 (Result)


.子程序 ByteHex, 字节集, 公开

.参数 Original, 文本型

.局部变量 A, 整数型

.局部变量 B, 整数型

.局部变量 C, 整数型

.局部变量 D, 整数型

.局部变量 Result, 字节集


A = 0  ' ebp-4

B = 1  ' ebp-8

C = 2  ' ebp-c

D = 3  ' ebp-10

置入代码 ({ 139, 93, 8, 139, 27, 137, 93, 248, 139, 251, 185, 255, 255, 255, 255, 50, 192, 252, 242, 174, 184, 254, 255, 255, 255, 43, 193, 137, 69, 252 })

.如果真 (A < 1)

    返回 ({  })

.如果真结束

置入代码 ({ 232, 0, 0, 0, 0, 89, 131, 193, 6, 235, 103 })  ' 跳转到代码

' ==========码表开始

置入代码 ({ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 0, 0, 0, 0, 0, 0, 10, 11, 12, 13, 14, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 11, 12, 13, 14, 15 })

' 跳到这里了

置入代码 ({ 144, 144, 144, 144, 144, 137, 77, 244 })  ' 码表地址到ebp-c

置入代码 ({ 209, 109, 252 })  ' 原文长度/2

Result = 取空白字节集 (A)

置入代码 ({ 131, 192, 8, 137, 69, 240 })  ' 结果地址

' 计算开始'

置入代码 ({ 139, 93, 244, 139, 117, 248, 139, 125, 240, 209, 101, 252, 139, 77, 252, 3, 206, 51, 192, 102, 139, 6, 70, 70, 80, 37, 255, 0, 0, 0, 138, 52, 24, 88, 193, 232, 8, 138, 20, 24, 192, 230, 4, 8, 242, 136, 23, 71, 59, 241, 124, 223 })

返回 (Result)


标签:                   喜欢:收藏