欢迎来到个人简历网!永久域名:gerenjianli.cn (个人简历全拼+cn)
当前位置:首页 > 范文大全 > 实用文>如何在Mac上用AirDrop共享文件和发送文件到IOS设备上

如何在Mac上用AirDrop共享文件和发送文件到IOS设备上

2023-06-16 08:17:01 收藏本文 下载本文

“kiah”通过精心收集,向本站投稿了9篇如何在Mac上用AirDrop共享文件和发送文件到IOS设备上,下面是小编为大家推荐的如何在Mac上用AirDrop共享文件和发送文件到IOS设备上,欢迎阅读,希望大家能够喜欢。

如何在Mac上用AirDrop共享文件和发送文件到IOS设备上

篇1:如何在Mac上用AirDrop共享文件和发送文件到IOS设备上

在Mac中AirDrop功能便于您以无线方式将Mac 中的文件发送到周边使用IOS设备的人共享照片、视频、位置等信息 ,那么苹果设备之间如何通过AirDrop共享文件和发送文件呢?

而且你无需为了传输文件而连接到同一网络,您的设备会针对 AirDrop 自动设置直接的无线连接 。AirDrop 可从 Finder、“共享”菜单找到,也可在“打开”和“存储”窗口中找到。当您在 Yosemite 中选取 AirDrop 时,您的 Mac 会寻找附近也可以使用 AirDrop 的设备。一起来看看怎么操作吧!

发送文件

您可以使用 AirDrop 将文件从 Mac 上的 Finder 中发送到其他附近的设备和 Mac 电脑。

1、在 Finder 中,选择【前往—>AirDrop】,或在 Finder 窗口的边栏中选择【AirDrop】。

2、将一个或多个文件拖放到您要将文件发送到的设备的图像上,该图像显示在 AirDrop 窗口中。

3、点按【发送】,

如果在 AirDrop 窗口中看不到接收设备,请确保收件人已设置为通过 AirDrop 获取文件。

接收文件

如果您将文件发送到使用您 iCloud 帐户的设备,则该设备会自动接收文件。如果您将文件发送给其他人,则收件人需要“接受”传输文件,才能下载您发送的内容。

在接收文件的 Mac 上点按【存储】,以将收到的文件存储到【下载】文件夹中。    要在 iPhone、iPad 或 iPod touch 上接收文件,请在看到 AirDrop 通知时点按【接受】。

要查看已收到的文件,请打开适用于该文件类型的 app。例如,您可以在 Pages 中查看文字处理文稿,在【照片】中查看图像。

与 AirDrop 共享项目

您也可以通过【共享】功能直接从 app 中发送文件。

1、在某个 app 中,点按【共享】按钮 ,或右键点按您要共享的项目。

2、从显示的共享选项菜单中选择【AirDrop】。

3、在显示的【共享】表单中选择收件人。

4、点按【发送】。

篇2:ShowOrHide在Mac上开关隐藏文件的显示

Mac OS X为了安全和稳定,对部分文件进行了隐藏,但是有时候我们又不得不修改/查看这些文件,那MacGG有以下两种方式,

使用系统命令

打开“终端”(“应用程序”文件夹->“实用工具”文件夹->“终端”),输入以下命令:

defaults write com.apple.finder AppleShowAllFiles TRUEkillall Finder.把 TRUE 换曾 FALSE 就可以关闭显示隐藏文件,

使用第三方软件

ShowOrHide是一款非常简单的软件,整个软件就三个按钮进行切换。

在使用这个软件的时候就是有一个问题,这个软件第一次使用的时候的语言是法语,要在菜单里稍加切换。

篇3:在电脑上如何打开amr文件

1、在电脑上安装迅雷影音(或其他支持amr的视频或音频播放器);

2、安装好后就可以看到amr文件图标上有迅雷影音的标志,这种直接双击就可以打开了;

3、如果图标是空白的,但是又有可以打开的软件;    4、右击文件,选择使用迅雷影音播放;    5、可以看一下迅雷影音设置是否关联amr,点击迅雷影音的主菜单,选择设置;    6、切换到关联,确认勾选其他音频文件——.amr,这样amr文件就关联了软件,直接双击即可打开,

