前几天一个网友给我发消息请我帮他个忙。他的问题是,他正在使用的D2JSP是免费试用版,试用版在运行时会在游戏的所有游戏画面中央显示一行很大的“Trial Version”字样(见下图中的红圈),很烦人,他想去掉这行字。我想正好用此做个教程解释前面介绍过的hack工作原理,于是答应帮他看看。


我已经很久没有开BOT了,最后一次使用D2JSP还是2003年1.09d时期的事。根据我以前的理解,D2JSP和其他hacks一样,由两部分组成,d2jsp.exe只是一个loader,负责把d2jsp.dll加载到游戏进程。而d2jsp.dll才是D2JSP的运行引擎-真正发挥作用的东西。因此“Trial Version”字符串肯定在d2jsp.dll中。最开始的想法是“Trial Version”可能会以一个常量字符串的形式保存在d2jsp.dll中,因此最容易想到的做法是用UltraEdit打开d2jsp.dll,寻找“Trial Version”,找到的话把它改为空字符串就OK了。然而打开后发现d2jsp.dll是加了壳的,这才想起自从D2 1.10以来D2JSP开始收费,采取了一些措施防止别人破解,加壳就是其中之一(当然还是被人破了)。在d2jsp.dll文件的前面几行看到了aspack字串,看来加的是aspack壳。脱壳我很不在行,但是我知道有一些自动脱壳工具,针对aspack的脱壳工具也肯定有,不妨试试,于是到网上抓了个脱壳软件-AspackDie。当然试验的结果是失败了。又想,不管怎样,d2jsp.dll运行的时候它自己得脱壳吧,那我可以在它自己脱壳后在进程内存中找吧。于是加载D2JSP后用WinHex打开游戏进程,查找Trial Version,然而还是没找到。看来可能用了即时脱壳技术,或者干脆Trial Version根本不是常量字符串,比如我知道如果在C/C++中这样写szVersion就不是常量字符串:

char szVersion[] = {'T''r''i''a''l'' ''V''e''r''s''i''o''n'''};

然后怎么办,继续研究脱壳?不,其实我早就有了更好、更通用的解决方法,但是需要编程。现在看来简单的思路行不通,还是写程序算了。换个角度来看,不管字符串是什么,总得调用某个函数来输出显示吧,看上图中的字样,显然是调用了Diablo II的内部函数显示的,因此如果能截获这个函数过滤掉"Trial Version"字符串就搞定了。而且这种方法不用修改D2JSP程序,对所有D2JSP版本都起作用,因此更通用。问题是它调用了D2X的哪个函数呢?我想起我的d2hackmap中也用到了类似的字符串显示的功能,它们用的有可能是同一个!于是把d2hackmap的源代码翻出来看了看,发现了d2win.dll中导出序号为10064(Diablo II中所有dll导出的函数都只有序号没有名字)的函数做此用途,其函数声明为:

void __fastcall D2WIN_DrawText(wchar_t *str, int xpos, int ypos, DWORD color, DWORD unknown);

 然后用VC++ attach到游戏进程进行调试,想在D2WIN_DrawText设断点监控,结果发现调试器刚attach上去D2JSP就会崩溃。看来它做了反调试处理,这也在意料之中。还是直接写个DLL注入到游戏进程截获D2WIN_DrawText来观测得了,字符串可以用Win32 API OutputDebugString输出然后用DbgView观测:

void __fastcall MyD2WIN_DrawText(wchar_t *str, int xpos, int ypos, DWORD color, DWORD unknown)

{
    
if (str) OutputDebugStringW(str);
}

结果发现“Trial Version”果然是通过D2WIN_DrawText输出的,见下图。


现在只要改变MyD2WIN_DrawText()的实现,判断输出字符串如果为"Trial Version"则跳过真正的D2WIN_DrawText()代码就搞定了,代码见后面的详细源代码分析。改变后的显示结果如下图,画面上方的d2jsp v1.2.0字样还在,Trial Version字样已经没了:


