首页
社区
课程
招聘
古老的 ACDSee v2.2 算法求助
发表于: 2006-5-8 13:27 3882

古老的 ACDSee v2.2 算法求助

2006-5-8 13:27
3882
提供两个测试码:

测试码一:

  RegName: sender
  RegCode: 27168

测试码二:

  RegName: kOUGER!
  RegCode: 501587

分析出算法要学的东西怎么就那么多!

[注意]看雪招聘,专注安全领域的专业人才平台!

上传的附件:
收藏
免费
支持
分享
最新回复 (1)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
小弟的学习笔记:

Microsoft Macro Assembler
pushfd
  压 EFL 入栈
pushad
  压 EAX、ECX、EDX、EBX、ESP、EBP、ESI、EDI 依次入栈
寄存器
  ESP
   堆栈指针寄存器
  EIP
   指令指针寄存器
标志位
  AF
   辅助进位标志
  CF
   进位标志
  DF
   方向标志
  IF
   中断标志
  OF
   溢出标志
  PF
   校验标志
  SF
   符号标志
  TF
   陷阱标志
  ZF
   零标志
处理器控制指令
  esc
  hlt
   停机指令
  lock
  nop
   空操作指令
  wait
双字转换成四字指令
  cdq
   把EAX的符号为(即31位)复制到EDX的每一位上。这样,就生成了一个带符号的四字,保存在EDX:EAX中。
    0
     EAX -> 4AAFCC46 -> 01001010101011111100110001000110
     EDX -> 0000264E -> 00000000000000000010011001001110 -> 00000000000000000000000000000000
    1
     EAX -> 00000211 -> 00000000000000000000001000010001
     EDX -> 00000000 -> 00000000000000000000000000000000 -> 00000000000000000000000000000000
标志处理指令
  clc
   清除进位标志
   Clear Carry
    Usage: clc
    Modifies flags: CF
    Clears the Carry Flag
  cld
  cli
  cmc
  lahf
  sahf
  stc
  std
  sti
保护模式操作指令
  arpl
  clts
  lar
  lgdt
  lidt
  lldt
  lmsw
  lsl
  ltr
  sgdt
  sidt
  sldt
  smsw
  str
  verr
  verw
Shift Arithmetic Right
算术右移位指令
  sar
   右移位但保持最高位
   sar eax,1
    0
     eax -> 00000000000000000000000000101001 -> 00000000000000000000000000010100
    1
     eax -> 10000000000000000000000000101001 -> 10000000000000000000000000010100
算术指令
  算术除法指令
  idiv ecx
   1
    eax -> 00000457 -> 0000006F
    ecx -> 0000000A
    edx -> 00000000 -> 00000001
    ---------------------------
    eax -> 被除数 -> 1111
    ecx -> 除数 -> 10
    商数 -> eax -> 111
    余数 -> edx -> 1
   2
    eax -> 0087AA17 -> 00000045
    ecx -> 0001F31D
    edx -> 00000000 -> 00012346
    ebx -> 00DB15E0
   3
    eax -> 4AAFCC46 -> 0000264E
    ecx -> 0001F31D
    edx -> 00000000 -> 00016B70
    ebx -> 00DB15E0
  算术乘法指令
   算术带符号数乘法指令
   imul
    1
     乘数作为一个操作数,被乘数在指令中不明确指定,系统假定其长度同于乘数,若为8位乘数则被乘数在AL中,若为16位乘数,则被乘数在AX中,若为32位乘数则被乘数在EAX中
     imul ecx
      1
       eax -> 834E0B5F -> 5457CFFA
       ecx -> 4AAFCC46
       edx -> 00000000 -> DB9EEE23
      2
       eax -> 834E0B5F -> 54457F4F
       ecx -> 00000211
       edx -> 004AD7B0 -> FFFFFEFE
    2
     imul edx,edx,41A7
      1
       eax -> 00000000 -> 00000000
       ecx -> 0001F31D -> 0001F31D
       edx -> 00000211 -> 0087AA17
      2
       eax -> 00000045
       ecx -> 0001F31D
       edx -> 00012346 -> 4AB2C8AA
      3
       eax -> 0000264E
       ecx -> 0001F31D
       edx -> 00016B70 -> 5D348610
   算术无符号数乘法指令
   mul
比较指令
  CMP AL,22
  CMP EAX,1000
   不同则 C 置 1 值
   相同则 Z 置 1 值
  cmp eax,edx
   eax -> 0000001D
   edx -> 00000001
   P -> 1 -> 0
  OR EAX,EAX
   如果 EAX 不是 0 则 Z 置 0 值
  TEST EAX,EAX
   相同但 EAX 非 0 则 Z 置 0 值
   相同但 EAX 是 0 则 Z 置 1 值
  TEST AL,AL
   相同但 AL 非 0 则 Z 置 0 值
   相同但 AL 是 0 则 Z 置 1 值
  TEST byte ptr ss:[esp+30],1
  TEST 81,1
   不同则 Z 置 0 值