在电脑上如何打开amr文件

篇4:教你在Mac和iPad上发送普通短信

在OS X Mountain Lion里,Mac用户就已经可以用电脑发送iMessage信息,到了OS X 10.10优胜美地和iOS 8.1的时代,Mac和iPad不仅可以处理iMessage信息,并且可以接受并发送普通短信,这依赖于OS X和iOS之间的连续互通功能。

iMessage和普通短信在发送过程上有本质不同,iMessage是通过手机流量或者Wi-Fi加密传输信息、图片或者语音,而普通短信的传输走的是蜂窝移动网络。在“信息”应用里也很好区分,iMessage发出的信息是蓝色的气泡,普通短信发出的信息是绿色的气泡。    现在就教你怎么用Mac、iPad和iPod touch发绿色气泡的普通短信。

如果想使用连续互通的短信功能,你需要确定你的Mac升级至OS X优胜美地,iOS设备升级至8.1或更高,并在你想使用的设备上,在信息设置中登陆相同的苹果账号。

    ▲iPhone“信息”—“设置”    先打开iPhone“设置”,找到“信息”,在iMessage开关打开的情况下,点击“发送与接收”。
    在“可通过iMessage与您联络的方式”里,至少勾选上你的手机号码和Apple ID所用的邮箱,一般来说手机号码是默认勾选,不用再做选择。    ▲iPad“信息”—“设置”    如果你想在iPad或者iPod touch上使用普通短信的连续互通功能,请先在iPad或者iPod touch上重复一遍上述在iPhone上的设置过程。要注意的是,“发送与接受”中,Apple ID要和iPhone中“发送与接受”的Apple ID一致。如果不一致,请点击Apple ID,选择注销,然后登陆iPhone“发送与接收”中使用的Apple ID。

如果你想在Mac上使用普通短信的连续互通功能,先点击Mac屏幕右上角的放大镜,在搜索框中输入“信息”,接着双击列表中的“信息”条目。

▲Mac“信息”—“偏好设置”    打开“信息”后,点击屏幕左上角的“信息”,继续点击“偏好设置...”,确认Apple ID和iPhone中“发送与接受”的Apple ID一致,如果不一致,请选择注销,然后登陆iPhone“发送与接收”中使用的Apple ID。之后确认勾选“启用这个账户”。最后在“您的信息接受地址:”中至少选中你的手机号码和Apple ID使用的邮箱。    ▲iPhone“信息”—“文本信息转发”    最后回到你的iPhone,进入“设置”—“信息”—“文本信息转发”,下面会列出开启了iMessage功能并和这台iPhone的Apple ID相同的设备,在这里你可以选择开启指定设备的短信转发功能。如果设置成功,iPhone上将会显示一条确认信息。

开启文本转发并不需要开启iPhone的Wi-Fi和蓝牙。完成以上所说的设置即可享受普通短信的连续互通功能。

如何关闭iMessage

可能还有人有这种问题,“不想iPhone上的iMessage信息同时传输到自己的其他设备上,如何做到?”。

要解决这个问题很简单,比如你不想在iPad或者是iPod touch上接收iMessage信息,进入“设置”—“信息”,直接将iMessage的开关关闭。

如果在Mac上,在“信息”的“偏好设置...”里,在与iPhone对应的Apple ID下,取消勾选“启用这个账户”。

完成以上设置即可让iPad、iPod touch或者Mac不再接收iPhone上的iMessage信息。

最后的叮嘱

很多人习惯和恋人或者朋友共享同一个Apple ID,虽然在App Store里共享Apple ID并不会引起什么大问题,但我强烈推荐你在iCloud、iMessage以及FaceTime的服务下使用你个人的Apple ID。和其他人共享Apple ID可能会引起隐私问题,带来不必要的麻烦,比如和你共享Apple ID的人可能会看到你拍过的照片,和其他人的消息记录,浏览器历史,实时地理位置等等,甚至可以通过iCloud恢复你设备的备份,风险相当高。请您尽快申请一个只属于自己的Apple ID。

