Win32 PE病毒和普通Win32 PE程序一样需要调用API函数,但是普通的Win32 PE程序里面有一个导入函数表,该导入函数表对应了代码段中所用到的api函数在动态连接库中的真实地址(由PE Loader去填充这个地址的)。这样,调用api函数时就可以通过该导入函数表找到相应api函数的真正执行地址。 但是对于Win32 PE病毒来说,他只有一个代码段,他并不存在引入函数段。既然如此,病毒就无法象普通PE程序那样直接调用相关API函数,而应该先找出这些API函数在相应动态链接库中的地址。 我们知道通过LoadLibrary和GetProcAddress可以很方便的得到函数的地址,从而方便的去Call,而这两个函数是在kernel32.dll中被导出的,所以我们必须先得到kernel32.dll的基地址,然后再去找 nStart: pop ebp sub ebp, offset nStart ;得到kernel32加载的地址 mov dword ptr [ebp+appBase],ebp mov eax,[esp] ;返回地址 xor edx,edxGet_K32Base: dec eax ;逐字节比较验证,速度比较慢,不过功能一样 mov dx,word ptr [eax+IMAGE_DOS_HEADER.e_lfanew] ;就是ecx+3ch test dx,0f000h ;Dos Header+stub不可能太大,超过4096byte jnz Get_K32Base ;加速检验,下一个 cmp eax,dword ptr [eax+edx+IMAGE_NT_HEADERS.OptionalHeader.ImageBase] jnz Get_K32Base ;看Image_Base值是否等于ecx即模块起始值 mov [ebp+k32Base],eax ;如果是,就认为找到kernel32的模块装入地址 //这个是通过逐字节比较验证,速度比较慢,我们可以知道通过一页一页去比较,这个暂且不讨论 注意这一句 mov eax,[esp] 为什么此时[Esp]是在Kernel32.dll中内?? 也就是为什么我们进入EntryPoint时esp是指向kernel32.dll的呢?(OS2003中此时的ESP = 0x77EIF38C) 我们来看看进程创建的整个过程 1 CreateProcessA call CreateProcessInternalA 2 CreateProcessInternalA call CreateProcessInternalW 3 CreateProcessInternalW call BasepInitializeContext 4 BasepInitializeContext mov dword ptr [eax+0B8h], offsetBaseProcessStart;//这里其实类似一个回调
//其实BaseProcessStart是我们程序在内核中真正启动地址! 5 BaseProcessStart所做的动作是:建立SEH,NtSetInformationThread(启动线程), ebp+8其实是我们的EntryPoint 具体阅读汇编代码和ReactOS代码(或者Nt4.0代码) ======================================================================
.text:77E48939 CreateProcessA proc near ; CODE XREF: LoadModule+13Dp .text:77E48939 .text:77E48939 lpApplicationName= dword ptr 8 .text:77E48939 lpCommandLine = dword ptr 0Ch .text:77E48939 lpProcessAttributes= dword ptr 10h .text:77E48939 lpThreadAttributes= dword ptr 14h .text:77E48939 bInheritHandles = dword ptr 18h .text:77E48939 dwCreationFlags = dword ptr 1Ch .text:77E48939 lpEnvironment = dword ptr 20h .text:77E48939 lpCurrentDirectory= dword ptr 24h .text:77E48939 lpStartupInfo = dword ptr 28h .text:77E48939 lpProcessInformation= dword ptr 2Ch .text:77E48939 .text:77E48939 push ebp .text:77E4893A mov ebp, esp .text:77E4893C push 0 .text:77E4893E push [ebp+lpProcessInformation] .text:77E48941 push [ebp+lpStartupInfo] .text:77E48944 push [ebp+lpCurrentDirectory] .text:77E48947 push [ebp+lpEnvironment] .text:77E4894A push [ebp+dwCreationFlags] .text:77E4894D push [ebp+bInheritHandles] .text:77E48950 push [ebp+lpThreadAttributes] .text:77E48953 push [ebp+lpProcessAttributes] .text:77E48956 push [ebp+lpCommandLine] .text:77E48959 push [ebp+lpApplicationName] .text:77E4895C push 0 .text:77E4895E call CreateProcessInternalA .text:77E48963 pop ebp .text:77E48964 retn 28h .text:77E48964 CreateProcessA endp
====================================================================== .text:77E48A6D CreateProcessInternalA proc near ; CODE XREF: WinExec+3Fp .text:77E48A6D ; WinExec+A4p ... .text:77E48A6D .text:77E48A6D ; FUNCTION CHUNK AT .text:77E488A4 SIZE 00000023 BYTES .text:77E48A6D ; FUNCTION CHUNK AT .text:77E488F6 SIZE 0000000B BYTES .text:77E48A6D ; FUNCTION CHUNK AT .text:77E48967 SIZE 00000101 BYTES .text:77E48A6D .text:77E48A6D push 98h .text:77E48A72 push offset dword_77E542F0 .text:77E48A77 call sub_77E116F6 .text:77E48A7C xor ebx, ebx .text:77E48A7E cmp [ebp+10h], ebx .text:77E48A81 jz loc_77E488A9 .text:77E48A87 push dword ptr [ebp+10h] .text:77E48A8A lea eax, [ebp-44h] .text:77E48A8D push eax .text:77E48A8E call sub_77E19AA8 .text:77E48A93 test eax, eax .text:77E48A95 jz loc_77E488A4 .text:77E48A9B .text:77E48A9B loc_77E48A9B: ; CODE XREF: CreateProcessInternalA-1B8j .text:77E48A9B mov [ebp-4Ch], ebx .text:77E48A9E mov [ebp-34h], ebx .text:77E48AA1 push 11h .text:77E48AA3 pop ecx .text:77E48AA4 mov esi, [ebp+2Ch] .text:77E48AA7 lea edi, [ebp-0A8h] .text:77E48AAD rep movsd .text:77E48AAF mov [ebp-0A4h], ebx .text:77E48AB5 mov [ebp-0A0h], ebx .text:77E48ABB mov [ebp-9Ch], ebx .text:77E48AC1 mov [ebp-4], ebx .text:77E48AC4 xor esi, esi .text:77E48AC6 inc esi .text:77E48AC7 mov [ebp-4], esi .text:77E48ACA cmp [ebp+0Ch], ebx .text:77E48ACD jnz loc_77E48A4D .text:77E48AD3 .text:77E48AD3 loc_77E48AD3: ; CODE XREF: CreateProcessInternalA-12j .text:77E48AD3 cmp [ebp+28h], ebx .text:77E48AD6 jnz short loc_77E48B4E .text:77E48AD8 .text:77E48AD8 loc_77E48AD8: ; CODE XREF: CreateProcessInternalA+F5j .text:77E48AD8 mov eax, [ebp+2Ch] .text:77E48ADB mov eax, [eax+4] .text:77E48ADE cmp eax, ebx .text:77E48AE0 jnz loc_77E489E3 .text:77E48AE6 .text:77E48AE6 loc_77E48AE6: ; CODE XREF: CreateProcessInternalA+18Aj .text:77E48AE6 mov eax, [ebp+2Ch] .text:77E48AE9 mov eax, [eax+8] .text:77E48AEC cmp eax, ebx .text:77E48AEE jnz loc_77E48971 .text:77E48AF4 .text:77E48AF4 loc_77E48AF4: ; CODE XREF: CreateProcessInternalA-8Fj .text:77E48AF4 mov eax, [ebp+2Ch] .text:77E48AF7 mov eax, [eax+0Ch] .text:77E48AFA cmp eax, ebx .text:77E48AFC jnz short loc_77E48B71 .text:77E48AFE .text:77E48AFE loc_77E48AFE: ; CODE XREF: CreateProcessInternalA+16Bj .text:77E48AFE mov [ebp-4], ebx .text:77E48B01 mov eax, [ebp-40h] .text:77E48B04 cmp eax, ebx .text:77E48B06 jz loc_77E488F6 .text:77E48B0C .text:77E48B0C loc_77E48B0C: ; CODE XREF: CreateProcessInternalA-171j .text:77E48B0C push dword ptr [ebp+34h] .text:77E48B0F push dword ptr [ebp+30h] .text:77E48B12 lea ecx, [ebp-0A8h] .text:77E48B18 push ecx .text:77E48B19 push dword ptr [ebp-34h] .text:77E48B1C push dword ptr [ebp+24h] .text:77E48B1F push dword ptr [ebp+20h] .text:77E48B22 push dword ptr [ebp+1Ch] .text:77E48B25 push dword ptr [ebp+18h] .text:77E48B28 push dword ptr [ebp+14h] .text:77E48B2B push eax .text:77E48B2C push dword ptr [ebp-4Ch] .text:77E48B2F push dword ptr [ebp+8] .text:77E48B32 call CreateProcessInternalW//-------@*@*@*@*@*@*@*@*@*@*@*@*@*@------- .text:77E48B37 mov [ebp-1Ch], eax .text:77E48B3A .text:77E48B3A loc_77E48B3A: ; CODE XREF: CreateProcessInternalA-Aj .text:77E48B3A or dword ptr [ebp-4], 0FFFFFFFFh .text:77E48B3E call sub_77E48C0F .text:77E48B43 mov eax, [ebp-1Ch] .text:77E48B46 .text:77E48B46 loc_77E48B46: ; CODE XREF: CreateProcessInternalA:loc_77E488A4j .text:77E48B46 call sub_77E11736 .text:77E48B4B retn 30h
====================================================================== CreateProcessInternalW+A50: .......(省略) .text:77E22A5A lea ecx, [ebp-344h] .text:77E22A60 push ecx .text:77E22A61 push eax .text:77E22A62 push dword ptr [ebp-1F0h] .text:77E22A68 push dword ptr [ebp-28h] .text:77E22A6B call sub_77E1AA15 .text:77E22A70 mov [ebp-250h], eax .text:77E22A76 cmp eax, ebx .text:77E22A78 jl loc_77E23707 .text:77E22A7E push ebx .text:77E22A7F push dword ptr [ebp-33Ch] .text:77E22A85 push dword ptr [ebp-1FCh] .text:77E22A8B push edi .text:77E22A8C lea eax, [ebp-9A0h] .text:77E22A92 push eax .text:77E22A93 call sub_77E1ABE7//-------@*@*@*@*@*@*@*@*@*@*@*@*@*@------- .......(省略)
====================================================================== BasepInitializeContext://ReactOs代码上是这样命名的
.text:77E1ABE7 sub_77E1ABE7 proc near ; CODE XREF: CreateRemoteThread+63p .text:77E1ABE7 ; CreateProcessInternalW+A50p ... .text:77E1ABE7 .text:77E1ABE7 arg_0 = dword ptr 8 .text:77E1ABE7 arg_4 = dword ptr 0Ch .text:77E1ABE7 arg_8 = dword ptr 10h .text:77E1ABE7 arg_C = dword ptr 14h .text:77E1ABE7 arg_10 = dword ptr 18h .text:77E1ABE7 .text:77E1ABE7 ; FUNCTION CHUNK AT .text:77E1AB94 SIZE 0000004E BYTES .text:77E1ABE7 .text:77E1ABE7 push ebp .text:77E1ABE8 mov ebp, esp .text:77E1ABEA mov eax, [ebp+arg_0] .text:77E1ABED mov ecx, [ebp+arg_8] .text:77E1ABF0 push ebx .text:77E1ABF1 mov [eax+0B0h], ecx .text:77E1ABF7 mov ecx, [ebp+arg_4] .text:77E1ABFA push esi .text:77E1ABFB mov esi, [eax] .text:77E1ABFD mov [eax+0A4h], ecx .text:77E1AC03 push 20h .text:77E1AC05 pop ecx .text:77E1AC06 mov [eax+94h], ecx .text:77E1AC0C mov [eax+98h], ecx .text:77E1AC12 mov [eax+0C8h], ecx .text:77E1AC18 mov ecx, [ebp+arg_C] .text:77E1AC1B xor ebx, ebx .text:77E1AC1D add ecx, 0FFFFFFFCh .text:77E1AC20 cmp [ebp+arg_10], 1 .text:77E1AC24 lea edx, [eax+0C4h] .text:77E1AC2A mov [eax+8Ch], ebx .text:77E1AC30 mov dword ptr [eax+90h], 38h .text:77E1AC3A mov dword ptr [eax+0BCh], 18h .text:77E1AC44 mov dword ptr [eax], 10007h .text:77E1AC4A mov dword ptr [eax+0C0h], 3000h .text:77E1AC54 mov [edx], ecx .text:77E1AC56 jz short loc_77E1AC72 .text:77E1AC58 cmp [ebp+arg_10], 2 .text:77E1AC5C jz loc_77E1AB94 .text:77E1AC62 mov dword ptr [eax+0B8h], offset loc_77E1F35F//-------@*@*@*@*@*@*@*@*@*@*@*@*@*@------- .text:77E1AC6C .text:77E1AC6C loc_77E1AC6C: ; CODE XREF: sub_77E1ABE7-40j .text:77E1AC6C ; sub_77E1ABE7-17j ... .text:77E1AC6C pop esi .text:77E1AC6D pop ebx .text:77E1AC6E pop ebp .text:77E1AC6F retn 14h
====================================================================== BaseProcessStart: .text:77E1F35F loc_77E1F35F: ; DATA XREF: sub_77E1ABE7+7Bo .text:77E1F35F xor ebp, ebp .text:77E1F361 push eax .text:77E1F362 push 0 .text:77E1F364 nop .text:77E1F365 nop .text:77E1F366 nop .text:77E1F367 nop .text:77E1F368 nop .text:77E1F369 push 0Ch .text:77E1F36B push offset dword_77E522E0 .text:77E1F370 call sub_77E116F6(SEH) .text:77E1F375 and dword ptr [ebp-4], 0 .text:77E1F379 push 4 .text:77E1F37B lea eax, [ebp+8] .text:77E1F37E push eax .text:77E1F37F push 9 .text:77E1F381 push 0FFFFFFFEh .text:77E1F383 call ds:NtSetInformationThread .text:77E1F389 call dword ptr [ebp+8];//我们程序的入口,(push 0x77E1F38C; jmp dword ptr [ebp+8]) .text:77E1F38C push eax call exitthread;//我们程序正常退出时还要调用ExitThread!
相关推荐
基于 Qt 6 / C++17 的多算法加解密工具(学习研究用途) 涵盖编码、古典密码、对称/非对称加密、哈希摘要共 24 种算法,全部纯 C++ 自实现,不依赖 OpenSSL/GmSSL
基于 Qt 6 / C++17 的多算法加解密工具(学习研究用途)。涵盖编码、古典密码、对称/非对称加密、哈希摘要共 24 种算法,全部纯 C++ 自实现,不依赖 OpenSSL/GmSSL。含图形界面、批量文件加解密、密钥管理、性能测试与操作日志。提供标准测试向量自测。
Win32 PE病毒原理分析
by guojpeng/CVC.GB在绝大多数病毒爱好者眼中,真正的病毒技术在Win32 PE病毒中才会得到真正的体现(令病毒极度疯狂的DOS时代已经过去)。并且要掌握病毒技术的精髓,学会Win32汇编是非常必要的。本节所涉及到的源代码全部采用Win32汇编语言编写。Win32病毒同时也是所有病毒中数量极多,破坏性极大,技巧性最强的一类病毒。譬如FunLove、中国黑客等病毒都是属于这
考虑一次调频以及二次调频和各机组调频特性的双目标风光水火储动态调度研究(Matlab代码实现)
考虑一次调频以及二次调频和各机组调频特性的双目标风光水火储动态调度研究(Matlab代码实现)内容概要:本文研究了一种考虑一次调频、二次调频以及各机组调频特性的双目标优化模型,用于风光水火储多能互补系统的动态调度问题。该模型以系统运行成本最小化和新能源消纳最大化为双重优化目标,综合考虑了各类电源的出力特性、储能系统的充放电行为及电网频率响应要求。通过Matlab编程实现了完整的求解流程,采用多目标优化算法对复杂约束条件下的调度方案进行求解,并对不同场景下的调度结果进行仿真分析,验证了所提模型在提升系统经济性与稳定性方面的有效性。研究还探讨了储能系统在平抑新能源波动、参与频率调节中的关键作用,为高比例可再生能源接入下的电力系统调度提供了理论支持和技术路径。; 适合人群:具备一定电力系统基础知识和Matlab编程能力,从事新能源调度、电力系统优化等相关领域的研究生、科研人员及工程技术人员。; 使用场景及目标:①解决含多种能源形式的复杂电力系统在实际运行中的动态调度问题;②研究储能系统在调频和促进新能源消纳中的协同机制;③掌握多目标优化在电力系统调度中的建模与实现方法; 阅读建议:建议读者结合Matlab代码深入理解模型构建与求解过程,重点关注目标函数设计、约束条件处理及多目标折衷分析方法,同时可通过修改参数进行不同场景的仿真实验,以加深对系统动态行为的理解。
PE病毒技术剖析[转载]
任何语言只要表达能力足够强,都可用于编写PE病毒。但现存的绝大部分PE病毒都是直接用汇编编写的,一方面是因为汇编编译后的代码短小精悍,可以充分进行人工优化,以满足隐蔽性的要求;另外一方面之所以用汇编是因为其灵活和可控,病毒要同系统底层有时甚至是硬件打交道,由于编译器的特点不尽相同,用高级语言实现某些功能甚至会更加麻烦,比如用汇编很方便地就可以直接进行自身重定位、自身代码修改以及读写IO端口等操
图腾柱无桥PFC变换器+平均电流控制+PI电压双闭环前馈控制设计(Simulink仿真实现)
内容概要:本文系统研究了图腾柱无桥PFC变换器的高性能控制策略,采用平均电流控制与PI电压双闭环前馈控制相结合的方法,并基于Simulink平台构建了完整的仿真模型进行验证。文章深入剖析了控制系统的结构设计,重点阐述了电压外环与电流内环的协同工作机理,其中前馈控制的引入显著增强了系统对输入扰动的抑制能力和动态响应速度。通过仿真结果表明,该复合控制策略能够有效实现单位功率因数运行,大幅降低输入电流的总谐波畸变率(THD),同时确保直流母线电压具有优异的稳态精度和快速跟踪能力。本研究为高效率、高功率密度的PFC变换器设计提供了坚实的理论支撑和可靠的实践范例。; 适合人群:从事电力电子、电气自动化、新能源变换器研发的高校研究生、科研人员及企业工程师。; 使用场景及目标:①掌握图腾柱无桥PFC变换器的工作原理与建模方法;②深入理解平均电流控制、PI双闭环及前馈控制在电力电子系统中的综合应用;③学习使用Simulink进行电力电子变换器的系统级仿真与性能分析。; 阅读建议:建议读者结合文中提供的仿真模型,分模块(主电路、控制逻辑、调制环节)进行参数设置与仿真调试,重点关注电压环与电流环的动态响应、稳态精度以及THD指标的变化,以深化对控制策略的理解。
基于可靠性评估序贯蒙特卡洛模拟法的配电网可靠性评估研究(Matlab代码实现)
内容概要:本文系统研究了基于序贯蒙特卡洛模拟法的配电网可靠性评估方法,重点聚焦于其在含分布式电源的复杂配电网中的应用。文章深入阐述了该方法的理论基础与实现流程,通过建立配电网元件的故障与修复过程的时间序列模型,模拟系统在长期运行中的状态演变,进而精确统计系统及负荷点的关键可靠性指标,如系统平均停电频率(SAIFI)、系统平均停电持续时间(SAIDI)、用户平均停电时间(CAIDI)等。研究依托Matlab平台完成了完整的仿真程序开发,并通过典型算例验证了所提方法的有效性与工程实用性。该方法能够充分考虑系统的时序特性与元件间的相关性,尤其适用于高比例分布式电源接入后带来的随机性与波动性较强的新型配电网可靠性分析。; 适合人群:具备电力系统分析基础知识和一定Matlab编程能力的高校研究生、科研机构研究人员,以及从事配电网规划、运行维护与风险管理的工程技术人员。; 使用场景及目标:①掌握序贯蒙特卡洛模拟法在电力系统可靠性评估中的核心原理与具体实施步骤;②学习如何利用Matlab进行配电网时序仿真建模与可靠性指标的自动化计算;③为含分布式电源的现代配电网的规划设计、运行风险评估及韧性提升提供科学的量化分析工具与技术支撑。; 阅读建议:建议读者结合文中提供的Matlab代码实现,逐行调试并运行仿真程序,深入理解状态抽样、时间推进、故障遍历、指标累加等关键算法环节,并鼓励尝试将其应用于不同的网络拓扑结构或引入更多类型的分布式电源模型,以深化对方法适应性与扩展性的理解。
[zz]一个简单加密病毒的框架
.386p.model flat ,stdcalloptions casemap:nonejumps .data .code VirusStart:;重定位calldeltadelta:popebpmoveax,ebpsubebp,offset deltasubeax,RedundatSizesubeax,1000hNewEip equ $-4movd...
VS2015与QT界面开发中解决‘ui_xxx.h‘文件类名不一致导致的编译错误
本文详细解析了在VS2015与QT界面开发中,因.ui文件顶层部件objectName与生成类名不一致导致'ui_xxx.h'文件出现'不完整的类型'编译错误的根本原因。通过分步排查,指导开发者统一Qt设计师对象名、自动生成文件类名及代码引用名,并提供强制重新编译UI文件、清理中间文件等解决方案,有效解决此类常见编译问题。
小议病毒编写--为PE文件添加新节显示启动信息
病毒并不神秘,也不复杂。相当多的大侠已经在这方面作出了杰出的贡献,例如 29A 组织,我对他们的崇拜之情啊,真是……咳咳,先别扔鸡蛋。其实我想说的是:技术是一柄双刃剑,我们应该把它运用在对社会有益的事情上。所以请勿利用本文的代码进行违法违纪的活动,否则本人保留追究的权利。 本文的技术其实早已是老掉牙的东西了,so如果你已经懂得了编写病毒的方法,请跳过本文;如果你对病毒抱有好奇心,但是还没知道怎么编
PHP实战:5分钟搞定SM4国密加密算法集成(附完整代码)
本文提供了一份可直接用于生产环境的PHP SM4国密加密算法集成实战指南。文章详细解析了SM4算法核心,对比了ECB与CBC工作模式,并给出了包含完整代码、密钥管理、数据填充及性能优化的解决方案,帮助开发者快速、安全地在PHP项目中集成国密加密算法。
使用VS Code创建第一个Flutter工程
你可以使用任意文本编辑器结合命令行工具来开发Flutter应用。然而,我们推荐使用本文介绍的编辑器插件以获取更好的开发体验。这些插件提供了代码补全、代码高亮、widget辅助编辑等功能,以及为项目的运行和调试提供支持。推荐的开发工具有VS Code、Android Studio、IntelliJ。本文将重点介绍如何使用VS Code进行Flutter应用开发。
RAT结构演变史
转载保留版权Anskya@Gmail.comhttp://www.famdiy.com/ 想了解更深层的RAT架构的不妨进来看看.高手飘过...稍微详细的讲述一下Bifrost,Flux,PoisonIvy的结构 只说RAT结构演变...其他技术不讨论...自从Bo出世后.大量的RAT相继出现...国内熟悉的,冰河,黑洞,PcShare,灰鸽子等...国外熟悉的.Bifr...
【论文笔记】Reaching agreement in the presence of faults (EIG)
1 问题定义 2 交互一致性 3 单点故障 m=1 n=4 4 多点故障(n>=3m+1) 计算过程 m=2 n=7 5 n<3m+1不能达成协定 6 带认证的算法 7 总结 这篇论文在1980年发表,是1982年著名的拜占庭将军问题论文的前身。作者Leslie Lamport是2013图灵奖得主,两篇论文引用次数分别为5000+和2000+。该论文提出的算法现在被...
病毒基本知识(PE病毒篇)
病毒保护技术 花指令 反跟踪技术 反调试技术 自修改技术 注册表项保护技术 进程保护技术 病毒特征 隐蔽性 传播性 破坏性 解毒代码的编写 基本思路 计算病毒代码大小 得到目标PE感染钱的入口地址 修正目标PE的相关参数 转载于:https://www.cnblogs.com/anyboo/archive/2012/09/06/...
uboot引导vxworks6.9(T4240) 启动
vxworks内核配置下搜索RAM_LOW_ADRS, 值为0x01000000, 是vxworks下载启动的地址,uboot启动时会用到。vxworks6.9 t4240用的是32地址空间,uboot下用的是64位地址空间,去uboot下修改law物理地址空间为32位。vxworks下flash基地址为 0xff000000, 将vx下的地址修改为0xe0000000,和uboot下地址一致。uboot下flash基地址为0xe000000,vxworks内核配置为build-in 符号表。
直驱风机并网系统次同步振荡机理与振荡源定位方法研究
摘要: 本文针对直驱风机并网系统次同步振荡问题,研究了其产生机理与振荡源定位方法。通过建立系统小信号模型,采用特征值分析法揭示了次同步振荡的产生机制,并分析了电网强度、控制器参数对振荡特性的影响。基于暂态能量流理论,提出了通过计算各元件耗散能量来定位振荡源的方法。在MATLAB/Simulink平台搭建仿真系统验证了所提方法的有效性,为直驱风电场次同步振荡的分析与抑制提供了理论依据。 关键词:直驱风机;次同步振荡;小信号模型;暂态能量;振荡源定位
[引用]SEH原理
原文引用自:http://hi.baidu.com/slaff/blog/item/c6d96d4c0ba180fad72afcb7.htmlSEH研究 不少菜菜在编写ASM程序时往往会不太稳定。然而一旦熟悉了WINDOWS SEH原理后,再回过头编写相应的软件后发现不再会弹出讨厌的警告框了。此外,SEH还被广泛应用于反跟踪以及加解密中。工欲善其事,必先利其器,学习SEH的重要性不言而喻了
Vue+OpenLayers:解决中国境内OpenStreetMap地图加载问题
然而,在使用OpenLayers和Vue框架搭建地图应用时,很多中国开发者可能会遇到一个常见问题:OpenStreetMap(OSM)地图无法正常加载。为了解决这个问题,我们可以使用其他方式获取地图数据,比如使用国内的地图服务提供商。通过使用国内地图服务商提供的地图数据,我们可以解决OpenStreetMap地图加载问题。然后,我们创建一个OpenLayers地图对象,并指定地图图层的源为国内地图服务商提供的地图URL。属性,可以将地图的中心点和缩放级别调整到我们需要的位置。
关于PE病毒编写的学习
首先声明,因为害怕被封号,我肯定不会展示正确完整病毒代码,但是会介绍可行的学习方法。网上有很多关于介绍PE病毒编写的帖子,但基本上都是分析源码FunLove和《计算机病毒分析与对抗》中PE病毒的代码翻版。事实上这两个代码是用于原理展示,前者根本通不过编译,后者编译后并不能正确运行,虽然有部分帖子对其做了修改,受到正统汇编教材代码的影响,导致其修改方法是错误的。关于病毒编写充满了各种各样的迷信和谬论,因此在学习的过程中,我走了不少弯路,让我来一一说明:误区1:PE病毒一定要用汇编来写,其生成文件小,效率高,病
新手福利!大龙虾OpenClaw可视化管理工具来了!告别命令行,这个可视化工具让OpenClaw管理变得超简单
还在用命令行管理OpenClaw?🚀 这个跨平台可视化工具支持14+AI模型,一键切换,还能对接微信飞书钉钉等8大消息渠道,让AI助手管理变得简单直观 ✅ 暗色主题护眼舒适,Rust后端高性能低占用,新手也能轻松上手 🎯
WINCC7.3破解文件
WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!
ECharts GL 3D地图轮播效果避坑指南:从坐标转换到性能优化的那些事儿
本文详细解析了使用ECharts GL实现3D地图轮播效果的常见问题与解决方案,涵盖坐标转换、性能优化、交互平衡等关键环节。通过实战代码示例和优化建议,帮助开发者避开开发陷阱,提升3D地图可视化项目的效率和质量。特别针对echarts-gl的3D地图轮播效果提供了专业指导。
win10 跳过U8环境检测的IE WebControls.rar
win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。
汇编api函数地址的获取
api函数地址的获取 by Hume/冷雨飘心 这是一个老题目了,如果我们不用任何引入库,能否在程序中调用api函数?当然可以!方法有很多,你可能早就知道了,如果你已经了解了,就此打住,这是为还不了解这一技术而写.另外这也是病毒必用的技巧之一,如果你对病毒技术感兴趣,接着看下去. 这里假设...
VB摄像头监控
该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制
汉书HE8,好用的汇编代码编写工具
汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大
4112



被折叠的 条评论
为什么被折叠?



