SHL test

来源:互联网 发布:大数据信息化调研提纲 编辑:程序博客网 时间:2024/04/20 15:39

前言

再看一段产生密钥的反汇编片段,看到SHL居然用负数移位。
做了一个测试
当SHL移位值为一个负数, e.g. shl [mm], cl
cl = 0xAE,
结果为SHL(x % 32), 这样解释也挺合理的
SHL 移动的是CL, 移位值应该是%16

试验记录

// hw.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include <windows.h>#include <stdlib.h>#include <stdio.h>#include <math.h>#include <WinCrypt.h>#pragma comment(lib, "crypt32.lib")void fnTestSHL();void main(void){    fnTestSHL();}void fnTestSHL() {/*004131E4 >52 DD 4E 2F                                      R軳/.  ecx = FFFFFFAE  cl = 0xAE (-82)    00406094  |.  D325 E4314100 shl dword ptr ds:[<g_dwEncInitVector>],cl      移位后      004131E4 >00 80 54 B7                                      .€T?*/      DWORD dwSrc = 0x2f4edd52;    DWORD dwShlBit = 0xFFFFFFAE;    __asm {        pusha        mov ecx, dwShlBit        ; 0xae = 174, 174 % 32 = 14        mov cl, 14        shl dwSrc, cl        popa    }    if (0xb7548000 == dwSrc) {        printf("same to OD\r\n"); // 到这了    }}
0 0
原创粉丝点击