篇5:在Linux上如何将文件转换成PDF格式

当你有一大堆文本文件要维护的时候,把它们转换成PDF文档会好一些,比如,PDF更适合打印,因为PDF文档有预定义布局。除此之外,还可以减少文档被意外修改的风险。

要将文本文件转换成PDF格式,你要按照下面的两步。

准备工作

首先你要安装两个需要的包。

在 Debian、Ubuntu 或者 Linux Mint上:

$ sudo apt-get install enscript. ghostscript

在 Fedora、CentOS/RHEL上:

$ sudo yum install enscript. ghostscript

在 Arch Linux上:

$ sudo pacman -S enscript. ghostscript

将文本文件转换成PDF格式

准备工作完成之后,按照下面的两步从文本文件生成一个PDF文件

首先,使用enscript命令行工具将文本文件转换成postscript格式,

$ enscript. -p output.ps input.txt

最后将postscript格式文件转换成PDF文件。

$ ps2pdf output.ps output.pdf

篇6:在win7上利用虚拟磁盘隐藏文件

在win7上利用虚拟磁盘隐藏文件,本人只在win7上验证过,其他机型未知,

一、创建虚拟磁盘

1.右击“计算机”-----“管理” ------“磁盘管理” ----- “操作” ------“创建VHD”

2.点击“浏览”,选择虚拟磁盘文件保存的位置,填入文件名

3.设置虚拟硬盘大小,我们以300M为例。

4、现在在磁盘管理界面出现新建的磁盘。像其他磁盘一样,使用之前要初始化。右击磁盘,选择“初始化磁盘”,在弹出的窗口点确定。

5.下面新建卷

右击这个磁盘的空白处,选择“新建简单卷”

在弹出的窗口一直点“下一步”,最后点完成。至此,虚拟磁盘创建成功。打开计算机可以看到,新加卷G就是我们刚刚创建的。

二、让刚刚创建的磁盘在计算机中不可见

还是右击“计算机”---“管理” ---“磁盘管理” ,在刚刚创建的磁盘上右击,选择“脱机”。再打开计算机,会发现看不到磁盘G。

三、上面那种方式虽然双击计算机不能看到那个磁盘,但是在计算机管理中仍能看到,而且显示状态是脱机,

那么有没有办法让其隐藏的更彻底呢?有办法。

在刚刚创建的磁盘上右击,选择“分离VHD”。在弹出的窗口点确定。注意, 删除磁盘后删除虚拟硬盘文件前面的选择框不要选,不要选! 当你决定删除这个磁盘时才要点这个。好了,现在我们在计算机管理窗口中都不能看到这个磁盘了。

要想重新显示磁盘,点击计算机管理窗口的“操作”---“附加VHD”,在弹出的窗口点“浏览”,选择你创建此虚拟磁盘时保存的文件即可。

四、加强版,你还可以用BitLocker加密。右击磁盘,选择“启用BitLocker”。

可以选择第一种方式“使用密码解锁驱动器”

密码恢复密钥的方式,选择如何存储恢复密钥,如果选择“将恢复密钥保存到文件”,那么最好把文件放在U盘。

这个文件的内容类似下面这样:

BitLocker 驱动器加密恢复密钥

恢复密钥用于恢复 BitLocker 保护的驱动器上的数据。

若要验证该密码是否为正确的恢复密码,请将这些标记与恢复屏幕上显示的标记进行比较。

恢复密钥标记: 6FA7CEF7-CDF6-49

完整恢复密钥标记: 6FA7CEF7-CDF6-491F-9055-DCAAA2C7AC0C

BitLocker 恢复密钥:

360294-357390-033484-422829-400774-222585-365838-116171

加密成功后,你会看到加密的磁盘上会显示锁和钥匙。

篇7:在电脑上如何打开mobi格式的电子书文件

1、从网上搜索并下载下载Kindle电脑客户端;

