1.vs创建项目类型错误
当创建新的应用程序时,不小心选择了错误的应用程序类型。例如,编程员可能创建一个新的 Wi n 3 2应用程序项目,但是创建了一个 进入点函数m a i n。当创建应用程序时,编程员会看到一个链接程序错误消息,因为 w i n 3 2应用 程序项目设置了/ S U B S Y S T E M : W I N D O W S链接程序开关,但是不存在WinMain或wWinMain函 数。这时,编程员可以有4个选择: • 将main函数改为WinMain。通常这不是最佳的选择,因为编程员可能想要创建一个控制 台应用程序。 • 用Visual C++创建一个新的Win32 控制台应用程序,并将现有的源代码添加给新应用程 下载序项目。这个选项冗长而乏味,因为它好像是从头开始创建应用程序,而且必须删除原 始的应用程序文件。 • 单击 Project Settings 对话框的Link选项卡,将 / S U B S Y S T E M : W I N D O W S开关改为 / S U B S Y S T E M : C O N S O L E。这是解决问题的一种比较容易的方法,很少有人知道他们只 需要进行这项操作就行了。 • 单击Project Settings对话框的L i n k选项卡,然后全部删除/SUBSYSTEM:WINDOWS开关。程序将根据代码中实现的函数进行操作。
2.程序基地址
PE是微软Win32环境可移植可执行文件(如exe、dll、vxd、sys和vdm等)的标准文件格式。
PE 文件格式把可执行文件分成若干个数据节(section),不同的资源被存放在不同的节中。 一个典型的 PE 文件中包含的节如下。 .text 由编译器产生,存放着二进制的机器代码,也是我们反汇编和调试的对象。 .data 初始化的数据块,如宏定义、全局变量、静态变量等。 .idata 可执行文件所使用的动态链接库等外来函数与文件的信息。 .rsrc 存放程序的资源,如图标、菜单等。 除此以外,还可能出现的节包括“.reloc”、“.edata”、“.tls”、“.rdata”等
Visual C++链接程序使用的默认基地址是 0 x 0 0 4 0 0 0 0 0,因为这是在运行Wi n d o w s 9 8时可执行文件的映象可以加载到的最低地址。可以改变应用程序加载到的基地址,方法是使 用M i c r o s o f t的链接程序中的/ B A S E : a d d r e s s链接程序开关。
根据基地址进行偏移找到.data,然后进行能找到调用.data的位置,进行软件破解。
3.Win程序进入点
参考资料:
《windows核心编程(第五版)》
《0day安全软件漏洞分析技术(第二版)》
4.Win中变量初始化
Win中如果变量类型是int和int数组、long和long数组、char和char数组等,如果未初始化默认0xcccccc...以cc向后填充
持续更新中......