【转】逆向小试 ―― QQ 自动登录器原理分析

ios逆向入门笔记-HOOK-QQ登录 ios逆向入门笔记-HOOK-QQ登录选择目标砸壳基本调试Reveal+确定目标action及target利用Logos 进行 hookPsssss 选择目标 在经过之前的配置,这次有点小改动= 我给小5升级到了10.3.3 本次测试机型:iphone5 32位 10.3.3 不完美越狱 测试目标:QQ 砸壳 手机端下载好QQ后 usb连接到mac上 使用 frida-ios-dump进行砸壳 手机端安装 Frida for 32-bit devices 源地址 https://build.frida.r 阅读详情

原文: http://bbs.pediy.com/showthread.php?t=31642

 

标 题: 【原创】逆向小试 ―― QQ 自动登录器原理分析
作 者: figo
时 间: 2006-09-07,19:38:02
链 接: http://bbs.pediy.com/showthread.php?t=31642

【文章标题】 : 逆向小试 ―― QQ 自动登录器原理分析
【调试环境】 : WINXP OllyDbg1.10  
【软件名称】 : QQ 自动登录器
【调试目的】 : 学习逆向
【文章作者】 : figo
【作者声明】 : 纯技术交流,没有其他目的,不针对任何软件。
         失误之处恳请批评指正,或有更好的方法或者技巧,欢迎互相交流。  

【分析过程】 ;

QQ 自动登录器是一款很不错的操纵多QQ 帐号的软件。
分析这款软件是因为整理以前的光盘是无意发现的,刚好有同学要我帮他写个QQ 木马,
于是顺便把它调试了一下,不多说了,进入正题吧:





我们先运行一下程序,添加一个自动登录的 QQ 帐号。设 QQ 号为 382174647,密码为 123123。

再将所有的 WinExec 函数置断点,出现了 QQ 自动登录器的主界面,启动帐号 382174647,这时程序中断在如下代码:

00404B20   .  6A 00         PUSH 0                                      ; /ShowState = SW_HIDE
00404B22   .  52            PUSH EDX                                    ; |CmdLine 
00404B23   .  FF15 38804000 CALL DWORD PTR DS:[<&KERNEL32.WinExec>]     ; /WinExec

这时 EDX 指向的字符串内容为: 
"C:/Program Files/Tencent/QQ/qq.exe /START QQUIN:382174647 PWDHASH:Qpf0SxOVUjUkWySXOZ16kw== /STAT:41"

上面的代码还是比较好理解的,唯一需要讲解的是 EDX 所指向的字符串是怎样生成的。

将代码页上翻,可以发现不远出有调用 CString.Format 函数的代码,入栈参数为字符串:
 
"%s /START QQUIN:%d PWDHASH:%s /STAT:%d"

不难分析出:
第一个 %s 为 QQ.EXE  的路径.
第一个 %d 为 QQ 号码.
第二个 %s 为 QQ 密码的密文
第二个 %d 为 QQ 登陆状态 , 41是代表正常登陆,40是隐藏登陆


下面分析一下密文的生成:

程序目录下有个 LoginData.dat,用于保存QQ 自动登录数据的 ,由于程序必会读取该文件的,所以
先把所有的 CFile.Read 置断点,然后运行程序,程序中断在如下代码:



00402731  |.  6A 10         PUSH 10
00402733  |.  50            PUSH EAX
00402734  |.  8D4C24 20     LEA ECX,DWORD PTR SS:[ESP+20]
00402738  |.  E8 1F3E0000   CALL <JMP.&MFC42.#5442_?Read@CFile@@UAEI>;  读文件头, LoginData.dat 的前 10H 个字节
0040273D  |>  817C24 08 000>CMP DWORD PTR SS:[ESP+8],10400           ;  校验 LoginData.dat 文件的有效性
00402745  |.  74 3C         JE SHORT QAL1_4_1.00402783         ;   偏移量 0 的值固定为 10400H



0040468A  |.  6A 10         PUSH 10
0040468C  |.  50            PUSH EAX
0040468D  |.  8D4C24 1C     LEA ECX,DWORD PTR SS:[ESP+1C]
00404691  |.  E8 C61E0000   CALL <JMP.&MFC42.#5442_?Read@CFile@@UAEIPAXI@Z>    ;  读文件头
00404696  |.  396C24 2C     CMP DWORD PTR SS:[ESP+2C],EBP                      ;  已记录的 QQ 数,位于偏移量 08H
0040469A  |.  75 34         JNZ SHORT QAL1_4_1.004046D0