2、安装Kindle客户端后打开;    3、一般来说安装客户端后,mobi格式的文件会默认以Kindle方式打开,可以看到图标也发生了改变;    4、如果没有,可以右击想要打开的文件,点击打开方式;    5、打开此文件的程序选择用Kindle打开,并勾选始终使用选择的程序打开这种文件,确定即可,

在电脑上如何打开mobi格式的电子书文件

篇8:在Win2K/XP上替换正在使用的系统文件

微软有两个工具可以替换正在使用的文件,zap和inuse. 不过都没有源代码, 只好逆向分析了. inuse比较大40K, zap很小7K. 就分析zap了.

用ida打开zap. 就有一个核心函数, 原来它的工作原理是把这个文件移了下位置, 因为比较简单就直接贴上代码.

-------------------cut zap.c---------

#include

BOOL ZapDelFile(char *szFileToDel)

{

char cTempFileName[0x80];

char cTempPathName[0x100];

char cFileName[0x100];

if(szFileToDel[1] == ':'){

sprintf(cTempPathName, “%c:\\”, szFileToDel[0]);

}

else{

GetModuleFileName(NULL, cFileName, 0x100);

sprintf(cTempPathName, “%c:\\”, cFileName[0]);

}

if(GetTempFileName(cTempPathName, “_@”, 0, cTempFileName) == 0){

return FALSE;

}

if(MoveFileEx(szFileToDel, cTempFileName, 1) == 0){

return FALSE;

}

if(MoveFileEx(cTempFileName, NULL, 4) == 0){

return FALSE;

}

return TRUE;

}

void usage(char *n) {

printf(“usage: %s fileNeedToDel\n”, n);

exit(0);

}

int main(int argc, char* argv[])

{

printf(“Zap programed by bgate. :) *\n\n”);

if (argc != 2)

usage(argv[0]);

if(ZapDelFile(argv[1]) == TRUE){

printf(“OK”);

}

else{

printf(“error %d”, GetLastError);

}

return 0;

}

-------------------end cat-----------

现在你已经可以用它去删除正在使用的系统文件了, 不过删除之后会弹出让你插入Windows CD对话框.

注意: 删系统文件前做好备份, 在重启前恢复, 另外删系统文件前还需要把dllcache中相应的备份删除. 否则系统会自动恢复.

接下来就想办法去掉这个对话框, 拿出我的法宝--google. 胡乱地搜了一气. 搜到两条有用信息.

1.Windows 下执行系统文件保护的代码在sfc.dll中, Xp系统下在sfc_os.dll中.

2.注册表中把一个叫SfcDisable的键设为FFFFFF9D能在下次启动时让文件保护功能失效.

下面的分析是在Win2K sp4+上进行的. 其中分析的sfc.dll版本是5.0.2195.6673

用ida打开sfc.dll在string中找sfcdisable, 没找到! 让string显示Unicode. 这下看到了. 找到对SfcDisable引用的一个地方.代码如下

.text:769269F9                call   _SfcQueryRegDwordWithAlternate@16 ; SfcQueryRegDwordWithAlternate(x,x,x,x)

.text:769269FE                push   ebx

.text:769269FF                push   offset ??_C@_1BG@HOGG@?$AAS?$AAf?$AAc?$AAD?; “SfcDisable”

.text:76926A04                push   edi

.text:76926A05                push   esi

.text:76926A06                mov    _SFCDebug, eax

.text:76926A0B                call   _SfcQueryRegDwordWithAlternate@16 ; SfcQueryRegDwordWithAlternate(x,x,x,x)

.text:76926A10                push   ebx

.text:76926A11                push   offset ??_C@_1BA@HLJH@?$AAS?$AAf?$AAc?$AAS?$AAc?$AAa?$AAn?$AA?$AA@ ; “SfcScan”

.text:76926A16                push   edi

.text:76926A17                push   esi

.text:76926A18                mov    _SFCDisable, eax

.text:76926A1D                call   _SfcQueryRegDwordWithAlternate@16 ; SfcQueryRegDwordWithAlternate(x,x,x,x)

.text:76926A22                push   ebx

.text:76926A23                push   offset ??_C@_1BC@KFAJ@?$AAS?$AAf?$AAc?$AAQ?$AAu?$AAo?$AAt?$AAa?$AA?$AA@ ; “SfcQuota”

