- 通过进程Id终止进程
好学松鼠
C++进程C++Windows编程
#include#include//通过进程ID终止进程BOOLTerminateProcessFromID(DWORDdwID){BOOLbRet=FALSE;//打开进程HANDLEhProcess=::OpenProcess(PROCESS_ALL_ACCESS,FALSE,dwID);if(hProcess!=NULL){//终止进程bRet=::TerminateProcess(hPro
- 作业 : 内存加载的PE文件 & 解析导入表 & IATHook
温柔倾怀
要读取已经执行的进程的PE结构,可以使用以下步骤:获取目标进程的句柄(使用OpenProcess函数)。获取目标进程的基址(即模块句柄)(使用GetModuleHandleEx或EnumProcessModules函数)。读取目标进程内存中的DOS头(使用ReadProcessMemory函数)。从DOS头中获取NT头的偏移位置(即DOS头中的e_lfanew字段)。读取目标进程内存中的NT头(使
- 本机使用arthas 报 java.io.IOException: 拒绝访问
夏天的清凉
使用idea启动springboot项目,用arthas连接java进程,报错。image.png[ERROR]Startarthasfailed,exceptionstacktrace:java.io.IOException:拒绝访问。atsun.tools.attach.WindowsVirtualMachine.openProcess(NativeMethod)atsun.tools.att
- Windows 反调试技术——OpenProcess 权限过滤 - ObRegisterCallback
aijia1857
操作系统
转载:https://blog.xpnsec.com/anti-debug-openprocess/看雪翻译:https://bbs.pediy.com/thread-223857.htm本周我有了休息时间,来回顾一下反调试技术。目前,BugBounty平台上有大量程序依赖于客户端应用,而且许多安全产品和游戏反作弊引擎都采用了这些反调试技术来阻止你调试核心模块。我想有必要来分享其中一项反调试技术,
- DLL注入
dukeboy954
dllwindowsnullthreadapi
所谓DLL注入就是将一个DLL放进某个进程的地址空间里,让它成为那个进程的一部分。要实现DLL注入,首先需要打开目标进程。hRemoteProcess=OpenProcess(PROCESS_CREATE_THREAD|//允许远程创建线程PROCESS_VM_OPERATION|//允许远程VM操作PROCESS_VM_WRITE,//允许远程VM写FALSE,dwRemoteProcessId
- python找.exe进程基地址的方法(以微信为例子)
我的Python教程
我的Python教程python
使用psutil库的process_iter()函数获取进程列表。遍历进程列表,使用进程的name()函数判断是否为目标exe进程。如果是目标exe进程,使用windll.kernel32库的OpenProcess()函数获取进程的句柄。使用windll.kernel32库的GetModuleHandleA()函数获取进程的基地址。输出基地址。使用windll.kernel32库的CloseHan
- MFC、VC++操作excel后,excel程序进程无法正常退出的非暴力处理方法
SunkingYang
#MFC日常开发记录MFC开发#MFC控件开发mfcexcel进程无法退出进程残留再次调用报错VC++资源释放
先说处理方式1、最low的方式:强制结束进程//打开进程得到进程句柄HANDLEhProcess=OpenProcess(PROCESS_ALL_ACCESS,FALSE,Pid);if(hProcess!=NULL){//结束进程if(TerminateProcess(hProcess,0)){printf("结束进程成功\n");return0;}}这种方式简单粗暴,但会存在进程安全问题,及可
- WindowsAPI 进程和线程相关说明
魔王-T
windowsAPI
前言当提到操作系统中的进程和线程之间的管理时,WindowsAPI提供了一系列有用的函数来处理这些任务。WindowsAPI提供了丰富的函数和数据结构,用于处理进程和线程的管理。以下是一些常用的WindowsAPI函数和数据结构:进程管理:CreateProcess:创建新进程。OpenProcess:打开已存在的进程。TerminateProcess:终止指定进程的执行。GetCurrentPr
- 2020-08-24 OpenProcess 返回拒绝访问的错误,一段代码提升权限即可访问
风_55e1
有时需要使用OpenProcess来查看进程的相关信息,或者结束进程的运行,但是会碰到“拒绝访问”的错误,这时需要提升进程的权限为Debug权限。BOOLEnableDebugPrivilege(){HANDLEhToken;BOOLfOk=FALSE;if(OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES,&hToken))
- WM_COPYDATA传回返回值的一个方案
shanql
Win32/MFCWM_COPYDATA
方案背景适应场景,通过WM_COPYDATA进行进程间通信时,SendMessage不能返回自定义的数据,由此想到以下思路解决这个问题A进程使用VirtualAlloc分配一块内存,通过某种方式将此地址以及A进程ID传给另一个进程BB进程使用OpenProcess(PROCESS_VM_READ|PROCESS_VM_WRITE|PROCESS_VM_OPERATION,FALSE,nRemote
- 异常处理——异常函数之SetUnhandledExceptionFilter(子进程处理)(3)
Caicaptain
#C++#Windows开发#软件调试函数异常处理子进程minidump
1.解决思路和注意事项1.1Set顶层异常函数1.2建立函数1.3在函数里面createprocess子进程,参数传递pid给子进程,保存父进程错误信息结构体到两个二进制文件1.4子进程根据pid通过openprocess获得句柄,打开两个结构体保存的二进制文件,读入。minidumpwrite2.创建子进程//代码一#include#include#includeusingnamespacest
- 郁金香2021年游戏辅助技术(初级班)(上)
zhaopeng01zp
GameHack游戏郁金香2021年
郁金香2021年游戏辅助技术初级班(上)%p、size_t、%zd、%llu、FindWindow、GetWindowText、SetWindowTextGetWindowThreadProcessId、OpenProcess、ReadProcessMemory封接读内存接口函数intR4(void*地址)跨进程向目标进程内存地址写入数值WriteProcessMemoryC,C++32位和64位
- Win32 获取进程占用的内存信息
lvronglee
Win32ProcessMemory
主要用到的函数GetWindowThreadProceddId(m_hWnd,&dwProcessID);HANDLEhProcess=OpenProcess(PROCESS_ALL_ACCESS,NULL,dwProcessID);PROCESS_MEMORY_CONTERSprocess_mem_counters={0};process_mem_counters.cb=sizeof(PROCE
- DLL注入学习总结
bcbobo21cn
VC++安全编程DLLDLL注入
dll注入所谓DLL注入就是将一个DLL放进某个进程的地址空间里,让它成为那个进程的一部分。要实现DLL注入,首先需要打开目标进程。中文名dll注入外文名hRemoteProcess意义将一个DLL放进进程的地址空间里方法打开目标进程例:hRemoteProcess=OpenProcess(PROCESS_CREATE_THREAD|//允许远程创建线程PROCESS_VM_OPERATION|/
- C++实现DLL注入
Cracker_T
所谓DLL注入就是将一个DLL放进某个进程的地址空间里,让它成为那个进程的一部分。要实现DLL注入,首先需要打开目标进程。hRemoteProcess=OpenProcess(PROCESS_CREATE_THREAD|//允许远程创建线程PROCESS_VM_OPERATION|//允许远程VM操作PROCESS_VM_WRITE,//允许远程VM写FALSE,dwRemoteProcessId
- 统一软件开发过程(RUP)的概念和方法
IT加班狗啊
统一软件开发过程(RationalUnifiedProcess,RUP)是一种面向对象且基于网络的程序开发方法论。根据Rational(RationalRose和统一建模语言的开发者)的说法,好像一个在线的指导者,它可以为所有方面和层次的程序开发提供指导方针,模版以及事例支持。RUP和类似的产品--例如面向对象的软件过程(OOSP),以及OPENProcess都是理解性的软件工程工具--把开发中面
- 【Windows系统编程】03.远线程注入ShellCode
WdIg-2023
Windows系统编程windows笔记安全
shellcode:本质上也是一段普通的代码,只不过特殊的编程手法,可以在任意环境下,不依赖于原有的依赖库执行。远程线程#include#include#includeintmain(){HANDLEhProcess=OpenProcess(PROCESS_ALL_ACCESS,FALSE,19328);//创建在另一个进程的虚拟地址空间中运行的线程//跨进程创建线程CreateRemoteThr
- QProcess调用外部程序阻塞等待问题解决
十里春风_jzh
Qt
QProcess调用外部程序阻塞等待问题解决简介第一种第二种简介在使用QProcess调用外部程序时,可能会遇到两种场景:1.调用起来之后就不管,直接运行后面的代码2.调用起来后需要等待外部程序执行完成,在继续运行下面的代码第一种这种比较简单,新建一个进程设置好参数就可以了QProcess*openProcess=newQProcess(this);//新建一个process进程//绑定proce
- 驱动开发:内核中进程与句柄互转
lyshark
在内核开发中,经常需要进行进程和句柄之间的互相转换。进程通常由一个唯一的进程标识符(PID)来标识,而句柄是指对内核对象的引用。在Windows内核中,`EProcess`结构表示一个进程,而HANDLE是一个句柄。为了实现进程与句柄之间的转换,我们需要使用一些内核函数。对于进程PID和句柄的互相转换,可以使用函数如`OpenProcess`和`GetProcessId`。OpenProcess函
- HOOK钩子技术4 SSDT HOOK
BugMeOut
hook恶意代码分析rootkitbinaryhook
API调用过程以一个demo测试为例,本测试查看OpenProcess在R3-R0下的调用。//test.cpp:Definestheentrypointfortheconsoleapplication.//#include"stdafx.h"#include#includeintmain(intargc,char*argv[]){//__asmint3HANDLEhandle=OpenProce
- 判断操作系统及指定进程是32位还是64位
云满笔记
windowsc++windowswow64devwin32
目录判断操作系统及指定进程是32位还是64位背景函数介绍OpenProcess函数GetCurrentProcess函数IsWow64Process函数实现原理编码实现判断操作系统的位数判断指定进程的位数程序测试总结参考判断操作系统及指定进程是32位还是64位背景应该很多人开发程序的时候,都会遇到这样的一个功能需求,怎么判断一个进程是32位进程还是64位进程呢?通常,我们的解决方法是,调用IsWo
- 句柄表(私有句柄表)
起昵称好麻烦
Windows内核分析索引目录:https://www.cnblogs.com/onetrainee/p/11675224.html句柄表(私有句柄表)我们在R3环编程中,会接触到句柄HANDLE的概念。比如OPENPROCESS,打开进程获取其进程句柄,这些被称为“内核句柄”。注意,与GUI图形界面不同,那些画刷句柄被称为“用户句柄”,不在我们讨论范围之列。一、句柄表的基本概念句柄表分为私有私有
- 植物大战僵尸——纯C实现无限阳光
UPX666
游戏c++安全
大致思路:1.获取游戏窗口,使用FindWindow函数2.获取游戏PID(ProcessID),使用GetWindowThreadProcessId函数3.获取游戏进程句柄,使用OpenProcess函数4.读取游戏阳光基址5.读取后修改阳光数值大家查看源码后可能疑惑的问题:1.上图源码中的窗口信息是怎么找到的?解析如下↓↓打开VS中的Spy++,将准星拖入植物大战僵尸窗口上,方可一键获取窗口信
- python pywin32教程,pywin32教程
好学的Jack
pythonpywin32教程
()w.Documents.Close(wc.wdDoNotSaveChanges)w.Quit()=0#(3)处理excel[1]使用PyExcelerator读写EXCEL文件(Platform:Win,Unix-like)文件......针对API初学者的教程第二篇文章来源:vb大世界Windows的一些特...("dwThreadId",DWORD)kernel32.OpenProcess
- 软件安全之代码注入技术 向目标 PE 文件注入 DLL notepad lpk.dll 远程线程函数 提权函数 OpenProcess VirtualAllocEx
SK Primin
笔记软件安全安全dll
实验4代码注入技术引言1、实验说明代码注入是将用户代码注入到其他进程或者可执行文件中,实现拦截目标进程运行过程的关键信息、改变目标进程或可执行文件原本执行流程等目的2、实验目的本实验通过远程线程和输入表注入,向目标进程注入代码、向目标PE文件注入DLL,以加深对代码注入技术的理解。3、实验原理在目标进程中申请内存并写入待注入DLL的路径,然后调用CreateRemoteThread,在目标中创建线
- 2018-07-13 DLL注入(一)
kotw_zjc
DLL注入是把指定的DLL加载到另一个进程的内存空间中去。DLL注入技术:1、通过远程线程注入2、通过全局消息钩子注入3、通过注册表注入4、通过输入法注入5、驱动注入6、在启动进程时挂起主线程,写入指令后再恢复线程7、DLL劫持8、修改PE文件导入表9、使用NtMapViewOfSection注入10、使用SetThreadContext注入通过远程线程注入:1、用OpenProcess打开要注入
- 简单注入
wyrover
Usage:ManualInject[DLLname][PID]Howitworks1)OpentheDLLfile(CreateFile)2)ReadtheDLLintomemory(ReadFile)3)ValidatetheDLLimage.4)Openthetargetprocess(OpenProcess)5)AllocatememoryfortheDLLandloadercodeint
- 利用Hook API函数OpenProcess与TerminateProcess来防止任务管理器结束进程【转】
weixin_30834019
思路:其实比较简单,还是利用DLL,首写跟据API函数OpenProcess与TerminateProcess的结构自已编写两个与这两个API一样的函数,再利用GetProcAddress获取系统的那两个API函数入口地址,最后用WriteProcessMemory将你写的函数的地址替换掉原来系统的函数地址。这样所有调用这两系统API都将先执行你的函数。如果只Hook其中一个函数比如只hookOp
- APIHOOK之拦截TerminateProcess
sanshao27
winapinullhookdllpathbasic
用SetWindowsHooKEx加载修改进程IAT的DLL实现OpenProcess拦截,导致Explorer或taskmgr出错?[来源:ITWENKU时间:2006-11-1617:52:10|浏览:1人次]使用了windows核心编程里面的APIHOOK类,程序都写好了,在几台电脑试过,只有我电脑一运行,到SetWindowsHooKEx时,系统注入DLL到所有进程,修改IAT就出错。。我
- openProcess时拒绝访问(GetlastError为5),返回的HANDLE为NULL的解决方法
bzhxuexi
windows开发
遇到的问题:在winXP的VS2010里调试好的程序,直接双击exe文件能运行,但是什么都没执行,就是没有按我程序中写的去执行。找出问题的方法:由于是执行exe文件出的错误,因此用普通的打印语句(printf,cout等)是没用的,我在程序中每隔几行向一个文件写内容(写日志)或加一个messageBox来判断程序执行到哪儿出现了问题。具体介绍:最近在写一个进程监控管理的程序,都已经写好了,并且在W
- 矩阵求逆(JAVA)初等行变换
qiuwanchi
矩阵求逆(JAVA)
package gaodai.matrix;
import gaodai.determinant.DeterminantCalculation;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
/**
* 矩阵求逆(初等行变换)
* @author 邱万迟
*
- JDK timer
antlove
javajdkschedulecodetimer
1.java.util.Timer.schedule(TimerTask task, long delay):多长时间(毫秒)后执行任务
2.java.util.Timer.schedule(TimerTask task, Date time):设定某个时间执行任务
3.java.util.Timer.schedule(TimerTask task, long delay,longperiod
- JVM调优总结 -Xms -Xmx -Xmn -Xss
coder_xpf
jvm应用服务器
堆大小设置JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统下,一般限制在1.5G~2G;64为操作系统对内存无限制。我在Windows Server 2003 系统,3.5G物理内存,JDK5.0下测试,最大可设置为1478m。
典型设置:
java -Xmx
- JDBC连接数据库
Array_06
jdbc
package Util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class JDBCUtil {
//完
- Unsupported major.minor version 51.0(jdk版本错误)
oloz
java
java.lang.UnsupportedClassVersionError: cn/support/cache/CacheType : Unsupported major.minor version 51.0 (unable to load class cn.support.cache.CacheType)
at org.apache.catalina.loader.WebappClassL
- 用多个线程处理1个List集合
362217990
多线程threadlist集合
昨天发了一个提问,启动5个线程将一个List中的内容,然后将5个线程的内容拼接起来,由于时间比较急迫,自己就写了一个Demo,希望对菜鸟有参考意义。。
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.CountDownLatch;
public c
- JSP简单访问数据库
香水浓
sqlmysqljsp
学习使用javaBean,代码很烂,仅为留个脚印
public class DBHelper {
private String driverName;
private String url;
private String user;
private String password;
private Connection connection;
privat
- Flex4中使用组件添加柱状图、饼状图等图表
AdyZhang
Flex
1.添加一个最简单的柱状图
? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
<?xml version=
"1.0"&n
- Android 5.0 - ProgressBar 进度条无法展示到按钮的前面
aijuans
android
在低于SDK < 21 的版本中,ProgressBar 可以展示到按钮前面,并且为之在按钮的中间,但是切换到android 5.0后进度条ProgressBar 展示顺序变化了,按钮再前面,ProgressBar 在后面了我的xml配置文件如下:
[html]
view plain
copy
<RelativeLa
- 查询汇总的sql
baalwolf
sql
select list.listname, list.createtime,listcount from dream_list as list , (select listid,count(listid) as listcount from dream_list_user group by listid order by count(
- Linux du命令和df命令区别
BigBird2012
linux
1,两者区别
du,disk usage,是通过搜索文件来计算每个文件的大小然后累加,du能看到的文件只是一些当前存在的,没有被删除的。他计算的大小就是当前他认为存在的所有文件大小的累加和。
- AngularJS中的$apply,用还是不用?
bijian1013
JavaScriptAngularJS$apply
在AngularJS开发中,何时应该调用$scope.$apply(),何时不应该调用。下面我们透彻地解释这个问题。
但是首先,让我们把$apply转换成一种简化的形式。
scope.$apply就像一个懒惰的工人。它需要按照命
- [Zookeeper学习笔记十]Zookeeper源代码分析之ClientCnxn数据序列化和反序列化
bit1129
zookeeper
ClientCnxn是Zookeeper客户端和Zookeeper服务器端进行通信和事件通知处理的主要类,它内部包含两个类,1. SendThread 2. EventThread, SendThread负责客户端和服务器端的数据通信,也包括事件信息的传输,EventThread主要在客户端回调注册的Watchers进行通知处理
ClientCnxn构造方法
&
- 【Java命令一】jmap
bit1129
Java命令
jmap命令的用法:
[hadoop@hadoop sbin]$ jmap
Usage:
jmap [option] <pid>
(to connect to running process)
jmap [option] <executable <core>
(to connect to a
- Apache 服务器安全防护及实战
ronin47
此文转自IBM.
Apache 服务简介
Web 服务器也称为 WWW 服务器或 HTTP 服务器 (HTTP Server),它是 Internet 上最常见也是使用最频繁的服务器之一,Web 服务器能够为用户提供网页浏览、论坛访问等等服务。
由于用户在通过 Web 浏览器访问信息资源的过程中,无须再关心一些技术性的细节,而且界面非常友好,因而 Web 在 Internet 上一推出就得到
- unity 3d实例化位置出现布置?
brotherlamp
unity教程unityunity资料unity视频unity自学
问:unity 3d实例化位置出现布置?
答:实例化的同时就可以指定被实例化的物体的位置,即 position
Instantiate (original : Object, position : Vector3, rotation : Quaternion) : Object
这样你不需要再用Transform.Position了,
如果你省略了第二个参数(
- 《重构,改善现有代码的设计》第八章 Duplicate Observed Data
bylijinnan
java重构
import java.awt.Color;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.Label;
import java.awt.TextField;
import java.awt.event.FocusAdapter;
import java.awt.event.FocusE
- struts2更改struts.xml配置目录
chiangfai
struts.xml
struts2默认是读取classes目录下的配置文件,要更改配置文件目录,比如放在WEB-INF下,路径应该写成../struts.xml(非/WEB-INF/struts.xml)
web.xml文件修改如下:
<filter>
<filter-name>struts2</filter-name>
<filter-class&g
- redis做缓存时的一点优化
chenchao051
redishadooppipeline
最近集群上有个job,其中需要短时间内频繁访问缓存,大概7亿多次。我这边的缓存是使用redis来做的,问题就来了。
首先,redis中存的是普通kv,没有考虑使用hash等解结构,那么以为着这个job需要访问7亿多次redis,导致效率低,且出现很多redi
- mysql导出数据不输出标题行
daizj
mysql数据导出去掉第一行去掉标题
当想使用数据库中的某些数据,想将其导入到文件中,而想去掉第一行的标题是可以加上-N参数
如通过下面命令导出数据:
mysql -uuserName -ppasswd -hhost -Pport -Ddatabase -e " select * from tableName" > exportResult.txt
结果为:
studentid
- phpexcel导出excel表简单入门示例
dcj3sjt126com
PHPExcelphpexcel
先下载PHPEXCEL类文件,放在class目录下面,然后新建一个index.php文件,内容如下
<?php
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
if (PHP_SAPI == 'cli')
die('
- 爱情格言
dcj3sjt126com
格言
1) I love you not because of who you are, but because of who I am when I am with you. 我爱你,不是因为你是一个怎样的人,而是因为我喜欢与你在一起时的感觉。 2) No man or woman is worth your tears, and the one who is, won‘t
- 转 Activity 详解——Activity文档翻译
e200702084
androidUIsqlite配置管理网络应用
activity 展现在用户面前的经常是全屏窗口,你也可以将 activity 作为浮动窗口来使用(使用设置了 windowIsFloating 的主题),或者嵌入到其他的 activity (使用 ActivityGroup )中。 当用户离开 activity 时你可以在 onPause() 进行相应的操作 。更重要的是,用户做的任何改变都应该在该点上提交 ( 经常提交到 ContentPro
- win7安装MongoDB服务
geeksun
mongodb
1. 下载MongoDB的windows版本:mongodb-win32-x86_64-2008plus-ssl-3.0.4.zip,Linux版本也在这里下载,下载地址: http://www.mongodb.org/downloads
2. 解压MongoDB在D:\server\mongodb, 在D:\server\mongodb下创建d
- Javascript魔法方法:__defineGetter__,__defineSetter__
hongtoushizi
js
转载自: http://www.blackglory.me/javascript-magic-method-definegetter-definesetter/
在javascript的类中,可以用defineGetter和defineSetter_控制成员变量的Get和Set行为
例如,在一个图书类中,我们自动为Book加上书名符号:
function Book(name){
- 错误的日期格式可能导致走nginx proxy cache时不能进行304响应
jinnianshilongnian
cache
昨天在整合某些系统的nginx配置时,出现了当使用nginx cache时无法返回304响应的情况,出问题的响应头: Content-Type:text/html; charset=gb2312 Date:Mon, 05 Jan 2015 01:58:05 GMT Expires:Mon , 05 Jan 15 02:03:00 GMT Last-Modified:Mon, 05
- 数据源架构模式之行数据入口
home198979
PHP架构行数据入口
注:看不懂的请勿踩,此文章非针对java,java爱好者可直接略过。
一、概念
行数据入口(Row Data Gateway):充当数据源中单条记录入口的对象,每行一个实例。
二、简单实现行数据入口
为了方便理解,还是先简单实现:
<?php
/**
* 行数据入口类
*/
class OrderGateway {
/*定义元数
- Linux各个目录的作用及内容
pda158
linux脚本
1)根目录“/” 根目录位于目录结构的最顶层,用斜线(/)表示,类似于
Windows
操作系统的“C:\“,包含Fedora操作系统中所有的目录和文件。 2)/bin /bin 目录又称为二进制目录,包含了那些供系统管理员和普通用户使用的重要
linux命令的二进制映像。该目录存放的内容包括各种可执行文件,还有某些可执行文件的符号连接。常用的命令有:cp、d
- ubuntu12.04上编译openjdk7
ol_beta
HotSpotjvmjdkOpenJDK
获取源码
从openjdk代码仓库获取(比较慢)
安装mercurial Mercurial是一个版本管理工具。 sudo apt-get install mercurial
将以下内容添加到$HOME/.hgrc文件中,如果没有则自己创建一个: [extensions] forest=/home/lichengwu/hgforest-crew/forest.py fe
- 将数据库字段转换成设计文档所需的字段
vipbooks
设计模式工作正则表达式
哈哈,出差这么久终于回来了,回家的感觉真好!
PowerDesigner的物理数据库一出来,设计文档中要改的字段就多得不计其数,如果要把PowerDesigner中的字段一个个Copy到设计文档中,那将会是一件非常痛苦的事情。