00404759  |.  6A 40         |PUSH 40
0040475B  |.  50            |PUSH EAX
0040475C  |.  8D4C24 1C     |LEA ECX,DWORD PTR SS:[ESP+1C]
00404760  |.  E8 F71D0000   |CALL <JMP.&MFC42.#5442_?Read@CFile@@UAEIPAXI@Z>   ;  读取每个 QQ 的登录数据
00404765  |.  83F8 40       |CMP EAX,40                                        ;  QQ 登录数据块固定尺寸为 40H
00404768  |.  0F85 E8000000 |JNZ QAL1_4_1.00404856

这时候 D ESP + 34 来查看 QQ 登录数据块的内容,数据如下:

0012F6D8  E8 8A 40 00 01 00 00 00 D6 07 09 00 01 00 12 00  ?@....?....
0012F6E8  17 00 1A 00 09 00 00 00 29 00 00 00 42 97 F4 4B  ......)...B?K
0012F6F8  13 95 52 35 24 5B 24 97 39 9D 7A 93 B7 85 C7 16  ?5$[$????
0012F708  33 38 32 31 37 34 36 34 37 00 00 00 00 00 00 00  382174647.......

大家注意到了没? 地址 0012F6F4 处的内容 :

42 97 F4 4B 13 95 52 35 24 5B 24 97 39 9D 7A 93

这正是密码 “123123” 的标准 MD5 码。

我们把 0012F6F4 处的内容设硬件断点,再运行程序,程序中断在如下代码:

0040478B  |.  8B4C24 50     |MOV ECX,DWORD PTR SS:[ESP+50]           ;  ESP + 50 值为 0012F6F4
0040478F  |.  8D442A 1C     |LEA EAX,DWORD PTR DS:[EDX+EBP+1C]       ;  [EDX + EBP + 1C] 指向的值为 0038F2C8
00404793  |.  894C2A 1C     |MOV DWORD PTR DS:[EDX+EBP+1C],ECX
00404797  |.  8B5424 54     |MOV EDX,DWORD PTR SS:[ESP+54]
0040479B  |.  8950 04       |MOV DWORD PTR DS:[EAX+4],EDX
0040479E  |.  8B4C24 58     |MOV ECX,DWORD PTR SS:[ESP+58]
004047A2  |.  8948 08       |MOV DWORD PTR DS:[EAX+8],ECX
004047A5  |.  8B5424 5C     |MOV EDX,DWORD PTR SS:[ESP+5C]
004047A9  |.  83C9 FF       |OR ECX,FFFFFFFF
004047AC  |.  8950 0C       |MOV DWORD PTR DS:[EAX+C],EDX
004047AF  |.  8B43 60       |MOV EAX,DWORD PTR DS:[EBX+60]
004047B2  |.  8D5428 30     |LEA EDX,DWORD PTR DS:[EAX+EBP+30]
004047B6  |.  33C0          |XOR EAX,EAX
004047B8  |.  F2:AE         |REPNE SCAS BYTE PTR ES:[EDI]

上面代码的功能是将 0012F6F4 处的内容复制到 0038F2C8。
这时要把 0012F6F4 处的硬件断点删除,改设 0038F2C8 。
大家一定对此感疑惑吧?这是因为 0012F6F4 是属于栈地址,保存的是临时变量。
很多人对数据进行置硬件断点时,程序被莫名其妙的中断再 7CXXXXXX 处,那可能是把硬件断点置在临时变量上了。
一般程序都会把一些重要的临时变量复制到全局变量或固定的内存空间。所以在一般的调试过程中要尽量避免在栈地址
中置硬件断点,除非情况特殊(比如 脱壳或分析算法之类的)。

继续运行程序,程序主界面出现了,启动帐号,程序中断在以下代码:



00401AF0  |.  8B5C24 1C     MOV EBX,DWORD PTR SS:[ESP+1C]
00401AF4  |>  8A043B        /MOV AL,BYTE PTR DS:[EBX+EDI]            ;  EBX 指向密码的 MD5 码
00401AF7  |.  8D6F 01       |LEA EBP,DWORD PTR DS:[EDI+1]            ;  EBP 为临时计数变量
00401AFA  |.  884424 10     |MOV BYTE PTR SS:[ESP+10],AL
00401AFE  |.  8B4C24 10     |MOV ECX,DWORD PTR SS:[ESP+10]
00401B02  |.  81E1 FF000000 |AND ECX,0FF
00401B08  |.  8BC1          |MOV EAX,ECX
00401B0A  |.  C1E8 02       |SHR EAX,2
00401B0D  |.  8A80 F8864000 |MOV AL,BYTE PTR DS:[EAX+4086F8]
00401B13  |.  880432        |MOV BYTE PTR DS:[EDX+ESI],AL
00401B16  |.  8B4424 20     |MOV EAX,DWORD PTR SS:[ESP+20]
00401B1A  |.  3BE8          |CMP EBP,EAX
00401B1C  |.  0F8D A0000000 |JGE QAL1_4_1.00401BC2                   ;  判断是否将 MD5 码的最后一个字节加密完
00401B22  |.  8A441F 01     |MOV AL,BYTE PTR DS:[EDI+EBX+1]
00401B26  |.  83E1 03       |AND ECX,3
00401B29  |.  884424 11     |MOV BYTE PTR SS:[ESP+11],AL
00401B2D  |.  8B4424 11     |MOV EAX,DWORD PTR SS:[ESP+11]
00401B31  |.  25 FF000000   |AND EAX,0FF
00401B36  |.  8BD8          |MOV EBX,EAX
00401B38  |.  C1EB 04       |SHR EBX,4
00401B3B  |.  C1E1 04       |SHL ECX,4
00401B3E  |.  0BD9          |OR EBX,ECX
00401B40  |.  45            |INC EBP
00401B41  |.  8A8B F8864000 |MOV CL,BYTE PTR DS:[EBX+4086F8]
00401B47  |.  884C32 01     |MOV BYTE PTR DS:[EDX+ESI+1],CL
00401B4B  |.  8B4C24 20     |MOV ECX,DWORD PTR SS:[ESP+20]
00401B4F  |.  3BE9          |CMP EBP,ECX
00401B51  |.  7D 3C         |JGE SHORT QAL1_4_1.00401B8F             ;  不会产生的跳转
00401B53  |.  8B5C24 1C     |MOV EBX,DWORD PTR SS:[ESP+1C]
00401B57  |.  83E0 0F       |AND EAX,0F
00401B5A  |.  C1E0 02       |SHL EAX,2
00401B5D  |.  8A4C1F 02     |MOV CL,BYTE PTR DS:[EDI+EBX+2]
00401B61  |.  884C24 12     |MOV BYTE PTR SS:[ESP+12],CL
00401B65  |.  8B4C24 12     |MOV ECX,DWORD PTR SS:[ESP+12]
00401B69  |.  81E1 FF000000 |AND ECX,0FF
00401B6F  |.  8BE9          |MOV EBP,ECX
00401B71  |.  C1ED 06       |SHR EBP,6
00401B74  |.  0BE8          |OR EBP,EAX
00401B76  |.  83E1 3F       |AND ECX,3F
00401B79  |.  8A85 F8864000 |MOV AL,BYTE PTR SS:[EBP+4086F8]
00401B7F  |.  884432 02     |MOV BYTE PTR DS:[EDX+ESI+2],AL
00401B83  |.  8A89 F8864000 |MOV CL,BYTE PTR DS:[ECX+4086F8]
00401B89  |.  884C32 03     |MOV BYTE PTR DS:[EDX+ESI+3],CL
00401B8D  |.  EB 17         |JMP SHORT QAL1_4_1.00401BA6
00401B8F  |>  8B5C24 1C     |MOV EBX,DWORD PTR SS:[ESP+1C]
00401B93  |.  83E0 0F       |AND EAX,0F
00401B96  |.  8A0485 F88640>|MOV AL,BYTE PTR DS:[EAX*4+4086F8]
00401B9D  |.  884432 02     |MOV BYTE PTR DS:[EDX+ESI+2],AL
00401BA1  |.  C64432 03 3D  |MOV BYTE PTR DS:[EDX+ESI+3],3D
00401BA6  |>  8B4424 20     |MOV EAX,DWORD PTR SS:[ESP+20]
00401BAA  |.  83C7 03       |ADD EDI,3                               ;  被加密的 MD5 码计数变量
00401BAD  |.  83C2 04       |ADD EDX,4                               ;  加密后的 MD5 码计数变量
00401BB0  |.  3BF8          |CMP EDI,EAX                             ;  判断是否加密完成
00401BB2  |.^ 0F8C 3CFFFFFF /JL QAL1_4_1.00401AF4
00401BB8  |.  8BC6          MOV EAX,ESI
00401BBA  |.  5F            POP EDI
00401BBB  |.  5E            POP ESI
00401BBC  |.  5D            POP EBP
00401BBD  |.  5B            POP EBX
00401BBE  |.  83C4 08       ADD ESP,8
00401BC1  |.  C3            RETN



00401BC2  |>  8A4424 10     MOV AL,BYTE PTR SS:[ESP+10]
00401BC6  |.  83E0 03       AND EAX,3
00401BC9  |.  C1E0 04       SHL EAX,4
00401BCC  |.  8A88 F8864000 MOV CL,BYTE PTR DS:[EAX+4086F8]
00401BD2  |.  B0 3D         MOV AL,3D
00401BD4  |.  884C32 01     MOV BYTE PTR DS:[EDX+ESI+1],CL
00401BD8  |.  884432 02     MOV BYTE PTR DS:[EDX+ESI+2],AL
00401BDC  |.  884432 03     MOV BYTE PTR DS:[EDX+ESI+3],AL           ;  最后两个字符固定为 '='
00401BE0  |>  8BC6          MOV EAX,ESI



上面的的代码就是将 MD5 码加密成密文,代码看起来有点乱
为了便于理解,我用 C 代码写了一个登录QQ 的演示程序:

#include "windows.h"
#include "stdio.h"
#include "md5.h"

char szTable[100] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";

void login(char * szNum,char * szPwd, char * szPath,int iPwdlen);
void QQHash(unsigned char* szMDin,unsigned char* szQQout);

void main()
{
  
  int icnt;
  char szQQnum[20];
  char szQQpwd[20];
  char szQQpath[255] = "" ;
  char szPathfmt[10] = "%s %s";
  char szTmp[255] = "";
  unsigned long lpPath;

  printf("请输入 QQ.exe 所在的路径/n (例如 c://program files//tencent//qq//) : /n");
  
  do
  {
    scanf("%s",szTmp);
    wsprintf(szQQpath,szPathfmt,szQQpath,szTmp);

  
  }while(getchar() != 0x0a);
  
  lpPath = (unsigned  long )(szQQpath) + 1;


  
  printf("请输入 QQ 号码 :/n");
  scanf("%s",szQQnum);
    
  printf("请输入 QQ 密码 : /n");

  scanf("%s",szQQpwd);
  icnt = strlen(szQQpwd);
  
    login(szQQnum,szQQpwd,(char*)(lpPath),icnt);


}

void login(char * szNum,char * szPwd, char * szPath, int iPwdlen)
{  
  
  char szCmd[255] = "";
  char szMDHash[30] = "";
  char szQQHash[30] = "";
  MD5 MD;  
  
  MD.Hash ((unsigned char*)szMDHash,(unsigned char*)szPwd,(unsigned long) iPwdlen);
  QQHash((unsigned char*)szMDHash,(unsigned char*)szQQHash);

  
  wsprintf((LPSTR)szCmd,"%sQQ.exe /START QQUIN:%s PWDHASH:%s /STAT:41", 
  szPath,szNum,szQQHash);
  WinExec((LPCSTR)szCmd,SW_SHOWNORMAL);



}





void QQHash(unsigned char* szMDin,unsigned char* szQQout)
{

  int i = 0 , j=0;
  unsigned char c1,c2,c3,t1;
  c1=0;
  c2=0;
  c3=0;
  t1=0;


  while(true)
  {
    c1 = szMDin[j];
    t1 = c1;
    c1 = c1 >> 2;
    szQQout[i] =szTable[c1];
    j++;
    i++;
    
    if(j >= 16)
    {
      c1 = szMDin[j];
      c1 = c1 & 0x03;
      c1 = c1 << 4;
      szQQout[i] = szTable[c1];
      i++;
      szQQout[i] = 0x3d;
      i++;
      szQQout[i] = 0x3d;
      break;


    }
    
    c2 = szMDin[j];
    c1 = t1 & 0x03;
    c1 = c1 << 4;
    t1 = c2;
    c2 = c2 >> 4;
    c2 = c2 | c1;
    szQQout[i] =szTable[c2];
    
    j++;
    i++;

    c1 = t1 & 0x0f;
    c1 = c1 << 2;
    c3 = szMDin[j];
    t1 = c3 >> 6;
    t1 = c1 | t1;
    c3 = c3 & 0x3f;
    szQQout[i] =szTable[t1];
    i++;
    szQQout[i] =szTable[c3];
    
    j++;
    i++;


  

  
  }


} 

由于代码写的比较仓促,注释也懒的加,所以上面代码也不好理解,建议读代码之前,自己跟踪一下关键代码。

当然,上面的代码只是 QQ自动登录器的一个简单演示,功能并不完善。
有兴趣编写 QQ 自动登录器的,可以参考参考上面代码(详细代码 见附件)。

QQ 自动登录器很方便,但最好不要在别人电脑上使用,因为它保存的密码只用 MD5 加密一次,容易被爆破。
在我的 Athlon XP 2500+ 上大约花了两个小时就把一个 8位的纯数字密码爆破完成。
而QQ 的本地保存密码就相对安全多了,多次 MD5 循环加密,很难爆破的。



特别声明:
  
关于代码中的 MD5.H 非本人编写的,而是摘自 《看雪论坛精华7》中的 “QQ本地密码文件暴力破解” 一文。
感谢原作者 ―― lotusroots。
没办法,人懒啊,自己去写个 MD5 代码很费时的。
转载时请保持文章的完整性。

 

上传的附件

文件类型: rarqqlogin.rar (0, 322 次下载) 下载此附件需要消耗2Kx,下载中会自动扣除。

腾讯QQ批量自动登录器,易语言 腾讯QQ批量自动登录器,是用易语言开发的,会报毒,很正常,确认就好! 腾讯QQ批量自动登陆器是一款可以帮助用户批量自动登陆QQ的软件,用户可以在本款软件中设置多个QQ账号和QQ的密码信息,然后双击其中任一条即可自动登陆相应账号。 腾讯QQ批量自动登陆器的使用极其方便,自动选择QQ程序路径,然后选择点击“添加账号”按钮,输入账号和密码,有多少要登陆的账号就输入多少个,最后点击“登陆全部”即可完成所有操作 立即下载

相关推荐

QQ自动登录器 源代码 QQ自动登录器 源代码

QQ登陆器 QQ自动登录器 源代码 QQ自动登录器 源代码

逆向小试 ―― QQ 自动登录器原理分析

逆向小试 ―― QQ 自动登录器原理分析标 题: 【原创】逆向小试 ―― QQ 自动登录器原理分析作 者: figo时 间: 2006-09-07,19:38链 接: http://bbs.pediy.com/showthread.php?t=31642【文章标题】 : 逆向小试 ―― QQ 自动登录器原理分析【调试环境】 : WINXP OllyDbg1.10  【软件名称】 : QQ 自动登录

xu的blog 5251

qq自动登入器帮你自动启动qq和管理

qq自动登入器qq自动登入器帮你自动启动qq和管理

Windows逆向分析入门(六)——实战篇(用户信息)

前言 这一篇,开始实战。用到找偏移的第一个方法:内存搜索。目的是获得用户信息。 一、找偏移 1、分析 用户信息,属于获得数据。 全局数据搜索,局部数据拦截。 对于经常用到,又不怎么变动的数据,用全局变量会比较方便。 用户信息,基本不会变动,也很多地方会用到,猜测是用全局变量存储。 2、方法 对于全局变量,用CE进行内存搜索,看能不能找到。 3、验证 1、看下自己的登陆信息 2、用CE搜索用户名 搜索结果有绿色的,说明偏移是固定。 3、看下内存附近信息 也有省份这些信息,说明个人信息是存在一起的 4

weixin_42194433的博客 873

批量QQ自动登录器

非常不错的一款自动登录检查QQ账号----密码的一款软件

登录器QQ 自动登录器

用。net自己写的已个qq自动登录器 用。net自己写的已个qq自动登录器

逆向 qq 消息撤回

开发工具 工具名称 工具类型 说明 AndroidStuduo 编辑工具 开发工具 jadx java工具 将apk解成java项目 xposed 插件工具 插件 qq 版本8.8.80 开始 先通过jadx把apk反编译出来源码,通过build出来,在android studio打开,方便分析。 要撤回自己的消息,肯定需要监听消息发送。 消息操作的函数基本都在这里ChatActivityFacade,可以通过 hook 此类的全部的函数,再通过手机发送一条消息,看会调

l331258747的专栏 2326

QQ自动登录器,等多个qq

多个qq自动登录,可以学会编自动登录程序。。。

逆向分析QQ消息自动回复机器人设计

    首先将取一个android手机QQ应用的一个版本取apk到电脑,使用jadx-gui或者任意的反编译软件进行反编译,拿到反编译后的代码这是准备阶段。    首先需要取到QQ内使用的Context上下文信息,这个步奏通常是反编译一个应用进行二次开发的第一步奏,我定位到了如下包中的一个类:“xxx.xxx.xxx.xxx.InjectUtils”能够分析定位到一个名字为injectExtraD...

帅帅小强哥的博客 1万+

QQ自动登入器

QQ自动登入器系统结构:读取,BASE64编码,十六进制到十进制,是否重复,搜索目录,======窗口程序集1||||------__启动窗口_创建完毕||||------读取||||------BASE64编码||||------十六进制到十进制||||----

Windows防火墙服务异常修复指南:0x80070422与0x6D9报错实战处理

本文针对Windows防火墙服务异常导致的0x80070422与0x6D9报错,提供了从基础到进阶的实战修复指南。核心是通过services.msc服务管理器检查并修复Windows Firewall服务,包括设置启动类型、检查依赖服务等关键步骤。同时介绍了当基础方法失效时,如何使用命令行工具、系统文件检查器(SFC/DISM)以及排查组策略与第三方软件冲突等深度解决方案,帮助用户彻底解决防火墙服务无法启动或访问的问题。

m9n0o的博客 542

QQ空间登录协议逆向分析|账号密码登录

QQ空间协议登录分析|账号密码 qrsig、login_sig、ptqrtoken、p等参数加密算法的获取以及分析,JS/爬虫逆向玩转qq空间协议保姆级教学—账号密码登录篇,从0实现qq空间账号密码登录协议,参数等参数以及算法逆向还原只要依次按照本文数据包的顺序保存更新好参数和Cookie,成功逆向加密算法之后,通过顺序进行GET请求即可实现QQ空间登录文章结尾附qq空间协议登录实现代码。

xk 5898

UDS 诊断 - CommunicationControl(通信控制)(0x28)服务 诊断

字节参数名称字节值#1CommunicationControl(通信控制)请求SID0x28#2#3communicationType(通信类型)#4nodeIdentificationNumer(节点标识符)(高位字节)controlType 为 0x04 或 0x05 时,使用该参数#5nodeIdentificationNumer(节点标识符)(低位字节)controlType 为 0x04 或 0x05 时,使用该参数。

耳朵东金子千的博客 1817

C#实现QQ自动登录器实现原理

在优快云上看到的,王小科老师发表的,感觉很牛,所以转载了一下,一起分享。 实现代码 private void QQLogin(string QQ,string Pwd) { System.Security.Cryptography.MD5 md5=new System.Security.Cryptography.MD5CryptoServiceProvid...

ymxy1988的博客 1059

STM32实现webserver显示数据及配置参数

其实提到的将fsdata.c重命名为fsdata_custom.c,可以不重命令,将/LWIP/Target/lwipopts.h中HTTPD_USE_CUSTOM_FSDATA 定义为0,这样HTTPD_FSDATA_FILE将使用fsdata.c,避免每次生成fsdata.c需要重命令的麻烦。2、登录成功后,板卡根据板卡配置类型,返回对应的数据页面,该页面可实现数据校准、清零,以及进行到板卡参数设置页面。目前还未实现post功能以及http身份验证功能。3、板卡参数设置页面。

2691

中国1990-2021连续30年土地利用CLCD数据分享

CLCD(China Land Cover Dataset)数据集是由武汉大学黄昕老师基于Google Earth Engine上的335,709景Landsat数据制作的中国年度土地覆盖数据集。为了提高CLCD的时空一致性,还提出了一种包含时空滤波和逻辑推理的后处理方法。该数据集最大的优势在于每年30米的土地利用分类结果,且连续覆盖了30年时间。相比其他产品如GLC_FCS30、Global30、AGLC2000_2015、FROM-GLC10、ESA10、ESRI10等,CLCD在时间分辨率上更高。

qq_48539301的博客 1万+

QQ自动登录器

QQ自动登录器 软件名称:QQ自动登录器" 版 本:1.5" 汉 化:菜虫" 免责声明: 软件归Steven Studio.在有关法律许可范围内,本软件“按现状”提供,不作任何明确或隐含保证,包括但不限于隐含适销性保证、特殊用途适用性保证或非侵犯保证。本软件连同其所有缺陷一道提供,您对质量、性能、准确性及操作等方面之满意程度自行承担风险。 更新地址:http://71908055.qzone.qq

ddsdsdsdl333l的专栏 1421

21天教你学会PCIe专栏(14)--安全性考虑

1.1 定义安全性(Security):安全性是指保护系统免受未经授权的访问、攻击和破坏,确保数据的机密性、完整性和可用性。1.2 重要性数据保护:保护敏感数据,防止数据泄露和篡改。系统防护:防止恶意攻击,确保系统的稳定性和可靠性。合规性:满足行业标准和法律法规的要求,避免法律风险。用户信任:提高用户对系统的信任度,增强市场竞争力。通过今天的学习,你应该对PCIe安全性的重要性和常见威胁有了深入的了解,掌握了实施安全措施的方法和工具,以及安全开发的最佳实践。

xiaoheshang_123的博客 850

Python自动登录QQ

Python自动登录QQ 这是一份来自网络的代码,经过了我的修改和验证。 首先我的运行环境是Python3.7,需要安装PyUserInput库。 直接上代码吧: #!/usr/bin/python import os import time import win32gui import win32api import win32con import pymouse,pykeyboard fro...

sessos的博客 1万+

一文读懂 SAP Web Dispatcher 配置参考:让 Gateway、OData 与后端服务各走各路

SAP Web Dispatcher在Fiori项目中常被低估,实际上它作为企业系统的HTTP(s)入口,承担着流量分发和安全防护双重职责。该组件通过URL路径规则(如/sap/opu/odata/转发至Gateway系统)实现多系统路由,隐藏后端复杂性,提供统一访问入口。配置要点包括HTTPS参数设置、客户端证书转发、端口定义以及系统冲突处理策略。合理的配置能确保前端统一访问、网络边界清晰可控,同时降低跨团队协作成本。生产环境需根据实际网络架构调整官方示例配置。

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

《PLECS仿真与实战:从建模到高端应用》-专栏文件目录

《PLECS仿真与实战:从建模到高端应用》是一本系统介绍PLECS电力电子仿真软件的实用指南。全书共10章,首先介绍软件安装与基础操作,包括RC电路仿真等入门内容;随后深入讲解各类电力电子电路的建模与仿真,涵盖整流、交交变换、直流变换、逆变等电路;最后探讨PWM控制建模和直流调速系统等高端应用。书中配有丰富的示例程序和波形分析方法,附录还包含电力电子器件、代码生成等实用资料。该书适合电力电子领域工程师和学生系统学习电路仿真技术。

540

QQ自动登录工具

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Runtime.InteropServices; using System.Drawing; using System.Diagnostics; using System.Threading; usi...

weixin_34873452的博客 925

SoC 内的 CPU、GPU、DSP、NPU 协同执行结构图解析:多异构协同的最新实战体系

随着移动端 AI 能力迅速演进,SoC(System on Chip)内部的多种异构计算单元(CPU、GPU、DSP、NPU)之间的协同执行能力成为衡量芯片智能算力的关键指标。本文基于截至 2025 年 5 月最新主流国产芯片(如海思昇腾、地平线旭日、联发科天玑、高通骁龙 8 Gen 系、寒武纪思元等)在实际落地应用中的公开结构与技术资料,深入解析 CPU-GPU-DSP-NPU 协同执行的体系结构、执行路径与调度逻辑。文章结合 Android NNAPI、Vulkan Compute、自定义调度器等工程实

努力分享一些人工智能、计算机视觉、影像等相关的知识干货! 8707

QQ自动登陆脚本生成器 v1.01.bat

QQ自动登陆脚本生成器 v1.01.bat,使用ProcessID属性激活QQ登录窗口,解决了1.0版激活不了登录窗口标题不为“QQ用户登录”的某些修改版QQ的问题。@echo offtitle QQ自动登陆脚本生成器 v1.01echo.echo.echo                QQ自动登陆脚本生成器 v1.01echo                         Code 

t0nsha's Blog 5752

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

上一篇: 【转】C语言Socket入门非阻塞socket(connect timieout问题)
下一篇: 【转】GTK+主循环(main loop)的工作原理
code09
博客等级 码龄18年 31粉丝 56原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值