.text:76926A28                push   edi

.text:76926A29                push   esi

.text:76926A2A                mov    _SFCScan, eax

其中_SfcQueryRegDwordWithAlternate@16是读注册表的函数. 很明显, 它把注册表中SfcDisable的值读到了_SFCDisable中. 好, 调出softice. 在_SFCDisable上设断点. 我们又用刚写的zap去删系统文件, softice弹出来了. 断到了下面这个地方, eip为7692A326, _SFCDisable为2.

.text:7692A319                push   ecx

.text:7692A31A                and    [esp+4+var_4], 0

.text:7692A31F                cmp    _SFCDisable, 3

.text:7692A326                push   ebx

.text:7692A327                push   ebp

.text:7692A328                push   esi

.text:7692A329                push   edi

.text:7692A32A                jnz    short loc_7692A333

.text:7692A32C                xor    eax, eax

.text:7692A32E                jmp    loc_7692A459

F5退出, 一会儿对话框弹了出来, 就对这儿引用了一次. 很好, 看看上面这段代码“cmp _SFCDisable, 3”. 此时_SFCDisable为2弹出了对话框, 那么我就把它改为3又用zap删系统文件试试. 哈, 运气很好, 这次没出现让插CD的对话框了. 也就是说只要我们把_SFCDisable改为3就能偷偷地替换系统文件了. 不过不同版本这个地址是不一样的, 用switch来做这个活总是不好. 得写个有通用性的代码.

开始我想它的工作原理大概是Winlogon发现了有对系统文件进行操作. 便调用sfc.dll中的输出函数进行检查. 我们就只需得到这个输出函数入口然后把这个函数“注释”掉就可以了.跟着上面这段代码逆流而上, 找到最后由76924544输出, 又在76924544上加个断点, 继续去删文件. softice跳出来了, 不过不在函数的入口, 反倒在刚才设置的对_SFCDisable的读取上, 没运行函数的入口就运行了函数体中的代码, 看来遇到高人了. 非得逼我出必杀技, 打开2000源代码 : ). 找了半天没找到相应代码又只得退回来看汇编, 最后发现了这个函数NtWaitForMultipleObjects. 呵, 难怪没中断在函数的入口上, 原来早运行了函数的入口然后在函数体里一直没退出. 注释函数的方法不行了.

这时我想它的工作原理大概是winlogon调用sfc.dll中的输出函数在系统启动时创建了一系列事件. 既然winlogon创建了, 那么它也应该得撤销. 用depends打开winlogon. 果然从sfc.dll中输入了两个函数. 一个是刚才分析的那个, 创建了一系列事件. 看看另一个, 输出地址是76926869, 不出所料, 关闭了一系列事件. 现在我们只要向winlogon中注入代码调用“另一个”函数就能取消文件保护功能了. 不过winlogon不能随便注入代码. 26A杂志第六期上有篇文章提到了注入方法:“adjust debugger access rightz to our process”. 那也是一篇SFCDisable的文章, 他用的方法是在内存中搜索特征码, 然后修改. 通用性应该没这么好.

下面的注入方法是从crazylord的代码中拷过来的, 不过方法不是. :), 写完后就懒得检查了, 加之水平有限, 写的不过优雅的地方就将就着看.

-----------------cut antisfc.c-----------

#include

#include “Windows.h”

#include “Tlhelp32.h”

#pragma comment( lib, “Advapi32.lib” )

typedef void (_stdcall * CLOSEEVENTS)(void);

typedef unsigned long DWORD;

typedef DWORD ANTISFC_ACCESS;

/*

* ANTISFC structures

*/

typedef struct _ANTISFC_PROCESS {

DWORD    Pid;                // process pid

HANDLE ProcessHandle;      // process handle

char  ImageName[MAX_PATH]; // image name (not full path)

} ANTISFC_PROCESS, *PANTISFC_PROCESS;

__inline void ErrorMessageBox(char *szAdditionInfo)

