自己捣腾了一天,弄了一个修改软件过期的小程序,主要是自己有几款有时间限制的软件,每次改时间很麻烦。有了这个程序就可以一劳永逸了。

前提:只适用于修改操作系统时间后,程序就能够正常使用的那种软件。如Lingoes,reflector,这两款我测试是可以的。

在Win7下必需用管理员的方式启动。

思路很简单:

1,修改操作系统时间到软件过期前。

2,启动软件。

3,改回操作系统时间。

程序类似于网上的一款好像叫RunAsDate的软件,没用过,只大概记得它的界面,决定自己实现类似的功能。

该程序的亮点是

1,可以生成破解程序的快捷方式到桌面上,生成的快捷方式图标和原来的程序一样(有轻度的失真),生成这个快捷方式后,就不用这个破解程序了,这个才是我要的一劳永逸的东西。

2,对原来的程序exe文件做了备份,避免因破解不成功,软件自身因过期启动自我销毁的情况。如:Refletor就是其中一例。

先看一张程序界面图:

基本操作:

破解启动:界面功能很简单,一看就会用。有效时间一般不知道有效时间,不要指定。选中待破解的程序路径,点“破解启动”按钮,就可以启动程序,但是这种方式只能单次启动,也就是每次都要启动这个破解程序。

快捷方式生成:在“破解启动”成功的前提下,生成的快捷方式才可用。这种方式可以一劳永逸的生成桌面图标,下次也不用启动这个破解程序了。

下面这两个是生成的快捷方式图标:

快捷方式名称栏,可以输入名称来生成快捷方式。

如下图:

点快捷方式生成后:

不错,以后我就可以在桌面上直接启动这些过期的软件了。

下面贴出主要的代码程序:

Win32API