跳转指令
  JA SHORT ASCIIArt.004161F1
   cmp esi,eax
    esi -> 00000010
    eax -> 000001E0
   ja short ACDSee32.0047E232
    esi大于eax则跳
   Z 是 0 但 C 是 1 不跳
   Z 是 0 但 C 是 0 则跳
  jb short ACDSee32.00484CAB
   1
    C -> 0 -> Jump is NOT taken
    C -> 1 -> Jump is taken
   2
    cmp eax,ecx
    jb short ECLTrial.0041061F
     ;如果 EAX 大于 ECX 则跳。注意相等则不跳
  JBE short ACDSee32.00484A6C
   cmp dword ptr ds:[edi+4],ebx
    ebx -> 00000001
    ds:[004A73F4] -> 000000F1
   jbe short ACDSee32.00487A6C
    dword ptr ds:[edi+4]小于或等于ebx则跳
  je
   0
    cmp eax,-1
     eax -> 00DB0000
    je ACDSee32.00484AB4
     eax 等于 -1 则跳
   1
    test edi,edi
     edi -> 00DB15E0
    je short ACDSee32.0047E232
     edi 为 0 则跳
   Z 是 1 则跳
   Z 是 0 不跳
  jg short ASCIIArt.00401A8E
   S 是 1 不跳
   S 是 0 则跳
  jge short ASCIIArt.00401A97
   Z 是 0 但 S 是 0 则跳
   Z 是 0 但 S 是 1 不跳
  jl short ACDSee32.0047E4DB
   cmp eax,ebx
    eax -> 000000D8
    ebx -> 00000001
   jl short ACDSee32.00484A6C
    eax小于ebx则跳
   S 是 0 不跳
   S 是 1 则跳
  jle short CHMUnPac.0041F864
   Z 是 1 但 S 是 0 则跳
   Z 是 0 但 S 是 1 则跳
   Z 是 0 但 S 是 0 不跳
  jmp ECX
   无条件跳
  jnb short editplus.004B2860
   cmp edi,ebp
    edi -> 004A73F0
    ebp -> 004A93E8
   jnb short ACDSee32.00484A79
    ebp小于edi则跳
   C 是 0 则跳
   C 是 1 不跳
  jne Calc17.00404254
   test eax,eax
    eax -> 004AD7B0
   jnz short ACDSee32.004801D5
    eax不为0则跳
   Z 是 0 则跳
   Z 是 1 不跳
  jnz short Calc17.00403772
   test eax,eax
    eax -> 00DB15E0
   jnz short ACDSee32.00484AC8
    eax不为0则跳
   Z 是 1 不跳
   Z 是 0 则跳
浮点数指令
  fabs
   取绝对值(栈顶内容符号位置0)
  fadd
   实数加法
  faddp
   实数加法并出栈
    faddp st(1),st
     ST0 zero 0.0
     ST1 zero 0.0 -> empty  +UNORM 2679 02E90000 4020027F
  fchs
   符号反号(栈顶内容符号位取反)
  fcom
   实数比较
  fcomp
   实数比较并出栈
  fcompp
   实数比较且两个操作数出栈
  fdiv
   实数除法
  fdivp
   实数除法且出栈
  fdivr
   实数反除
  fdivrp
   实数反除且出栈
  fiadd
   整数加法
  ficom
   整数比较
  ficomp
   整数比较并出栈
  fidiv
   整数除法
  fidivr
   整数反除
  fild
  fistp
   fistp qword ptr ss:[ebp-4]
  fisub
   整数减法
  fisubr
   整数反减
  fld
   取实数(源操作入栈)
   fld src
    1
     fld qword ptr ds:[004013A8]
      004013A8
       00 00 00 00  00 00 00 00
      ST0 zero 0.0
    2
     fld qword ptr ds:[004013A8]
      004013A8
       48 E1 7A 14  AE 3F 60 40
      ST0 empty -??? FFFF 00FF00FF 00FF00FF -> valid 129.99000000000000000
  fldcw
   fldcw word ptr ss:[ebp-4]
  fmul
   实数乘法
  fmulp
   实数乘法且出栈
  fnop
   空操作
  frndint
   栈顶内容舍入为整数
  fsqrt
   求平方根
  fstcw
   fstcw word ptr ss:[ebp-2]
  fstp
   存实数并出栈
    fstp qword ptr ds:[004013A8]
     ST0 zero 0.0 -> empty +UNORM 2679 02E90000 4020027E
  fsub
   实数减法
  fsubp
   实数减法并出栈
    fsubp st(1),st
     ST0 valid 67.900000000000010240 -> valid 62.099899999999989760
     ST1 valid 129.99990000000000000 -> empty -??? FFFF 00000000 00000000
  fsubr
   实数反减
  fsubrp
   实数反减并出栈
    fsubrp st(1),st
     ST0 valid 67.900000000000010240 -> valid -62.099899999999989760
     ST1 valid 129.99990000000000000 -> empty -??? FFFF 00000000 FFFFFFFF
  ftst
   栈顶寄存器的内容与0比较
  fxam
   检验栈顶寄存器中数据的特殊情况,检验结果由状态字条件码C3、C2、C1、C0表示
  fxch
   fxch st(1)
  fxtract
   分解指数和尾数
gdi32.CreateFontIndirectA
push ebx
  ;pLogfont
call <jmp.&gdi32.CreateFontIndirectA>
user32.SendDlgItemMessageA
push 1
  ;lParam
push eax
  ;wParam
push 30
  ;Message = WM_SETFONT
push dword ptr ss:[ebp+8]
  ;ControlID
call <jmp.&user32.SendDlgItemMessageA>

有符号
7FFFFFFFh = +002147483647d
00000001h = +000000000001d
00000000h =  000000000000d
FFFFFFFFh = -000000000001d
80000000h = -002147483648d
无符号
00000000h =  000000000000d
FFFFFFFFh = +004294967295d

小弟对内容错误产生的任何后果概不负责!
2006-5-8 13:37
0
游客
登录 | 注册 方可回帖
返回

账号登录
验证码登录

忘记密码?
没有账号?立即免费注册