欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

注册机 (2千字)

注册机 (2千字)

有些程序的定时处理中会调用hmemcpy,CTerm也是。
#include <stdio.h>
#include <string.h>
void main(void)
{
    long Table[11] = { 0, 5, 7, 3, 2, 0, 1, 4, 8, 3, 8 };
    char Name[64];
    long sum;
    int  k;
    int len;
    printf("Input your name:");
    gets(Name);
    len = strlen(Name);
    if (len > 10)
    {
        len = 10;
    }
    sum = 0;
    for (k = 1; k < 11; k++)
    {
        if (len >= k)
        {
            sum += Table[k-1] * ((long)Name[k-1] & 0xFF);
            sum -= Table[k];
        }
        else
        {
            sum += (Table[k-1] << 5) + Table[k];
        }
    }
    printf("Your registration code is: WPC25-%06d\n", sum);
}
对应的汇编代码:
015F:004690F1  XOR      EBX,EBX
015F:004690F3  MOV      EAX,[EBP-04]
015F:004690F6  CALL      00403C88
015F:004690FB  MOV      ECX,EAX
015F:004690FD  CMP      ECX,0A
015F:00469100  JLE      00469107
015F:00469102  MOV      ECX,0000000A
015F:00469107  MOV      EDX,00000001
015F:0046910C  MOV      EAX,00484CF4
015F:00469111  CMP      ECX,EDX
015F:00469113  JGE      00469121
015F:00469115  MOV      ESI,[EAX]
015F:00469117  SHL      ESI,05
015F:0046911A  ADD      EBX,ESI
015F:0046911C  ADD      EBX,[EAX+04]
015F:0046911F  JMP      00469131
015F:00469121  MOV      ESI,[EBP-04]
015F:00469124  MOVZX    ESI,BYTE PTR [EDX+ESI-01]
015F:00469129  IMUL      ESI,[EAX]
015F:0046912C  ADD      EBX,ESI
015F:0046912E  SUB      EBX,[EAX+04]
015F:00469131  INC      EDX
015F:00469132  ADD      EAX,04
015F:00469135  CMP      EDX,0B
015F:00469138  JNZ      00469111
015F:0046913A  LEA      EAX,[EBP-0C]
015F:0046913D  PUSH      EAX
015F:0046913E  MOV      [EBP-14],EBX
015F:00469141  MOV      BYTE PTR [EBP-10],00
015F:00469145  LEA      EDX,[EBP-14]
015F:00469148  XOR      ECX,ECX
015F:0046914A  MOV      EAX,004691C4
015F:0046914F  CALL      00407E24
015F:00469154  JMP      00469172
015F:00469156  MOV      EDX,[EBP-0C]
015F:00469159  MOV      EAX,004691D8
015F:0046915E  CALL      00403F14
015F:00469163  MOV      EBX,EAX
015F:00469165  LEA      EAX,[EBP-0C]
015F:00469168  CALL      00403E58
015F:0046916D  MOV      BYTE PTR [EBX+EAX-01],30
015F:00469172  MOV      EDX,[EBP-0C]
015F:00469175  MOV      EAX,004691D8
015F:0046917A  CALL      00403F14
015F:0046917F  TEST      EAX,EAX
015F:00469181  JG        00469156

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功