ASPROTECT 2.x 脱壳系列(三)

[版本构造]ASProtect初探---软件防护系列学习笔记 开始学习版本构造了,那么构造一个版本的话,就不得不考虑软件保护机制了。所以呢,就来学习软件注册保护了,首先 ,就选择了ASProtect,软件加壳。虽然破壳工具泛滥,但是学习加壳还是有必要的,对于认识软件加密的发展来说,这个过程应该是不过时的。 今天学习了一下基本知识,嘛是ASProtect.看笔记吧: 1.什么是 ASprtect? ASProtec 阅读详情

ASPROTECT 2.x 脱壳系列(三)

【目    标】:BeeIcons 4.02.1
【工    具】:Olydbg1.1(diy版)、LORDPE、ImportREC1.6F
【任    务】:简单的脱壳
【操作平台】:Windows XP sp2
【作    者】:LOVEBOOM[DFCG][FCG][US]
【相关链接】:自己搜索下
【简要说明】:继上一篇,这次的目标前两篇的又有所不同了.难度稍微大了点。这次来个一气呵成:-)
【详细过程】:

OD设置:忽略除int3之外的其它异常,载入目标:
00401000 >  68 01706100     PUSH    00617001                         ; 壳EP
00401005    E8 01000000     CALL    0040100B

F9运行后中断下来:
0103700B    90              NOP                                     ; 异常中断
0103700C    EB 01           JMP     SHORT 0103700F
0103700E    6966 81 FE47467>IMUL    ESP, DWORD PTR DS:[ESI-7F], 7446>

异常中断在code段下F2断点,然后shift+f9,中断:
0102267D    F3:A5           REP     MOVS DWORD PTR ES:[EDI], DWORD P>; 中断这里 
0102267F    89C1            MOV     ECX, EAX
01022681    83E1 03         AND     ECX, 3
01022684    83C6 03         ADD     ESI, 3
01022687    83C7 03         ADD     EDI, 3
0102268A    F3:A4           REP     MOVS BYTE PTR ES:[EDI], BYTE PTR>

断下后,查找相关命令:
mov [ebp],eax
push 0a

找到一处,在找到的位置下硬件执行断点:
01045F7B    8945 00         MOV     DWORD PTR SS:[EBP], EAX          ; 找到这里,直接在这里下硬件执行断点
01045F7E    6A 0A           PUSH    0A
01045F80    E8 8FCEFEFF     CALL    01032E14
01045F85    8BC8            MOV     ECX, EAX

和上两篇一样,找到相关地址,然后写上相关代码:
___________________________获取CALL 01270000全部地址的修复代码_______________________________

01045F7B   /EB 43           JMP     SHORT 01045FC0                   ; 找到这里,直接在这里下硬件执行断点
01045F7D   |90              NOP
01045F7E   |6A 0A           PUSH    0A
01045F80   |E8 8FCEFEFF     CALL    01032E14
01045F85   |8BC8            MOV     ECX, EAX
01045F87   |038B E4000000   ADD     ECX, DWORD PTR DS:[EBX+E4]
01045F8D   |8BD6            MOV     EDX, ESI
01045F8F   |8BC3            MOV     EAX, EBX
01045F91   |E8 9EE5FFFF     CALL    01044534
01045F96   |FF0C24          DEC     DWORD PTR SS:[ESP]
01045F99   |03B3 E4000000   ADD     ESI, DWORD PTR DS:[EBX+E4]
01045F9F   |833C24 00       CMP     DWORD PTR SS:[ESP], 0
01045FA3  ^|0F87 55FEFFFF   JA      01045DFE
01045FA9   |53              PUSH    EBX                              ; 这里F2断点
01045FAA   |E8 5D000000     CALL    0104600C
01045FAF   |0183 EC000000   ADD     DWORD PTR DS:[EBX+EC], EAX
01045FB5   |B0 01           MOV     AL, 1
01045FB7   |83C4 24         ADD     ESP, 24
01045FBA   |5D              POP     EBP                              ; BeeIcons.0040129D
01045FBB   |5F              POP     EDI
01045FBC   |5E              POP     ESI
01045FBD   |5B              POP     EBX
01045FBE   |C3              RETN
01045FBF   |90              NOP
01045FC0   /53              PUSH    EBX
01045FC1    51              PUSH    ECX
01045FC2    B9 00916400     MOV     ECX, 649100
01045FC7    8339 00         CMP     DWORD PTR DS:[ECX], 0
01045FCA    75 06           JNZ     SHORT 01045FD2
01045FCC    C701 10916400   MOV     DWORD PTR DS:[ECX], 649110       ; 保存相关地址数据的起始地址
01045FD2    8B19            MOV     EBX, DWORD PTR DS:[ECX]
01045FD4    4D              DEC     EBP                              ; BeeIcons.0040129D
01045FD5    892B            MOV     DWORD PTR DS:[EBX], EBP          ; BeeIcons.0040129D
01045FD7    83C3 04         ADD     EBX, 4
01045FDA    8919            MOV     DWORD PTR DS:[ECX], EBX
01045FDC    45              INC     EBP                              ; BeeIcons.0040129D
01045FDD    59              POP     ECX
01045FDE    5B              POP     EBX
01045FDF    8945 00         MOV     DWORD PTR SS:[EBP], EAX
01045FE2  ^ EB 9A           JMP     SHORT 01045F7E