至此,给D2JSP打补丁的程序d2jsppatch.dll已经做好了,然而还有一个问题,就是d2jsppatch.dll如何加载呢?用D2JSP开的BOT一般是无人职守自动运行的,因此d2jsppatch.dll最好能够随着d2jsp.dll自动加载,否则每次都需要人工加载那就太麻烦了。那怎么做到随d2jsp.dll自动加载呢?一个办法是把d2jsp.dll改名为d2jsp2.dll,d2jsppatch.dll改名为d2jsp.dll,这样d2jsp.exe每次加载d2jsp.dll时其实加载的是d2jsppatch.dll。d2jsppatch.dll加载起来后,在它的启动代码里再手工加载d2jsp2.dll(即原来的d2jsp.dll),这样就达到了自动加载d2jsppatch.dll的目的。这种方法的缺点是它改变了D2JSP原有模块之间的关系,可能会导致一些兼容性问题,比如d2jsp.exe可能会校验d2jsp.dll检查它是否被人改过,或者某个依赖于d2jsp.dll工作的程序可能会用LoadLibrary("d2jsp.dll")/GetProcAddress()获取d2jsp.dll的到处函数,这时就会失败。

伴随d2jsp.dll自动加载的另外一种做法是把d2jsppatch.dll静态绑定到d2jsp.dll或者d2jsp.dll会用到的某个DLL。由于d2jsp.dll加了壳,DLL文件的IAT(Import Address Table,即导入表)已经被破坏,最好是从d2jsp.dll会用到的DLL下手。我们知道D2JSP支持jscript脚本程序,它肯定会加载jscript脚本引擎js32.dll,所以我们可以把d2jsppatch.dll静态绑定到js32.dll上去。熟悉Windows编程且喜欢玩API hooking的朋友可能知道微软的Detours Library,其中附带了一个程序setdll.exe可以把一个DLL静态绑定到其他EXE或者DLL。在命令行运行:

setdll.exe -d:d2jsppatch.dll js32.dll

就把d2jsppatch.dll绑定到了js32.dll,如下图。

以下是对d2jsppatch.dll源代码的详细分析,给感兴趣的朋友参考。d2jsppatch.dll虽然是针对D2JSP的,但是它包含了一个hack的所有基本组成部分,而且功能很简单,用它来了解hack的工作原理是很合适的。d2maphack、d2hackmap等hacks的工作原理和它完全一样,不同的只是实现的功能。

1,d2jsppatch.dll的加载和卸载。DLL入口函数DllMain中一般用来做安装(InstallPatch)、卸载(RemovePatch)旁路点(detour patch)。安装、卸载工作可能导致程序崩溃(见以前的文章),放在DllMain中进行最合适,因为Windows保证在DllMain中的代码执行时进程内的其他线程不会运行,见:http://www.microsoft.com/whdc/driver/kernel/DLL_bestprac.mspx

BOOL APIENTRY DllMain(HANDLE hModule, DWORD dwReason, LPVOID lpReserved)
{
    
if (DLL_PROCESS_ATTACH == dwReason)
    
{
        DisableThreadLibraryCalls((HMODULE)hModule);
        
return InstallPatch();
    }

    
else if(DLL_PROCESS_DETACH == dwReason)
    
{
        RemovePatch();
    }

    
return TRUE;
}

 2,旁路点的安装和卸载。安装旁路点一般就是往旁路点处插入一个跳转(call或jmp,5字节)指令,让程序运行到此处时跳转到自己的patch代码。要注意程序代码段的页面属性一般都是只读的,安装前先要把页面属性改成可读写,装完后再恢复原来的页面属性。卸载旁路点就是把patch点原先的代码写回去,因此在安装时要做一下备份。

void WriteLocalBYTES(void* pAddress, void *buf, int len)
{
    DWORD oldprot 
= 0, dummy;
    VirtualProtect(pAddress, len, PAGE_EXECUTE_READWRITE, 
&oldprot);
    WriteProcessMemory(GetCurrentProcess(), pAddress, buf, len, 
&dummy);
    VirtualProtect(pAddress, len, oldprot, 
&dummy);
}


