飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 4037|回复: 5

[其他源码] 插入.exe文件源码

[复制链接]
  • TA的每日心情
    慵懒
    2020-9-27 20:02
  • 签到天数: 7 天

    [LV.3]偶尔看看II

    发表于 2012-3-31 17:37:31 | 显示全部楼层 |阅读模式
    源码发布概况
    编程语言: VC/VC++
    详细描述: VC/VC++ 插入.exe文件源码
    网址: bbs.chinapyg.com
    本帖最后由 爱民 于 2012-4-7 11:25 编辑

    标 题: VC/VC++ 插入.exe文件源码..

    链 接: https://www.chinapyg.com


    1. // Base64.cpp: 实现CBase64类.
    2. //
    3. #include "stdafx.h"
    4. #include "Base64.h"

    5. // 静态成员初始化,7-bit 字母表.
    6. CString CBase64::m_sBase64Alphabet =
    7. _T( "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" );

    8. //---------------------------------------------------------------------------
    9. CBase64::CBase64()
    10. {
    11. }

    12. //---------------------------------------------------------------------------
    13. CBase64::~CBase64()
    14. {
    15. }

    16. //---------------------------------------------------------------------------
    17. CString CBase64::Encode(LPCTSTR szEncoding,int nSize)
    18. {
    19. CString sOutput = _T( "" );
    20. int nNumBits;
    21. UINT nDigit;
    22. int lp = 0;

    23. if( szEncoding == NULL )
    24. return sOutput;

    25. m_szInput = szEncoding;
    26. m_nInputSize = nSize;

    27. m_nBitsRemaining = 0;
    28. nDigit = ReadBits(&nNumBits, lp );
    29. while( nNumBits > 0 )
    30. {
    31. sOutput += m_sBase64Alphabet[ (int)nDigit ];
    32. nDigit = ReadBits(&nNumBits, lp );
    33. }

    34. while( sOutput.GetLength() % 4 != 0 )
    35. {
    36. sOutput += '=';
    37. }
    38. return sOutput;
    39. }

    40. //---------------------------------------------------------------------------
    41. // 输出缓冲区大小不小于 3/4 输入缓冲区大小. 为了简便,它们的大小取为一致.
    42. int CBase64::Decode(LPCTSTR szDecoding, LPTSTR szOutput)
    43. {
    44. int c, lp =0;
    45. int nDigit;
    46. int nDecode[ 256 ];

    47. ASSERT( szDecoding != NULL );
    48. ASSERT( szOutput != NULL );
    49. if( szOutput == NULL )
    50. return 0;

    51. if( szDecoding == NULL )
    52. return 0;

    53. CString sInput = szDecoding;
    54. if( sInput.GetLength() == 0 )
    55. return 0;

    56. // 建立解码表.
    57. for( int i = 0; i < 256; i++ )
    58. nDecode[i] = -2; // 非法数字.
    59. for( i=0; i < 64; i++ )
    60. {
    61. nDecode[ m_sBase64Alphabet[ i ] ] = i;
    62. nDecode[ m_sBase64Alphabet[ i ] | 0x80 ] = i; // 忽略8th bit.
    63. nDecode[ '=' ] = -1;
    64. nDecode[ '=' | 0x80 ] = -1;
    65. }

    66. // 清除输出缓冲区.
    67. memset( szOutput, 0, sInput.GetLength() + 1 );

    68. // 对输入数据进行解码.
    69. for( lp = 0, i = 0; lp < sInput.GetLength(); lp++ )
    70. {
    71. c = sInput[ lp ];
    72. nDigit = nDecode[ c & 0x7F ];
    73. if( nDigit < -1 )
    74. {
    75. return 0;
    76. }
    77. else if( nDigit >= 0 )
    78. WriteBits( nDigit & 0x3F, szOutput, i );
    79. }
    80. return i;
    81. }

    82. //---------------------------------------------------------------------------
    83. UINT CBase64::ReadBits(int * pBitsRead, int& lp)
    84. {
    85. ULONG lScratch;
    86. while( ( m_nBitsRemaining < 6 ) &&
    87. ( lp < m_nInputSize ) )
    88. {
    89. int c = m_szInput[ lp++ ];
    90. m_lBitStorage <<= 8;
    91. m_lBitStorage |= (c & 0xff);
    92. m_nBitsRemaining += 8;
    93. }

    94. if( m_nBitsRemaining < 6 )
    95. {
    96. lScratch = m_lBitStorage << ( 6 - m_nBitsRemaining );
    97. *pBitsRead = m_nBitsRemaining;
    98. m_nBitsRemaining = 0;
    99. }
    100. else
    101. {
    102. lScratch = m_lBitStorage >> ( m_nBitsRemaining - 6 );
    103. *pBitsRead = 6;
    104. m_nBitsRemaining -= 6;
    105. }

    106. return (UINT)lScratch & 0x3F;
    107. }

    108. //---------------------------------------------------------------------------
    109. void CBase64::WriteBits(UINT nBits, LPTSTR szOutput, int& i)
    110. {
    111. UINT nScratch;

    112. m_lBitStorage = (m_lBitStorage << 6) | nBits;
    113. m_nBitsRemaining += 6;
    114. while( m_nBitsRemaining > 7 )
    115. {
    116. nScratch = m_lBitStorage >> (m_nBitsRemaining - 8);
    117. szOutput[ i++ ] = nScratch & 0xFF;
    118. m_nBitsRemaining -= 8;
    119. }
    120. }
    复制代码

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?加入我们

    x
    PYG19周年生日快乐!
  • TA的每日心情
    慵懒
    2024-12-4 10:07
  • 签到天数: 444 天

    [LV.9]以坛为家II

    发表于 2012-3-31 17:43:57 | 显示全部楼层
    感谢分享,收藏备用。
    PYG19周年生日快乐!
  • TA的每日心情
    无聊
    2024-1-15 22:57
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2012-4-2 17:25:18 | 显示全部楼层
    文不对题啊。。。这代码是Base64的代码
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2012-4-13 13:41:25 | 显示全部楼层
    看看!好好分析一下!
    PYG19周年生日快乐!
  • TA的每日心情
    无聊
    2017-5-31 13:17
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2012-6-17 19:32:13 | 显示全部楼层
    总感觉不对,呵呵,转帖是否没注意哟
    PYG19周年生日快乐!
  • TA的每日心情
    郁闷
    2022-7-22 23:12
  • 签到天数: 53 天

    [LV.5]常住居民I

    发表于 2012-6-20 16:25:32 | 显示全部楼层
    恩,看看。
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表