[csharp] view plaincopy
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using System.Runtime.InteropServices;
  5. namespace ApplicationActive
  6. {
  7. [StructLayout(LayoutKind.Sequential)]
  8. public struct SYSTEMTIME
  9. {
  10. public ushort wYear;
  11. public ushort wMonth;
  12. public ushort wDayOfWeek;
  13. public ushort wDay;
  14. public ushort wHour;
  15. public ushort wMinute;
  16. public ushort wSecond;
  17. public ushort wMilliseconds;
  18. public void FromDateTime(DateTime dateTime)
  19. {
  20. wYear = (ushort)dateTime.Year;
  21. wMonth = (ushort)dateTime.Month;
  22. wDayOfWeek = (ushort)dateTime.DayOfWeek;
  23. wDay = (ushort)dateTime.Day;
  24. wHour = (ushort)dateTime.Hour;
  25. wMinute = (ushort)dateTime.Minute;
  26. wSecond = (ushort)dateTime.Second;
  27. wMilliseconds = (ushort)dateTime.Millisecond;
  28. }
  29. public DateTime ToDateTime()
  30. {
  31. return new DateTime(wYear, wMonth, wDay, wHour, wMinute, wSecond);
  32. }
  33. }
  34. [Flags]
  35. enum SHGFI : int
  36. {
  37. /// <summary>get icon</summary>
  38. Icon = 0x000000100,
  39. /// <summary>get display name</summary>
  40. DisplayName = 0x000000200,
  41. /// <summary>get type name</summary>
  42. TypeName = 0x000000400,
  43. /// <summary>get attributes</summary>
  44. Attributes = 0x000000800,
  45. /// <summary>get icon location</summary>
  46. IconLocation = 0x000001000,
  47. /// <summary>return exe type</summary>
  48. ExeType = 0x000002000,
  49. /// <summary>get system icon index</summary>
  50. SysIconIndex = 0x000004000,
  51. /// <summary>put a link overlay on icon</summary>
  52. LinkOverlay = 0x000008000,
  53. /// <summary>show icon in selected state</summary>
  54. Selected = 0x000010000,
  55. /// <summary>get only specified attributes</summary>
  56. Attr_Specified = 0x000020000,
  57. /// <summary>get large icon</summary>
  58. LargeIcon = 0x000000000,
  59. /// <summary>get small icon</summary>
  60. SmallIcon = 0x000000001,
  61. /// <summary>get open icon</summary>
  62. OpenIcon = 0x000000002,
  63. /// <summary>get shell size icon</summary>
  64. ShellIconSize = 0x000000004,
  65. /// <summary>pszPath is a pidl</summary>
  66. PIDL = 0x000000008,
  67. /// <summary>use passed dwFileAttribute</summary>
  68. UseFileAttributes = 0x000000010,
  69. /// <summary>apply the appropriate overlays</summary>
  70. AddOverlays = 0x000000020,
  71. /// <summary>Get the index of the overlay in the upper 8 bits of the iIcon</summary>
  72. OverlayIndex = 0x000000040,
  73. }
  74. [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
  75. public struct SHFILEINFO
  76. {
  77. public SHFILEINFO(bool b)
  78. {
  79. hIcon = IntPtr.Zero;
  80. iIcon = 0;
  81. dwAttributes = 0;
  82. szDisplayName = "";
  83. szTypeName = "";
  84. }
  85. public IntPtr hIcon;
  86. public int iIcon;
  87. public uint dwAttributes;
  88. [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
  89. public string szDisplayName;
  90. [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 80)]
  91. public string szTypeName;
  92. };
  93. class Win32API
  94. {
  95. [DllImport("user32.dll", EntryPoint = "FindWindow")]
  96. public static extern IntPtr FindWindows(string lpClassName, string lpWindowName);
  97. [DllImport("kernel32.dll")]
  98. public static extern bool SetLocalTime(ref SYSTEMTIME Time);
  99. [DllImport("shell32.dll", CharSet = CharSet.Auto)]
  100. public static extern int SHGetFileInfo(
  101. string pszPath,
  102. int dwFileAttributes,
  103. out    SHFILEINFO psfi,
  104. uint cbfileInfo,
  105. SHGFI uFlags);
  106. }
  107. }

创建图标,备份,启动用的共通类

[csharp] view plaincopy
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Windows.Forms;
  4. using System.Text;
  5. using System.Drawing;
  6. using System.Runtime.InteropServices;
  7. using IWshRuntimeLibrary;
  8. using System.IO;
  9. using System.Diagnostics;
  10. namespace ApplicationActive
  11. {
  12. class CommonFunction
  13. {
  14. public enum StartMode
  15. {
  16. WinForm,
  17. ShortCut
  18. }
  19. public static readonly string CRACK_FOLDER_NAME = "xsw_Crack";
  20. public static readonly string CONFIG_NAME = "xsw_Crack.xml";
  21. public static StartMode Mode = StartMode.WinForm;
  22. private static Icon GetIcon(string strPath, bool bSmall)
  23. {
  24. SHFILEINFO info = new SHFILEINFO(true);
  25. int cbFileInfo = Marshal.SizeOf(info);
  26. SHGFI flags;
  27. if (bSmall)
  28. flags = SHGFI.Icon | SHGFI.SmallIcon | SHGFI.UseFileAttributes;
  29. else
  30. flags = SHGFI.Icon | SHGFI.LargeIcon;
  31. Win32API.SHGetFileInfo(strPath, 256, out info, (uint)cbFileInfo, flags);
  32. return Icon.FromHandle(info.hIcon);
  33. }
  34. public static string GetCrackFolderPath(string strPath)
  35. {
  36. string dirName = Path.GetDirectoryName(strPath);
  37. dirName += "\\" + CRACK_FOLDER_NAME;
  38. if (!Directory.Exists(dirName))
  39. {
  40. Directory.CreateDirectory(dirName);
  41. }
  42. return dirName;
  43. }
  44. public static void CreateShortCut(string strPath, string shortcutName)
  45. {
  46. string shortcutPath;
  47. string shortcutIconLocation;
  48. string crackFolder;
  49. crackFolder = GetCrackFolderPath(strPath);
  50. shortcutPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\" + shortcutName + ".lnk";
  51. shortcutIconLocation = crackFolder + "\\" + shortcutName + ".ico";
  52. //create Icon
  53. Icon shortcutIcon = GetIcon(strPath, false);
  54. FileStream fs = new FileStream(shortcutIconLocation, FileMode.OpenOrCreate, FileAccess.Write);
  55. shortcutIcon.Save(fs);
  56. fs.Close();
  57. //copy crack program file
  58. string crackFileName = new FileInfo(System.Reflection.Assembly.GetExecutingAssembly().Location).Name;
  59. if (!System.IO.File.Exists(crackFolder + "\\" + crackFileName))
  60. {
  61. System.IO.File.Copy(System.Reflection.Assembly.GetExecutingAssembly().Location, crackFolder + "\\" + crackFileName, true);
  62. }
  63. System.IO.File.Copy(Application.StartupPath + "\\" + CommonFunction.CONFIG_NAME, crackFolder + "\\" + CommonFunction.CONFIG_NAME,true);
  64. BackupTargetFile(strPath);
  65. WshShell shell = new WshShell();
  66. IWshShortcut shortcut = (IWshShortcut)shell.CreateShortcut(shortcutPath);
  67. shortcut.Arguments = "\"" + strPath + "\"";
  68. shortcut.TargetPath = crackFolder + "\\" + crackFileName;
  69. shortcut.WorkingDirectory = crackFolder;
  70. shortcut.WindowStyle = 1; //normal
  71. shortcut.IconLocation = shortcutIconLocation;
  72. shortcut.Save();
  73. }
  74. public static void BackupTargetFile(string strPath)
  75. {
  76. string strFileTo = GetCrackFolderPath(strPath) +"\\" + new FileInfo(strPath).Name;
  77. if (!System.IO.File.Exists(strFileTo))
  78. {
  79. System.IO.File.Copy(strPath, strFileTo);
  80. }
  81. }
  82. public static void StartProgram(string path, DateTime? settingDate)
  83. {
  84. System.Diagnostics.Stopwatch stopWatch = new System.Diagnostics.Stopwatch();
  85. DateTime NowDate = DateTime.Now;
  86. stopWatch.Start();
  87. //back up EXE file
  88. BackupTargetFile(path);
  89. FileInfo fileInfo = new System.IO.FileInfo(path);
  90. DateTime validDateTime = fileInfo.CreationTime > fileInfo.LastWriteTime ? fileInfo.LastWriteTime : fileInfo.CreationTime;
  91. if (settingDate.HasValue)
  92. {
  93. validDateTime = settingDate.Value;
  94. }
  95. //update date
  96. SYSTEMTIME st = new SYSTEMTIME();
  97. st.FromDateTime(validDateTime);
  98. Win32API.SetLocalTime(ref st);
  99. System.Threading.Thread.Sleep(1000);
  100. try
  101. {
  102. //start program
  103. ProcessStartInfo PstartInfoExe = new ProcessStartInfo();
  104. PstartInfoExe.FileName = path;
  105. PstartInfoExe.WindowStyle = ProcessWindowStyle.Minimized;
  106. PstartInfoExe.UseShellExecute = false;
  107. Process p = new Process();
  108. p.StartInfo = PstartInfoExe;
  109. p.Start();
  110. p.WaitForInputIdle(10000);
  111. System.Threading.Thread.Sleep(2000);
  112. if (CommonFunction.Mode == StartMode.WinForm)
  113. {
  114. ConfigManager.GetInstance().FilePath = path;
  115. if (settingDate.HasValue)
  116. {
  117. ConfigManager.GetInstance().ExpireDate = validDateTime;
  118. }
  119. ConfigManager.GetInstance().Save();
  120. }
  121. }
  122. catch
  123. {
  124. }
  125. finally
  126. {
  127. //update to old date
  128. stopWatch.Stop();
  129. NowDate.Add(stopWatch.Elapsed);
  130. st.FromDateTime(NowDate);
  131. Win32API.SetLocalTime(ref st);
  132. }
  133. }
  134. }
  135. }

xml保存用

[csharp] view plaincopy
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using System.ComponentModel;
  5. using System.Data;
  6. using System.Drawing;
  7. using System.Windows.Forms;
  8. using System.Diagnostics;
  9. using System.IO;
  10. using System.Xml;
  11. namespace ApplicationActive
  12. {
  13. class ConfigManager
  14. {
  15. private static ConfigManager instance = null;
  16. public static ConfigManager GetInstance()
  17. {
  18. if (instance == null)
  19. instance = new ConfigManager();
  20. return instance;
  21. }
  22. private DateTime? _expireDate = null;
  23. public DateTime? ExpireDate
  24. {
  25. get { return _expireDate; }
  26. set { _expireDate = value; }
  27. }
  28. private string _filePath  = string.Empty;
  29. public string FilePath
  30. {
  31. get { return _filePath; }
  32. set { _filePath = value; }
  33. }
  34. private ConfigManager()
  35. {
  36. GetXml();
  37. }
  38. public void Save()
  39. {
  40. string xmlPath = Application.StartupPath + "\\" + CommonFunction.CONFIG_NAME;
  41. if (this._filePath == string.Empty)
  42. {
  43. return;
  44. }
  45. XmlWriter xmlWriter = XmlWriter.Create(xmlPath);
  46. xmlWriter.WriteStartElement("Root");
  47. xmlWriter.WriteElementString("ExePath", _filePath);
  48. if (_expireDate.HasValue)
  49. {
  50. xmlWriter.WriteElementString("ExpireDate", this._expireDate.Value.ToString("yyyy/MM/dd HH:mm:ss"));
  51. }
  52. xmlWriter.WriteEndElement();
  53. xmlWriter.Close();
  54. }
  55. public void GetXml()
  56. {
  57. string xmlPath = Application.StartupPath + "\\" + CommonFunction.CONFIG_NAME; ;
  58. if (!System.IO.File.Exists(xmlPath))
  59. {
  60. return;
  61. }
  62. XmlDocument xmlDoc = new XmlDocument();
  63. xmlDoc.Load(xmlPath);
  64. XmlNode xmlNode = xmlDoc.SelectSingleNode("Root");
  65. for (int i = 0; i < xmlNode.ChildNodes.Count; i++)
  66. {
  67. if (xmlNode.ChildNodes[i].Name == "ExePath")
  68. {
  69. this._filePath = xmlNode.ChildNodes[i].InnerText;
  70. }
  71. if (xmlNode.ChildNodes[i].Name == "ExpireDate")
  72. {
  73. try
  74. {
  75. this._expireDate = Convert.ToDateTime(xmlNode.ChildNodes[i].InnerText);
  76. }
  77. catch
  78. {
  79. }
  80. }
  81. }
  82. }
  83. }
  84. }

Form 类

[csharp] view plaincopy
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Text;
  7. using System.Windows.Forms;
  8. using System.Diagnostics;
  9. using System.IO;
  10. using System.Xml;
  11. using System.Runtime.InteropServices;
  12. using IWshRuntimeLibrary;
  13. namespace ApplicationActive
  14. {
  15. public partial class FrmSetting : Form
  16. {
  17. public FrmSetting()
  18. {
  19. InitializeComponent();
  20. }
  21. private void FrmSetting_Load(object sender, EventArgs e)
  22. {
  23. if (ConfigManager.GetInstance().FilePath != string.Empty)
  24. {
  25. this.tbx_pgmPath.Text = ConfigManager.GetInstance().FilePath;
  26. }
  27. if (ConfigManager.GetInstance().ExpireDate.HasValue)
  28. {
  29. this.chkExpire.Checked = true;
  30. this.dtpExpireDate.Value = ConfigManager.GetInstance().ExpireDate.Value;
  31. }
  32. }
  33. private void btnFile_Click(object sender, EventArgs e)
  34. {
  35. OpenFileDialog fileDialog = new OpenFileDialog();
  36. fileDialog.Filter = "file (*.exe)|*.exe";
  37. if (fileDialog.ShowDialog() == DialogResult.OK)
  38. {
  39. this.tbx_pgmPath.Text = fileDialog.FileName;
  40. }
  41. }
  42. private void btn_startPgm_Click(object sender, EventArgs e)
  43. {
  44. if (InputCheck() == false)
  45. return;
  46. if (this.dtpExpireDate.Enabled)
  47. {
  48. CommonFunction.StartProgram(this.tbx_pgmPath.Text, this.dtpExpireDate.Value);
  49. }
  50. else
  51. {
  52. CommonFunction.StartProgram(this.tbx_pgmPath.Text, null);
  53. }
  54. }
  55. private void btn_CreateIcon_Click(object sender, EventArgs e)
  56. {
  57. if (InputCheck() == false)
  58. return;
  59. string shortcutName = "";
  60. if (this.tbx_IconName.Text == string.Empty)
  61. {
  62. shortcutName = new System.IO.FileInfo(this.tbx_pgmPath.Text).Name.Substring(0, new System.IO.FileInfo(this.tbx_pgmPath.Text).Name.Length - 4);
  63. }
  64. else
  65. {
  66. shortcutName = this.tbx_IconName.Text;
  67. }
  68. try
  69. {
  70. CommonFunction.CreateShortCut(this.tbx_pgmPath.Text, shortcutName);
  71. MessageBox.Show("生成成功!",this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information);
  72. }
  73. catch
  74. {
  75. MessageBox.Show("生成失败!", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
  76. }
  77. }
  78. private void chkExpire_CheckedChanged(object sender, EventArgs e)
  79. {
  80. if (chkExpire.Checked)
  81. {
  82. this.dtpExpireDate.Enabled = true;
  83. }
  84. else
  85. {
  86. this.dtpExpireDate.Enabled = false;
  87. }
  88. }
  89. private void btn_Close_Click(object sender, EventArgs e)
  90. {
  91. this.Close();
  92. }
  93. private bool InputCheck()
  94. {
  95. string filePath = this.tbx_pgmPath.Text;
  96. if (filePath == "")
  97. {
  98. MessageBox.Show("file is not seleted.", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning);
  99. return false ;
  100. }
  101. if (!System.IO.File.Exists(filePath))
  102. {
  103. string backupFile = System.IO.Path.GetDirectoryName(filePath) + "\\" + CommonFunction.CRACK_FOLDER_NAME + "\\" + filePath.Substring(filePath.LastIndexOf("\\") + 1);
  104. if (System.IO.File.Exists(backupFile))
  105. {
  106. try
  107. {
  108. System.IO.File.Copy(backupFile, filePath);
  109. }
  110. catch
  111. {
  112. MessageBox.Show("file is not found!", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
  113. return false ;
  114. }
  115. }
  116. else
  117. {
  118. MessageBox.Show("file is not found!", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
  119. return false ;
  120. }
  121. }
  122. return true;
  123. }
  124. }
  125. }

program类

[csharp] view plaincopy
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Windows.Forms;
  4. namespace ApplicationActive
  5. {
  6. static class Program
  7. {
  8. /// <summary>
  9. /// アプリケーションのメイン エントリ ポイントです。
  10. /// </summary>
  11. [STAThread]
  12. static void Main(string[] args)
  13. {
  14. Application.EnableVisualStyles();
  15. Application.SetCompatibleTextRenderingDefault(false);
  16. ConfigManager.GetInstance().GetXml();
  17. if (args.Length > 0)
  18. {
  19. CommonFunction.Mode = CommonFunction.StartMode.ShortCut;
  20. string filePath = args[0];
  21. if (!System.IO.File.Exists(filePath))
  22. {
  23. string backupFile = System.IO.Path.GetDirectoryName(filePath) + "\\" + CommonFunction.CRACK_FOLDER_NAME + "\\" + filePath.Substring(filePath.LastIndexOf("\\") + 1);
  24. if (System.IO.File.Exists(backupFile))
  25. {
  26. try
  27. {
  28. System.IO.File.Copy(backupFile, filePath);
  29. }
  30. catch
  31. {
  32. MessageBox.Show("file:<" + filePath + ">" + " not found!", "error", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  33. return;
  34. }
  35. }
  36. else
  37. {
  38. MessageBox.Show("file:<" + filePath + ">" + " not found!", "error", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  39. return;
  40. }
  41. }
  42. CommonFunction.StartProgram(filePath, ConfigManager.GetInstance().ExpireDate);
  43. }
  44. else
  45. {
  46. CommonFunction.Mode = CommonFunction.StartMode.WinForm;
  47. Application.Run(new FrmSetting());
  48. }
  49. }
  50. }
  51. }

以上程序是用vs2005,在xp环境下编译的,在win7上转化成vs2008后发现不能正常运行,其原因是win7的UAC账户控制,必需要以管理员的方式启动才能运行,于是在vs2008中加入一个app.manifest文件,配置修改如下:

[html] view plaincopy
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  3. <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
  4. <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
  5. <security>
  6. <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
  7. <!-- UAC 清单选项
  8. 如果希望更改 Windows 用户帐户控制级别,请用以下节点之一替换
  9. requestedExecutionLevel 节点。
  10. <requestedExecutionLevel  level="asInvoker" uiAccess="false" />
  11. <requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />
  12. <requestedExecutionLevel  level="highestAvailable" uiAccess="false" />
  13. 如果您希望利用文件和注册表虚拟化提供
  14. 向后兼容性,请删除 requestedExecutionLevel 节点。
  15. -->
  16. <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
  17. </requestedPrivileges>
  18. </security>
  19. </trustInfo>
  20. </asmv1:assembly>

关键是这句:<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

重新编译后在Win7下就能正常运行了。

转载请注明出处:http://blog.csdn.net/xiashengwang/article/details/7096715

c#实现的破解程序--针对软件使用时间限制相关推荐

  1. 逆向破解程序脱壳篇-压缩壳

    一.普及 What?壳 所谓"壳"就是专门压缩的工具. 这里的压缩并不是我们平时使用的RAR.ZIP这些工具的压缩,壳的压缩指的是针对exe.com.和dll等程序文件进行压缩,在 ...

  2. 破解必备,软件破解中常用API函数大全

    在软件破解中,常用软件破解方法就是下断点快速找事件,在命令行BP下断点,shift+f9找事件然后再alt+f9返回. 快捷方法,ctrl+A分析代码.ctrl+N 找要下断的API函数.右键> ...

  3. 为什么下载的破解游戏和软件经常会被报毒?

    作者:qmwatcher 链接:https://www.zhihu.com/question/28029995/answer/39206383 来源:知乎 破解游戏和软件经常会被报毒? 转载答案: 一 ...

  4. 苹果Iphone4手机越狱及安装破解程序图文教程

    转自: http://www.w1zx.com/Newsshow.asp?id=190 苹果Iphone4手机越狱及安装破解程序图文教程 苹果Iphone4手机越狱流程 limera1n官方下载地址: ...

  5. 破解网吧管理软件各类限制的几点小技巧

    破解网吧管理软件各类限制的几点小技巧 设置IE选项破解方法 1:禁止右键 2:禁止IE属性 3:禁止访问硬盘 4:禁止搜索和F3按键 5:禁止下载(是通过IE禁止的) 我是这样做的.首先打开一个网页然 ...

  6. 加密解密软件VMProtect入门使用教程(二):分析、破解和保护软件

    VMProtect是新一代软件保护实用程序.VMProtect支持德尔菲.Borland C Builder.Visual C/C++.Visual Basic(本机).Virtual Pascal和 ...

  7. [解决]Yosemite 中 Patch 破解程序不能用的问题

    在升级Yosemite 后发现有些以前的破解程序不能用了,尤其是一些 patch 程序,比如软件仓库里的 iDocument .  会报以下的错误  This patch seems to be co ...

  8. 一个菜鸟浅谈对 软件、程序、软件模型的认识 ——!

    作为一个菜鸟,让我谈关于软件,程序,软件模型的心得,无异于是很天方夜谭的事情,据说很多的专家于此都没有给出明确的定义,我就用这些年中对于电脑的认识,来随便说说. 1.谈到软件,太专业的术语即使说了,我 ...

  9. 最新Delphi XE2 正式版破解程序

    http://download.csdn.net/detail/pjdelphi/3641710 Delphi XE2 正式版的破解程序,有效哦. Delphi XE2 官方完整 delphicbui ...

  10. 代码保护软件 VMProtect 用户手册:分析,破解和保护软件

    是一款虚拟机保护软件,是目前最为流行的保护壳之一.VMProtect将保护后的代码放到虚拟机中运行, 这将使分析反编译后的代码和破解变得极为困难.除了代码保护,VMProtect 还可以生成和验证序列 ...

最新文章

  1. 判断checkbox是否选中并改变值
  2. 深入redis内部--字典实现
  3. Kettle 合并记录报错!
  4. BZOJ2125 最短路
  5. 客户端页面不更新CSS样式或JS脚本的方法 (2018-08-17 17:33)
  6. STL - 底层实现
  7. 【转】__declspec用法详解
  8. 美团外卖iOS多端复用的推动、支撑与思考
  9. SQL的各种使用方法
  10. 前端开发---ppt展示页面评论区展示
  11. 基于计算机 中学数学教学,计算机辅助中学数学教学的研究
  12. order by 多个条件
  13. 在lua中调用DLL
  14. arcgis xml 下载 切片_如何下载谷歌地球影像的 ArcGIS Server 缓存切片(瓦片)
  15. 计算机局域网共享本地安全策略,如何设置局域网共享
  16. word怎么让封面、目录没有页码,页码从正文开始
  17. MySQL 检索 JSON 字段
  18. 400行代码实现双人对战五子棋(适合新手入门)
  19. 聊天框 让滚动条保持到最底端的一种方式 scrollTop!
  20. 纯干货!!!Python开发必备!!!70+本图书合集(PDF+源码)

热门文章

  1. 条件关系和因果关系,原因和理由的区别
  2. ACM的奇计淫巧系列
  3. win10删除微软拼音
  4. 图片格式批量转换器 - 支持 JPG、JPEG、PNG、BMP、GIF 等多种格式图片相互批量转换
  5. 独木难成林,不管是自己在支付宝单种还是钉钉合种,都是在做公益
  6. Git merge合并冲突 error: ‘merge‘ is not possible because you have unmerged files的解决方法
  7. 自学是一门手艺 python_《自学是门手艺》:Python自学指南(内附PPT)
  8. c语言程序编程实践总结,c语言编程实习心得
  9. 儿童python编程入门-儿童编程python入门
  10. 京东联盟PHP接口源码