void PatchCALL(DWORD pOldCode, DWORD pNewCode, DWORD len)
{
    BYTE buf1[
5];
    buf1[
0= 0xe8// inst call
    *(DWORD *)(buf1+1= pNewCode-(pOldCode+5);
    WriteLocalBYTES((
void*)pOldCode, buf1, len);
}


FARPROC g_pDrawText;
BYTE g_oldcode[
5];
BOOL InstallPatch()
{
    HMODULE hD2Win 
= GetModuleHandle("d2win.dll");
    
if (!hD2Win) hD2Win = LoadLibrary("d2win.dll");
    
if (hD2Win)
    
{
        g_pDrawText 
= GetProcAddress(hD2Win, (LPCSTR)10064);
        
if (g_pDrawText)
        
{
            memcpy(g_oldcode, g_pDrawText, 
5);
            PatchCALL((DWORD)g_pDrawText, (DWORD)D2WinDrawTextPatch_ASM, 
5);
            
return TRUE;
        }

    }

    
return FALSE;
}


void RemovePatch()
{
    
if (g_pDrawText)
        WriteLocalBYTES(g_pDrawText, g_oldcode, 
5);
}

3,旁路点的patch代码。patch代码根据所要实现的功能的不同而不同,需要具体情况具体分析。一般来说逻辑稍微复杂些的patch代码会由两步分组成,一是用汇编写的入口代码,对寄存器和栈指针进行精细控制以免破坏原先的数据;二是用C/C++写的逻辑实现代码。汇编入口代码调用C/C++的逻辑实现代码。在此例中,D2WinDrawTextPatch_ASM为纯(嵌入)汇编函数,第一行代码运行前的寄存器内容和栈布局如注释所示,D2WinDrawTextPatch有5个参数,由于是__fastcall,因此前两个参数在ecx和edx中传递(VC的规定,C++ Builder可能有所不同),剩下三个从栈中传入。由于C函数D2WinDrawTextPatch可能破坏ecx和edx里的内容,因此调用前必须保存它们的值,然后调用D2WinDrawTextPatch做真正的字符串过滤,注意D2WinDrawTextPatch也声明为__fastcall,因此参数str为ecx。根据str是否为"Trial Version",D2WinDrawTextPatch返回TRUE或FALSE(返回值存放在eax中)。D2WinDrawTextPatch_ASM在D2WinDrawTextPatch返回后先恢复ecx和edx的原先内容,接着根据eax的值判断是否应该执行真正的D2WinDrawText函数来显示字符串。标号draw_text后面的代码流程将跳到真正的D2WinDrawText去执行,由于旁路点把它的前两个指令(共5个字节)改掉了(见下图,上半部分为patch前的代码,下半部分为patch后的代码),在跳转之前必须先执行这两条指令。
BOOL __fastcall D2WinDrawTextPatch(wchar_t *str)
{
    
return str && (*str == L'T' && wcscmp(str, L"Trial Version"== 0);
}


/*
* [esp+0x10] = arg 5 - unknown
* [esp+0x0c] = arg 4 - col
* [esp+0x08] = arg 3 - ypos
* [esp+0x04] = return address of caller of D2WIN_DrawText, e.g., from D2JSP
* [esp+0x00] = return address of D2WIN_DrawText
* edx = arg 2, xpos
* ecx = arg 1, text string
*/

void __declspec(naked) D2WinDrawTextPatch_ASM()
{
    __asm
    
{
        push edx; 
// arg 2 - xpos
        push ecx; // arg 1 - str
        call D2WinDrawTextPatch;
        pop ecx;
        pop edx;
        test eax, eax;
        jz draw_text;
        pop eax; 
// discard return address of caller of D2WIN_DrawText
        ret 0x0c// discard three arguments
draw_text:
        pop eax; 
// return address of D2WIN_DrawText

        
// original code, overwritten by detour patch
        push ebx;
        mov ebx, dword ptr [esp
+0x10];

        jmp eax;
    }

}


4,给静态绑定用的空导出函数。在一般的hack中这一部分是不需要的。setdll.exe在做静态绑定时需要把d2jsppatch.dll的一个导出函数(随便一个,有一个就行)插入js32.dll的IAT中。

extern "C" __declspec( dllexport ) VOID FakedInterface()
{
}

 5,做为一个行为良好、成熟的hack,在安装旁路点前还应该检测自己用到的旁路点有没有已经被其他hack改掉了,否则就会导致其他hack不能正常工作甚至整个游戏崩溃。如果别人已经改掉了,自己要么额外处理要么只好主动退出。那么如果要patch很多点(像maphack、hackmap有上百个),怎么检查这些点是否被改了呢?一个快速而且有效的做法是对这些点的内容预先计算一个校验和,运行时每次安装旁路点前再校验一遍然后和预先计算的值比较。d2jsppatch.dll的功能很简单,没有做这部分处理,具体做法请参考d2hackmap 2.24的源代码,也可以到这里下载:http://newd2event.net/index.php?id=hacks/Sting_Hackmap。

附:完整的d2jsppatch.dll源代码,只有短短的100行不到。

#define WIN32_LEAN_AND_MEAN
#include 
<windows.h>

// helper stuff
void WriteLocalBYTES(void* pAddress, void *buf, int len)
{
    DWORD oldprot 
= 0, dummy;
    VirtualProtect(pAddress, len, PAGE_EXECUTE_READWRITE, 
&oldprot);
    WriteProcessMemory(GetCurrentProcess(), pAddress, buf, len, 
&dummy);
    VirtualProtect(pAddress, len, oldprot, 
&dummy);
}


void PatchCALL(DWORD pOldCode, DWORD pNewCode, DWORD len)
{
    BYTE buf1[
5];
    buf1[
0= 0xe8// inst call
    *(DWORD *)(buf1+1= pNewCode-(pOldCode+5);
    WriteLocalBYTES((
void*)pOldCode, buf1, len);
}


// patch stuff
//BOOL __fastcall D2DrawTextPatch(wchar_t *str, int xpos, int ypos, DWORD col, DWORD unknown)
BOOL __fastcall D2WinDrawTextPatch(wchar_t *str)
{
    
return str && (*str == L'T' && wcscmp(str, L"Trial Version"== 0);
}


/*
* [esp+0x10] = arg 5 - unknown
* [esp+0x0c] = arg 4 - col
* [esp+0x08] = arg 3 - ypos
* [esp+0x04] = return address of caller of D2WIN_DrawText, e.g., from D2JSP
* [esp+0x00] = return address of D2WIN_DrawText
* edx = arg 2, xpos
* ecx = arg 1, text string
*/

void __declspec(naked) D2WinDrawTextPatch_ASM()
{
    __asm
    
{
        push edx; 
// arg 2 - xpos
        push ecx; // arg 1 - str
        call D2WinDrawTextPatch;
        pop ecx;
        pop edx;
        test eax, eax;
        jz draw_text;
        pop eax; 
// discard return address of caller of D2WIN_DrawText
        ret 0x0c// discard three arguments
draw_text:
        pop eax; 
// return address of D2WIN_DrawText

        
// original code, overwritten by detour patch
        push ebx;
        mov ebx, [esp
+0x10];

        jmp eax;
    }

}


FARPROC g_pDrawText;
BYTE g_oldcode[
5];
BOOL InstallPatch()
{
    HMODULE hD2Win 
= GetModuleHandle("d2win.dll");
    
if (!hD2Win) hD2Win = LoadLibrary("d2win.dll");
    
if (hD2Win)
    
{
        g_pDrawText 
= GetProcAddress(hD2Win, (LPCSTR)10064);
        
if (g_pDrawText)
        
{
            memcpy(g_oldcode, g_pDrawText, 
5);
            PatchCALL((DWORD)g_pDrawText, (DWORD)D2WinDrawTextPatch_ASM, 
5);
            
return TRUE;
        }

    }

    
return FALSE;
}


void RemovePatch()
{
    
if (g_pDrawText)
        WriteLocalBYTES(g_pDrawText, g_oldcode, 
5);
}


BOOL APIENTRY DllMain(HANDLE hModule, DWORD dwReason, LPVOID lpReserved)
{
    
if (DLL_PROCESS_ATTACH == dwReason)
    
{
        DisableThreadLibraryCalls((HMODULE)hModule);
        
return InstallPatch();
    }

    
else if(DLL_PROCESS_DETACH == dwReason)
    
{
        RemovePatch();
    }

    
return TRUE;
}


// faked exported function used to bind with js32.dll
extern "C" __declspec( dllexport ) VOID FakedInterface()
{
}

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. 表单提交中文时出现乱码的问题

    JSP获取页面参数时一般采用系统默认的编码方式(即ISO8859-1),如果如果页面参数的编码类型和系统默认的编码类型不一致,特别是页面参数是中文时,很可能就会出现乱码。解决方法:方法一:在获取页面参数之前,使用request设置编码。但是要注意,这种方法只适用Post请求方法二:…...

    2024/4/21 10:57:23
  2. springboot之集成jsp(springMVC)

    1、大体步骤(1) 创建Maven web project;(2) 在pom.xml文件添加依赖;(3) 配置application.properties支持jsp(4) 编写测试Controller(5) 编写JSP页面(6) 编写启动类App.java2、新建SpringInitialzr3、pom文件123456789101112…...

    2024/4/21 10:57:21
  3. 两种解决表单重复提交的方式PRG和Token

    引言:在系统开发过程中,如何避免表单重复提交一直是一个令人头疼的问题,好在前辈们都已经开发了数种解决方式,这次博主将会介绍两种解决表单重复提交的问题。我们知道,在JSP&Servlet中有两种跳转方式,一种是重定向跳转,特点是: 重定向跳转使用URL重写(?+键值对)的…...

    2024/4/21 10:57:21
  4. thinkphp表单令牌错误的解决方法

    把 {__NOTOKEN__} 加到模板里就行了. 令牌验证 ThinkPHP新版内置了表单令牌验证功能,可以有效防止表单的远程提交等安全防护。 表单令牌验证相关的配置参数有: TOKEN_ON=>true, // 是否开启令牌验证 TOKEN_NAME=>__hash__, // 令牌验证的表单隐藏字段名称 TOKEN_TY…...

    2024/4/24 3:13:25
  5. 百田游戏策划笔试回忆

    这是找实习的时候做的笔试卷子,不过目测也应该是该公司校园招聘时的卷子,针对的是游戏策划中系统策划和数值策划方向。首先是选择题, 第一题是找数字规律 2 4 9 19 45 110 二是图形规律, 三也是找规律 1,2/3,3/5,( ),13/21,9/14 a.2/11 b.3/4 c.3/5 d.1/2 第四题…...

    2024/4/21 10:57:18
  6. form提交表单中包含time类型数据

    当数据库和实体类中含有date类型的数据时 ,form提交的时间数据只是string类型的,所以不能直接写入到java实体类和数据库,经过百度找到了解决方法 ,特地挪过来: 在controller中增加方法 /** * form表单提交 Date类型数据绑定 * <功能详细描述> * @param binder * @se…...

    2024/4/21 10:57:17
  7. KindEditor + Jsp 使用总结

    KindEditor介绍 KindEditor是一套开源的HTML可视化编辑器,主要用于让用户在网站上获得所见即所得编辑效果,兼容IE、Firefox、Chrome、Safari、Opera等主流浏览器。 以下为: kindeditor-4.1.10 版本(下载地址:http://down.admin5.com/qita/8893.html) 直接列明操作步骤1:解…...

    2024/4/20 17:23:36
  8. 利用JS轻松实现获取表单数据

    转自:http://www.jb51.net/article/99261.htm接触过Angularjs的都知道,ng支持双向绑定,我们可以轻轻松松的通过ngModel将我们的值绑定到界面,当修改了值提交表单的时候不需要再重新通过ID去重新抓取输入框信息了。那对于我们开发前台网站,不用ng一类的MVVM框架,只引用了Jq…...

    2024/4/20 12:03:36
  9. 如何使用JSP开发WebMail系统-JSP教程,邮件相关

    电子邮件(e-mail)是internet上使用最广泛的服务之一,传统的email应用模式基于c/s结构,即用户使用客户端的邮件收发工具(如outlook、foxmail等)与提供邮件服务的服务器(如163.net、263.net、371.net)通信,在使用客户端邮件工具之前,用户要进行一些必要的设置,如指定邮…...

    2024/4/20 17:23:34
  10. PHP 获取表单数据与HTML嵌入PHP脚本

    php接受通过HTML表单提交的信息时,会将提交的数据保存在全局数组中,我们可以调用系统特定的自动全局变量数组来获取这些值。常用的自动全局变量如下所示: 1、GET方式功能:获取get方式提交的数据格式:$_GET[“formelement”] 2、POST方式功能:获取post方式提交的数据 格式…...

    2024/4/20 14:34:55
  11. JSP教程(四)-JSP Actions的使用

    JSP actions 使用您可以动态的插入一个文件,重用JavaBeans组件,前进到另一个页面,或为Java 插件生成一个HTML。可以使用的action 有:(1) jsp:include --在页面被请求时包含进一个文件。(2) jsp:useBean--找到或实例化一个JavaBean。(3) jsp:setProperty--设置一个JavaBean属…...

    2024/4/21 10:57:17
  12. JavaScript阻止回车提交表单的方法

    大家对回车键的功能应该比较熟悉,比如在windows系统的很多应用程序中,只要点击回车键就可以进入此程序或者开启某项功能,不过有时候我们希望阻止它的功能,例如在填写表单的时候,可能不小心点击回车键造成表单误提交,下面就来简单介绍一下如何实现此功能。代码实例如下:如…...

    2024/4/21 10:57:15
  13. 使用MyEclipse创建JSP页面的一般步骤

    (一)MyEclipse下建立点(当然事先JDK以及Tomcat以及装好)(在包资源管理器中)新建Web Project站点名称:MyJSP2选择当前站点的工作目录:默认是我们打开MyEclipse时设置的工作目录,在这里也可以修改(最好是在某个地方事先就建立一个同站点名称MyJSP2一样的文件夹,然后再选…...

    2024/4/21 10:57:14
  14. 帝国cms之自定义系统模型

    系统模型就是通常所说的系统模块,如:新闻系统,下载系统,商城系统等。而自定义系统模型就是用户可以根据需要自由扩展各种系统模块。自定义系统模型一般步骤:1、系统分析;2、建立数据表;3、建立字段;4、建立系统模型;5、完成。举例说明:制作“作品管理系统”1、系统分析…...

    2024/4/21 10:57:13
  15. JSP实用教程 第三版 作者: 耿祥义 张跃平 清华大学出版社

    内容简介:JSP是一种动态网页技术标准,利用该技术可以建立安全、跨平台的先进动态网站。《JSP实用教程(第三版)/普通高等院校计算机专业(本科)实用教程系列》是一本实用教程,配备了大量的例题,叙述详细,通俗易懂,便于自学,不仅注重结合实例讲解一些难点和关键技术,而…...

    2024/4/21 10:57:13
  16. android中使用httpclient提交表单

    在android开发中如果我们需要和服务器端交互的时候已经使用apache client项目进行表单的模拟提交。通过返回json对象进而来达到数据的提交与取回,同时又能保证session的有效性以及系统的安全性,这里我封装了一下httpclient的get和post方式来提交数据/*** */ package com.jiuc…...

    2024/4/21 10:57:11
  17. idea 2017 jsp开发环境的搭建

    1.tomcat一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet。2.jspJSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,它[1…...

    2024/4/21 10:57:10
  18. Android 移动应用表单设计秘籍

    前言 欢迎大家我分享和推荐好用的代码段~~声明 欢迎转载,但请保留文章原始出处:CSDN:http://www.csdn.net雨季o莫忧离:http://blog.csdn.net/luckkof正文关于移动应用表单设计的,可惜最近项目很忙,忙到没有时间打理博客。最近体验产品的时候,经常看到错…...

    2024/4/21 10:57:09
  19. 用eclipse新建JSP

    1. JSP(JavaServer Pages)是一种基于Java的脚本技术2. JSP是由Sun公司倡导、许多公司参与一起建立的一种动态网页技术标准 3. 在传统的网页HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件(*.jsp) 4. 简单的说,JSP就是可能包含了JAVA程序…...

    2024/4/21 10:57:09
  20. 开发技巧--改变表单列表页面显示样式为“卡片组”

    【返回Z平台-帮助文档-首页】目录默认表单列表页面显示样式改为卡片组显示样式设置过程 第一、打开表单管理,选择“角色管理”进行编辑。第二、找到角色管理主表进行设置,设置列表显示形式为“卡片组”。第三、重启服务或更新系统缓存后查看效果有些特定表单的列表页面,需要…...

    2024/4/21 10:57:15

最新文章

  1. 本地部署Llama3教程,断网也能用啦!

    4月18日&#xff0c;Meta在官方博客官宣了Llama3&#xff0c;标志着人工智能领域迈向了一个重要的飞跃。经过笔者的个人体验&#xff0c;Llama3 8B效果已经超越GPT-3.5&#xff0c;最为重要的是&#xff0c;Llama3是开源的&#xff0c;我们可以自己部署&#xff01; 本文和大家…...

    2024/4/24 11:26:24
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. 数据库相关知识总结

    一、数据库三级模式 三个抽象层次&#xff1a; 1. 视图层&#xff1a;最高层次的抽象&#xff0c;描述整个数据库的某个部分的数据 2. 逻辑层&#xff1a;描述数据库中存储的数据以及这些数据存在的关联 3. 物理层&#xff1a;最低层次的抽象&#xff0c;描述数据在存储器中时如…...

    2024/4/12 17:07:52
  4. 微信小程序实现左滑删除

    效果 实现思路 使用的是官方提供的movable-area 嵌套movable-view 1、movable-area&#xff1a;注意点&#xff0c;需要设置其高度&#xff0c;否则会出现列表内容重叠的现象。 2、由于movable-view需要向右移动&#xff0c;左滑的时候给删除控件展示的空间&#xff0c;故 mov…...

    2024/4/22 23:38:58
  5. WP Rocket v3.15.10最新版强大的WordPress缓存插件

    WP Rocket v3.15.10是一款强大的WordPress缓存插件&#xff0c;它通过一系列优化措施来提高网站的速度和性能。 WP Rocket与免费缓存插件相比&#xff0c;提供了更丰富和高级的自定义设置功能。这些包括媒体优化、预加载、延迟加载和数据库优化等。特别是对于没有任何缓存技术…...

    2024/4/21 23:17:25
  6. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/4/23 20:58:27
  7. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/4/23 13:30:22
  8. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/4/23 13:28:06
  9. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/4/20 23:26:47
  10. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/4/23 13:27:44
  11. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/4/19 11:57:53
  12. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/4/23 13:29:53
  13. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/4/23 13:27:22
  14. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/4/23 13:28:42
  15. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/4/23 22:01:21
  16. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/4/23 13:29:23
  17. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/4/23 13:27:46
  18. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/4/23 13:47:22
  19. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/4/19 11:59:23
  20. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/4/19 11:59:44
  21. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/4/23 13:28:08
  22. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/4/23 13:29:47
  23. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/4/23 13:28:14
  24. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/4/23 13:27:51
  25. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/4/23 13:27:19
  26. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  27. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  28. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  29. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  30. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  31. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  32. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  33. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  34. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  35. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  36. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  37. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  38. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  39. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  40. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  41. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  42. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  43. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  44. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  45. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57