_______________________________END___________________________________________

保存好全部数据后,F9再次发生INT3异常中断:
0103700B    90              NOP                                      ; INT 3异常中断
0103700C    EB 01           JMP     SHORT 0103700F
0103700E    6966 81 FE47467>IMUL    ESP, DWORD PTR DS:[ESI-7F], 7446>
01037015    05 31C040EB     ADD     EAX, EB40C031
0103701A    0231            ADD     DH, BYTE PTR DS:[ECX]
0103701C    C031 DB         SAL     BYTE PTR DS:[ECX], 0DB           ; Shift constant out of range 1..31
0103701F    64:8F03         POP     DWORD PTR FS:[EBX]               ; 0012FF20
01037022    83C4 04         ADD     ESP, 4
01037025    EB 01           JMP     SHORT 01037028
01037027    E8 5F5E5BC3     CALL    C45ECE8B
0103702C    51              PUSH    ECX
0103702D    52              PUSH    EDX
0103702E    53              PUSH    EBX
0103702F    56              PUSH    ESI
01037030    57              PUSH    EDI
01037031    E8 01000000     CALL    01037037
01037036  - E9 5831C031     JMP     32C3A193
0103703B    D2B9 03000000   SAR     BYTE PTR DS:[ECX+3], CL
01037041    BE 8F700301     MOV     ESI, 103708F                     ; ASCII " //./SICE"
01037046    EB 01           JMP     SHORT 01037049
01037048    69AC50 516A0068>IMUL    EBP, DWORD PTR DS:[EAX+EDX*2+680>
01037053    6A 03           PUSH    3
01037055    6A 00           PUSH    0
01037057    6A 01           PUSH    1
01037059    EB 01           JMP     SHORT 0103705C
0103705B    E8 68000000     CALL    010370C8
01037060    8056 E8 A5      ADC     BYTE PTR DS:[ESI-18], 0A5
01037064    E6 FE           OUT     0FE, AL                          ; I/O command
01037066    FF59 5A         CALL    FAR FWORD PTR DS:[ECX+5A]        ; Far call
01037069    40              INC     EAX
0103706A    75 0C           JNZ     SHORT 01037078
0103706C    01D6            ADD     ESI, EDX
0103706E    EB 02           JMP     SHORT 01037072
01037070    CD 20           INT     20
01037072  ^ E2 D2           LOOPD   SHORT 01037046
01037074    31C0            XOR     EAX, EAX
01037076    EB 0D           JMP     SHORT 01037085
01037078    48              DEC     EAX
01037079    50              PUSH    EAX
0103707A    E8 85E6FEFF     CALL    01025704                         ; JMP to kernel32.CloseHandle
0103707F    EB 01           JMP     SHORT 01037082
01037081    0F31            RDTSC
01037083    C040 5F 5E      ROL     BYTE PTR DS:[EAX+5F], 5E         ; Shift constant out of range 1..31
01037087    EB 01           JMP     SHORT 0103708A
01037089    C7              ???                                      ; Unknown command
0103708A    5B              POP     EBX                              ; 0012FF20
0103708B    5A              POP     EDX                              ; 0012FF20
0103708C    59              POP     ECX                              ; 直接在这里下F2断点
0103708D    C3              RETN
0103708E    9A 095C5C2E 5C5>CALL    FAR 535C:2E5C5C09                ; Far call
01037095    49              DEC     ECX
01037096    43              INC     EBX
01037097    45              INC     EBP

在0103708C处下断,shift+f9一次中断,断下后在code段下断,断下后可以看到OEP了:

00569594    55              PUSH    EBP                              ; OEP
00569595    8BEC            MOV     EBP, ESP
00569597    83C4 F0         ADD     ESP, -10


到了OEP处后,像前面的文章一样,找到保存相关地方:

01022544    85C0            TEST    EAX, EAX
01022546 >  74 0A           JE      SHORT 01022552
01022548    FF15 18900401   CALL    DWORD PTR DS:[1049018]  ;这里改成我们自己的代码
0102254E    09C0            OR      EAX, EAX
01022550    74 01           JE      SHORT 01022553
......

012800A0    9D              POPFD
012800A1    5C              POP     ESP
012800A2    FF6424 FC       JMP     DWORD PTR SS:[ESP-4]  ;这里设置硬件断点用于写上我们自己的代码
012800A6    54              PUSH    ESP

因为这个程序里的IAT是部分加密处理过的,所以相对来说处理会麻烦一点,这个要靠自己去想怎么去解决,我的处理方法比较麻烦。可能有更好的方法,我现在还没有想到:-(.再写上一段代码和一段脚本,然后运行脚本就可以了:
________________________-相关代码_________________________________

005695D0   .  60            PUSHAD
005695D1   .  B9 10916400   MOV     ECX, 00649110                    ;  调用call address的位置
005695D6   >  8339 00       CMP     DWORD PTR DS:[ECX], 0
005695D9   .  74 17         JE      SHORT 005695F2
005695DB   .  8B19          MOV     EBX, DWORD PTR DS:[ECX]          ;  ntdll.7C92E64E
005695DD   .- FFE3          JMP     EBX                              ;  跳去执行原call
005695DF   .  66:C703 FF15  MOV     WORD PTR DS:[EBX], 15FF          ;  改写成call [addr]
005695E4   .  8B15 08916400 MOV     EDX, DWORD PTR DS:[649108]       ;  <&comdlg32.ChooseColorA>
005695EA   .  8953 02       MOV     DWORD PTR DS:[EBX+2], EDX        ;  ntdll.KiFastSystemCallRet
005695ED   .  83C1 04       ADD     ECX, 4
005695F0   .^ EB E4         JMP     SHORT 005695D6
005695F2   >  33C0          XOR     EAX, EAX                         ;  修复为jmp [addr]的部分
005695F4   .  B9 CC951600   MOV     ECX, 1695CC
005695F9   .  BF 00104000   MOV     EDI, 00401000
005695FE   >  B0 E8         MOV     AL, 0E8
00569600   >  F2:AE         REPNE   SCAS BYTE PTR ES:[EDI]
00569602   .  83F9 00       CMP     ECX, 0
00569605   .  74 2C         JE      SHORT 00569633
00569607   .  8B1F          MOV     EBX, DWORD PTR DS:[EDI]
00569609   .  8D5C3B 04     LEA     EBX, DWORD PTR DS:[EBX+EDI+4]
0056960D   .  81FB 00104000 CMP     EBX, 00401000
00569613   .^ 72 EB         JB      SHORT 00569600
00569615   .  81FB C7955600 CMP     EBX, 005695C7                    ;  判断是否符合修复条件
0056961B   .^ 77 E3         JA      SHORT 00569600
0056961D   .  66:8B03       MOV     AX, WORD PTR DS:[EBX]
00569620   .  66:3D FF15    CMP     AX, 15FF
00569624   .  75 0B         JNZ     SHORT 00569631
00569626   .  66:C703 FF25  MOV     WORD PTR DS:[EBX], 25FF
0056962B   .  83C7 04       ADD     EDI, 4
0056962E   .  83E9 04       SUB     ECX, 4
00569631   >^ EB CB         JMP     SHORT 005695FE
00569633   >  61            POPAD
00569634   .  90            NOP
00569635   .  90            NOP
00569636   .  90            NOP
00569637   .  90            NOP
00569638   .  90            NOP
00569639   .  90            NOP
0056963A   .  90            NOP
0056963B   .  90            NOP
0056963C   .  90            NOP
0056963D   .  90            NOP
0056963E   .  90            NOP
0056963F   .  90            NOP
00569640   .  48965600      DD      dumped_.00569648
00569644      00            DB      00
00569645      00            DB      00
00569646      00            DB      00
00569647      00            DB      00
00569648      90            NOP
00569649   .  60            PUSHAD
0056964A   .  BD 00916400   MOV     EBP, 00649100
0056964F   .  90            NOP
00569650   .  8B4D 04       MOV     ECX, DWORD PTR SS:[EBP+4]
00569653   .  0BC9          OR      ECX, ECX
00569655   .  75 18         JNZ     SHORT 0056966F                   ;  这里修复和上两篇有所不同,这篇里的iat是加密处理过的
00569657   .  B9 C4E05700   MOV     ECX, <&kernel32.GetFileType>     ;  对于修复加密的输入表,我采用脚本+代码的方式
0056965C   .  8911          MOV     DWORD PTR DS:[ECX], EDX          ;  来修复输入表
0056965E   .  894D 08       MOV     DWORD PTR SS:[EBP+8], ECX
00569661   .  83C1 04       ADD     ECX, 4
00569664   .  894D 04       MOV     DWORD PTR SS:[EBP+4], ECX
00569667   .  90            NOP
00569668   .  90            NOP
00569669   .  90            NOP
0056966A   .  90            NOP
0056966B   .  90            NOP
0056966C   .  90            NOP
0056966D   .  EB 45         JMP     SHORT 005696B4
0056966F   >  8BF1          MOV     ESI, ECX
00569671   .  81E9 C4E05700 SUB     ECX, <&kernel32.GetFileType>
00569677   .  C1E9 02       SHR     ECX, 2
0056967A   .  8BC2          MOV     EAX, EDX                         ;  ntdll.KiFastSystemCallRet
0056967C   .  BF C4E05700   MOV     EDI, <&kernel32.GetFileType>
00569681   .  F2:AF         REPNE   SCAS DWORD PTR ES:[EDI]
00569683   .  0BC9          OR      ECX, ECX
00569685   .  74 08         JE      SHORT 0056968F
00569687   .  83EF 04       SUB     EDI, 4
0056968A   .  897D 08       MOV     DWORD PTR SS:[EBP+8], EDI        ;  ntdll.7C930738
0056968D   .  EB 25         JMP     SHORT 005696B4
0056968F   >  90            NOP
00569690      90            NOP                                      ;  写好脚本和这里的代码后,先在这里下f2断
00569691   .  90            NOP                                      ;  用于脚本判断是否为相同的DLL
00569692   .  90            NOP
00569693   .  90            NOP
00569694   .  90            NOP
00569695   .  0BD2          OR      EDX, EDX                         ;  通过脚本判断是否为相同的DLL,如果相同edx=0不同edx=1
00569697   .  75 0D         JNZ     SHORT 005696A6
00569699   .  8906          MOV     DWORD PTR DS:[ESI], EAX
0056969B   .  8975 08       MOV     DWORD PTR SS:[EBP+8], ESI
0056969E   .  83C6 04       ADD     ESI, 4
005696A1   .  8975 04       MOV     DWORD PTR SS:[EBP+4], ESI
005696A4   .  EB 0E         JMP     SHORT 005696B4
005696A6   >  83C6 04       ADD     ESI, 4
005696A9   .  8906          MOV     DWORD PTR DS:[ESI], EAX
005696AB   .  8975 08       MOV     DWORD PTR SS:[EBP+8], ESI
005696AE   .  83C6 04       ADD     ESI, 4
005696B1   .  8975 04       MOV     DWORD PTR SS:[EBP+4], ESI
005696B4   >  61            POPAD
005696B5   .  FF15 18900401 CALL    DWORD PTR DS:[1049018]           ;  执行原壳的代码
005696BB   .  C3            RETN

_____________________END_____________________________________


____________________相关脚本_________________________________

//fix1
var dll1
var dllnow
var addr

start:
   run

l1:
 cmp eip,569690   //跳去处理是否为同一DLL
 je l2
 cmp eip,0012800c5  //判断是否为jmp [esp-4]处
 je l6
 
  ret


l2:
 gn edx
 mov dllnow,$RESULT_1
 cmp dll1,0
 jne l3
 mov dll1,dllnow

l3:
 cmp dll1,dllnow
 jne l4
 mov edx,0
 jmp l5

l4:
 mov dll1,dllnow
 mov edx,1


l5: 
 sto
 jmp start


l6:
 mov addr,esp
 sub addr,4
 mov [addr],5695df   //修改eip
 jmp start
_____________________END_____________________________________

写好了上面的东西,运行脚本,用importrec修复输入表时,有一个是GetProcAddress:
00407784  - FF25 28B45700   JMP     DWORD PTR DS:[57B428]
把这个API修复好,其它无效的直接cut掉,分两次就可以把iat获取并修复好。

修复好程序并不能够运行的。通过运行发现下面的地方,就是检测是否被壳的相关地址:

0055B03B   .  E8 7498FDFF   CALL    005348B4                         ;  CreateFileA
0055B040      3D A66D0D00   CMP     EAX, 0D6DA6                      ;  判断文件大小?
0055B045      0F8E 8B000000 JLE     0055B0D6                         ;  如果小于或等于则跳,正常这里是跳的

因为考虑到处理反脱壳检测可能会比较麻烦,所以我直接改CreateFileA为原来没有脱壳的文件名,这样就可以通过检测,操作好后,还有一个段被抽在程序里,直接用lordpe添加段进去。这样子程序就可以运行了,不过可惜的,按菜单功能的时间还是会异常退出:-(,唉不脱了,再脱真的是脱皮而不是脱壳了。


Greetz:
 Fly.Jingulong,yock,tDasm.David.hexer,hmimys,ahao.UFO(brother).alan(sister).all of my

friends and you!

          By loveboom[DFCG][FCG][US]
                      http://blog.youkuaiyun.com/bmd2chen
               

                                        Email:loveboom#163.com


全面掌握SSO单点登录解决方案 随着信息技术的快速发展,企业和组织的网络应用变得日益复杂多样。用户在访问不同系统时重复登录不仅降低了工作效率,也给用户体验带来了极大的不便。单点登录(Single Sign-On,简称SSO)应运而生,旨在通过一个账户和一次认证过程,让用户可以访问多个应用系统。这种模式提升了用户的便利性,同时对企业而言,减少了维护多个独立认证系统的成本,增强了系统的整体安全性。 阅读详情

相关推荐

巨强悍的ASProtect脱壳机:ASProtect unpacker by PE_Kill

巨强悍的ASProtect脱壳机:ASProtect unpacker by PE_Kill巨强悍的ASProtect脱壳机:ASProtect unpacker by PE_Kill

ASProtect 1.23 手动脱壳

遇到的一些问题记录下: 1. 如果选择的是OD加载的进程,那么ImportREC就会死掉,所以我们只能重新打开一个程序,对新打开的程序修复。(在修复RC4版本的时候有这个问题,当用ASProtect 1.22插件来修复的时候就会卡死)。 2. ASProtect 1.23 RC1 的程序入口特征如下: 00401000 > 68 01704A00 push 004A7001

u011500307的专栏 2468

ASProtect加壳工具 加密软件

 ASProtect 是功能非常完善的加壳、加密保护工具。能够在对软件加壳的同时进行各种保护。如:反调试跟踪、自校验及用密钥加密保护等;还有多种限制使用措施,如:使用天数限制、次数限制及对应的注册提醒信息等。另外,该软件还具有密钥生成功能。    加密特性   压缩并加密应用程序   反内存转储,防止 ProcDump 类的工具从内存转储程序   文件完整性检查   反调试器和反编译   内存保护,反内存补丁   用于外壳通讯的内部 API 函数   创建使用公开加密算法的注册密钥   泄漏密钥的黑名单数据库   创建评估(试用)版本,可以限制试用时间或试用次数   NAG 提示窗口   生成基于硬件指纹锁定的注册密钥   全面支持 Windows 95/NT4.0/98/ME/2000/XP/2003/Vista 操作系统

ASPROTECT 2.x 脱壳系列(一)

ASPROTECT 2.x 脱壳系列(一)【目    标】:DVD Fab Gold 2.9.4.2【工    具】:Olydbg1.1(diy版)、LORDPE、ImportREC1.6F【任    务】:简单的脱壳【操作平台】:Windows XP sp2【作    者】: LOVEBOOM[DFCG][FCG][US]【相关链接】: 自己搜索下【简要说明】: 时间在不断的减少,人越靠近死亡的

loveboom's Reverse Enginering 1万+

ASProtect 2.3 SKE的脱壳脚本

脚本支持Asprotect 1.32, 1.33, ,1.35, 1.4, 2.0, 2.1, 2.11, 2.2beta, 2.2, 2.3,EXE/DLL 包括高级输入表保护选项。己相当于一款Asprotect脱壳机了。

第51章-ASProtect v2.3.04.26脱壳-Part11

第51章-ASProtect v2.3.04.26脱壳-Part11

单点登录(SSO)解决方案

缺点:对用户的控制能力会非常弱。太短了用户需要频繁的登录,太长了用户的违规操作不能让他及时下线),想要下线得让用户中心去通知每一个子系统哪个用户需要下线。优势:认证中心拥有对用户的绝对控制力,可以随时让用户下线。若我直接去删掉用户的sessionid,那么用户在下一次请求资源的时候,这个系统去认证中心验证时就无法确认用户的登录状态,继而用户就会被引导到认证中心去重新登录。核心思想说白了就是让用户每隔一小段时间来用户中心一次,加强用户中心对用户的控制力度,将用户的控制权转回到认证中心。

2401_87546826的博客 1676

评分卡建模学习(一)————数据预处理part.3

目录六、数据处理的思路及代码(一)对缺失值的处理:在我这个数据预处理的part.1板块(二)对异常值的处理:在我这个数据预处理的part.2板块(三)数据归一化、标准化:在我这个数据预处理的part.2板块(四)非结构化数据转变+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++———————————————————————————————————————————++++++++++++++++++++++++++

Morven_dai的博客 898

sso单点登录解决方案

单点登录 概念 单点登录的概念,通俗来讲就是,用户只需登录一次,就可以在相关联的各个系统间畅行无阻。产生的技术背景主要是针对有多个子系统的大公司,可想而知,绝不可能要求用户每进入一个子系统就重新登录一次。 解决方案 针对不同的应用场景,有不同的解决方案。大致有如下两种: 子系统不涉及跨域 有个公司A,它有个顶级域名www.a.com,同时它有多个子系统部署在a.a.com,b.a.com等等,这种...

CTO技术的博客 924

Halcon —— 图像像素类型与转换

图像类型 就目前工业领域主流的图像处理工具halcon来讲,有以下几张图像类型:‘byte’, ‘complex’, ‘cyclic’, ‘direction’, ‘int1’, ‘int2’, ‘int4’, ‘int8’, ‘real’, ‘uint2’,具体含义如下图所示。相互间的转换可通过convert_image_type算子完成,但盲目转换会导致图像像素值异常。 ‘byte’ 每像素1字节,无符号 值范围: (0到255) ‘int1’ 每像素1字节,有符号 值范围: (-128到127) ‘

baidu_35536188的博客 1万+

【AI落地】AI生成测试用例,claude or gpt?(提效至少 50%)

gpt生成测试用例?当然好使啦,用好了提效50%+,用不好就让他变好!

青禾tester 1972

JavaWeb中单点登录(SSO)的几种解决方案及原理

基于中央认证授权(Central Authentication Authorization, CAS) 的 SSO:CAS 是一种开源的单点登录协议,它使用令牌来实现 SSO,可以与各种应用程序进行集成。2、基于代理(Proxy)的 SSO:一个代理服务器接收来自用户的请求,并将其重定向到适当的应用程序,并将用户身份验证信息传递给该应用程序。1、基于令牌(Token)的 SSO:用户在登录成功后,得到一个令牌,然后该令牌被用于访问其他相互信任的应用程序

林立鹏的博客 2011

非结构化数据在大数据湖中的应用实践

想象一下,你正在整理一个杂乱的书房。有些书整整齐齐地放在书架上,每本书都有明确的标题、作者和出版日期——这些就是结构化数据,它们像数据库中的表格,有固定的格式和字段。但书房里还有更多东西:散落的照片、手写的笔记、录音带、视频光盘、甚至还有画作。这些物品没有固定的格式,每件都独一无二——这就是非结构化数据。在技术术语中,非结构化数据是指没有预定义数据模型或组织形式的信息。文本文档(Word、PDF、TXT)电子邮件和社交媒体内容图像和照片(JPG、PNG)音频文件(MP3、WAV)

软件工程实践的博客 362

SSO-单点登录完全解决方案

单点登录,跨域访问,单点登陆,用户跨域,跨域登录,跨域登陆解决方案服务器端可控情形JS跨域访问解决方法http://homepage.yesky.com/458/2703458.shtmlSingle Sign-On Enterprise Security for Web Applicationshttp://msdn2.microsoft.com/en-us/library/ms972971.a

ning313180989的专栏 753

Rockchip 自定义vendorstorages数据再u-boot通过cmdline给kernel传递数据

本文介绍通过vendorstorages,允许保存和读取自定义数据。通过在U-Boot中读取这些数据并将其添加到cmdline中,将这些数据传递给Linux内核,实现了一个灵活的方式来配置和定制系统的需求。

我其实什么都不会 1820

AI绘画与医疗可视化:用AI生成医学插图的实践

医疗可视化是医学教育、临床沟通和学术研究的核心工具。传统医学插图依赖手工绘制或专业3D建模,存在制作周期长、成本高、更新迭代慢等问题。随着深度学习技术的发展,AI绘画工具(如Stable Diffusion、DALL-E)展现出强大的图像生成能力,但医疗领域对插图的解剖准确性、标注规范性和语义完整性有极高要求,通用AI模型难以直接应用。本文聚焦AI技术与医疗领域的交叉创新,系统阐述如何通过数据预处理、模型定制化训练和后处理校验,构建符合医疗标准的插图生成系统。

大模型应用工坊 1788

SSO单点登录解决方案

[b]1 什么是单点登陆[/b] SSO英文全称Single Sign On,单点登录。SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。它包括可以将这次主要的登录映射到其他应用中用于同一个用户的登录的机制。它是目前比较流行的企业业务整合的解决方案之一。 较大的企业内部,一般都有很多的业务支持系统为其提供相应的管理和IT服务。例如财务系统为财务人员提供财务的管理...

wentao365的专栏 238

库存优化技术提升电商效率

第一部分:库存优化技术基础 第1章:库存优化的基本概念 库存优化是现代电商运营中至关重要的一个环节。简单来说,库存优化指的是通过一系列的策略和技术手段,使得库存管理更加高效、准确,从而降低运营成本,提高销售额。 1.1 库存优化的定义与重要性

AI天才研究院 1248

基于.Net的单点登录(SSO)解决方案

基于.Net的单点登录(SSO)解决方案       前些天一位朋友要我帮忙做一单点登录,其实这个概念早已耳熟能详,但实际应用很少,难得最近轻闲,于是决定通过本文来详细描述一个SSO解决方案,希望对大家有所帮助。SSO的解决方案很多,但搜索结果令人大失所望,大部分是相互

peking2009的专栏 645

LLM 大模型学习必知必会系列(十一):大模型自动评估理论和实战以及大模型评估框架详解

LLM 大模型学习必知必会系列(十一):大模型自动评估理论和实战以及大模型评估框架详解

丨汀、的博客 3217

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

SSO-单点登录完全解决方案--参考

  SSO-单点登录完全解决方案2007年8月6日 11:49:03 发布:yaosansi <!-- google_ad_client = "pub-5505410570855815"; //250x250, 创建于 08-1-14 google_ad_slot = "8242161180"; google_ad_width = 250; go

遨游的专栏 2294

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Jasny SSO:PHP单点登录终极解决方案,跨域无缝认证从未如此简单

Jasny SSO 是一款简单直观的单点登录(SSO)解决方案,专为 PHP 开发环境设计,能够帮助开发者轻松实现跨域网站间的无缝用户认证体验。通过共享会话机制,用户只需一次登录即可访问多个关联网站,极大提升了用户体验和系统安全性。 ## 🚀 什么是单点登录?为什么选择 Jasny SSO? 单点登录(SSO)是一种身份验证机制,允许用户使用一组凭据(如用户名和密码)访问多个相关但独立的应用

gitblog_00656的博客 370

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

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

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

单点登录(SSO)解决方案之 CAS 入门案例

单点登录(SSO)解决方案之 CAS 入门案例

weixin_46020146的博客 99
上一篇: Diablo 2oo2’s CrackMe 2 算法分析
下一篇: ASPROTECT 2.x 脱壳系列(二)
bmd2chen
博客等级 码龄23年 34粉丝 45原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值