{

printf(“error on %s, error code %d. \n”, szAdditionInfo, GetLastError());

}

void usage(char *n) {

printf(“usage: %s [/d]\n”, n);

printf(“\t/d: disable sfc file protecte fuction.\n”);

exit(0);

}

DWORD Init() {

DWORD Ret = 0;

HANDLE hToken;

LUID sedebugnameValue;

TOKEN_PRIVILEGES tkp;

if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken)) {

ErrorMessageBox(“OpenProcessToken”);

} else {

if (!LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &sedebugnameValue)) {

ErrorMessageBox(“LookupPrivilegeValue”);

} else {

tkp.PrivilegeCount = 1;

tkp.Privileges[0].Luid = sedebugnameValue;

tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;

if (!AdjustTokenPrivileges(hToken, FALSE, &tkp, sizeof tkp, NULL, NULL)) {

ErrorMessageBox(“AdjustTokenPrivileges”);

} else {

Ret = 1;

}

}

CloseHandle(hToken);

}

return(Ret);

}

DWORD GetPidEx(char *proc_name, char *full_path) {

DWORD           dwPid=0;

HANDLE           hSnapshot;

PROCESSENTRY32   pe;

BOOL              Ret;

if (isdigit(proc_name[0]))

dwPid = strtoul(proc_name, NULL, 0);

else

dwPid = -1;

hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);

if (hSnapshot == (HANDLE) -1){

ErrorMessageBox(“CreateToolhelp32Snapshot”);

return(0);

}

pe.dwSize = sizeof(PROCESSENTRY32);

Ret = Process32First(hSnapshot, &pe);

while (Ret) {

if((strncmp(strlwr(pe.szExeFile), strlwr(proc_name), strlen(proc_name)) == 0)

|| (pe.th32ProcessID == dwPid)) {

dwPid = pe.th32ProcessID;

strcpy(full_path, pe.szExeFile);

break;

}

pe.dwSize = sizeof(PROCESSENTRY32);

Ret = Process32Next(hSnapshot, &pe);

}

CloseHandle(hSnapshot);

if (dwPid == -1)

dwPid = 0;

return(dwPid);

}

DWORD InitProcess(PANTISFC_PROCESS Process, char *proc_name, ANTISFC_ACCESS access) {

DWORD Ret=0;

Process->Pid = GetPidEx(proc_name, Process->ImageName);

if (Process->Pid != 0 && Process->ImageName[0] != 0) {

Process->ProcessHandle = OpenProcess(access, FALSE, Process->Pid);

if (Process->ProcessHandle == NULL)

ErrorMessageBox(“OpenProcess”);

else

Ret = 1;

}

return(Ret);

}

DWORD InjectThread(PANTISFC_PROCESS Process,

PVOID function) {

HANDLE   hThread;

DWORD   dwThreadPid = 0, dwState;

hThread = CreateRemoteThread(Process->ProcessHandle,

NULL,

0,

(DWORD (__stdcall *) (void *)) function,

NULL,

0,

&dwThreadPid);

if (hThread == NULL) {

ErrorMessageBox(“CreateRemoteThread”);

goto cleanup;

}

dwState = WaitForSingleObject(hThread, 4000); // attends 4 secondes

switch (dwState) {

case WAIT_TIMEOUT:

case WAIT_FAILED:

ErrorMessageBox(“WaitForSingleObject”);

goto cleanup;

case WAIT_OBJECT_0:

break;

default:

ErrorMessageBox(“WaitForSingleObject”);

goto cleanup;

}

CloseHandle(hThread);

return dwThreadPid;

cleanup:

CloseHandle(hThread);

return 0;

}

int main(int argc, char* argv[])

{

ANTISFC_PROCESS    Process;

HMODULE hSfc;

DWORD   dwThread;

CLOSEEVENTS pfnCloseEvents;

DWORD dwVersion;

printf(“AntiSfc programed by bgate. :) *\n\n”);

if (argc != 2)

usage(argv[0]);

if (strcmp(argv[1], “/d”) != 0) {

usage(argv[0]);

}

if (Init()) {

printf(“debug privilege set\n”);

} else {

printf(“error on get debug privilege\n”);

return(0);

}

if(InitProcess(&Process, “winlogon.exe”, PROCESS_ALL_ACCESS) == 0) {

printf(“error on get process info. \n”);

return(0);

}

dwVersion = GetVersion();

if ((DWORD)(LOBYTE(LOWORD(dwVersion))) == 5){               // Windows 2000/XP

if((DWORD)(HIBYTE(LOWORD(dwVersion))) == 0){            //Windows 2000

hSfc = LoadLibrary(“sfc.dll”);

printf(“Win2000\n”);

}

else {//if((DWORD)(HIBYTE(LOWORD(dwVersion))) = 1)            //Windows XP

hSfc = LoadLibrary(“sfc_os.dll”);

printf(“Windows XP\n”);

}

}

//else if () //?

else {

printf(“unsupported version\n”);

}

pfnCloseEvents = (CLOSEEVENTS)GetProcAddress(hSfc,

MAKEINTRESOURCE(2));

if(pfnCloseEvents == NULL){

printf(“Load the sfc fuction failed\n”);

FreeLibrary(hSfc);

return(0);

}

FreeLibrary(hSfc);

dwThread = InjectThread(&Process,

pfnCloseEvents);

if(dwThread == 0){

printf(“failed\n”);

}

else{

printf(“OK\n”);

}

CloseHandle(Process.ProcessHandle);

return(0);

}

------------------end cut---------

在运行zap替换系统文件前运行一下antisfc就行了, 你也可以把它们写到一起. 理论上他能在2000, xp, 2003?的任何版本上使用. 不过我只在Win2K sp4+, WinXP sp1+上测试过.

本文的缺点是替换的系统文件只能在重启后生效, 写完了.

篇9:在Ring3上实现文件碎甲(解锁)功能

一.概述:

如果一个病毒文件被植入正在运行的进程中,我们想要清除它时系统总会提供无法删除;有时编辑文件的进程被意外中止而文件句柄没有正确释放,导致此文件无法进行改写操作,现在我们会使用Unlocker之类的小工具去解锁,但在编写程序的可能会需要把这些功能包含在自己的代码中,本文就是自己写代码实现”如何关闭已经被加载的DLL或是正在使用的文件”功能,使用文章中的方法能很方便的完成文件解锁功能。

按最初的想法准备在ring0中完成这些功能,但在查找资料的过程中发现既然我们能在ring3中做,为什么不让这些方法更通用一些呢。其实功能实现并不难,主要是前期从哪里入手比较麻烦。

我们知道无论是动态库或是文件在加载到进程中时,总会有一个指向它的指针,如果让进程释放这段指针,那么这些文件就不会被系统锁定,

下面将是我们的需要实现文件解锁功能而分解出的步骤

1. 枚举当前系统所有进程;

2. 查找进程中打开的文件句柄和加载的动态库句柄;

3. 通知进程关闭这些句柄。

二.详细设计

2.1查找进程加模的动态库模块

Let’s go,我们来分步完成它吧。对于枚举当前系统所有进程,在这里就不给出代码了,相信实现的方法很多。下面的代码段完成查找指定进程加载动库信息的功能(在这里使用了Jeffrey在《Windows核心编程》一书中提供的CToolhelp类,用它可以完成进程加载信息的分析功能,感谢Jeffrey,我一直在使用它)

【如何在Mac上用AirDrop共享文件和发送文件到IOS设备上】相关文章:

1.在电脑上如何打开amr文件

2.在windows XP系统中关闭文件和打印机共享

3.如何在电脑上找到应用宝备份的文件资料?

4.《用岁月在莲上写诗》阅读答案

5.在全县农村改厕和灭鼠工作会议上的讲话

下载word文档
《如何在Mac上用AirDrop共享文件和发送文件到IOS设备上.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度: 评级1星 评级2星 评级3星 评级4星 评级5星
点击下载文档

文档为doc格式

如何在Mac上用AirDrop共享文件和发送文件到IOS设备上相关文章
最新推荐
猜你喜欢
  • 返回顶部