电脑桌面
添加内谋知识网--内谋文库,文书,范文下载到电脑桌面
安装后可以在桌面快捷访问

密码法主题教育心得体会怎么写 密码法培训心得(3篇)

来源:互联网作者:editor2024-02-041

我们得到了一些心得体会以后,应该马上记录下来,写一篇心得体会,这样能够给人努力向前的动力。我们如何才能写得一篇优质的心得体会呢?下面我给大家整理了一些心得体会范文,希望能够帮助到大家。

2022密码法主题教育心得体会怎么写一

废话少说,直入主题,

主程序将输入的激活码发送到驱动中验证,强行修改返回值是不起作用的。

程序用了三种花指令来隐藏对deviceiocontrol调用,其间还有四次异常处理,两次为单步来反调试器,,即od的插件就可以躲过检查。外壳程序调用deviceiocontrol时,controlcode为7c320,inbuff中为输入的注册码,长度为0x1e即30个字符(必须是大写),不过我们在输入的是如:123456789f-123456789l-123456789y程序会将中间的’-‘号删除,中验证。od是不能跟踪到系统内核的,要用softice(开始我走了弯路,找不到irp分派,中,后来学用ida时,反汇编才看到了irp分派情况)。

真正进入主题,驱动中怎么验证计算激活码?

分两步

一、 将激活码用‘查表法’求模得到一个串。

二、 将上面的串用一加密算法得出一加密串,然后与一长为0x10的串比较,相等则激活成功。

那么我们先说怎样用‘查表法’得出这个串。

a:如下图,我们输入下图这个串“123456789f123456789l123456789y”

b:用到的表为

cstring   ghostkey=“d54x379epjwcykn1tufh82vablsm6qgr”; //查表用到的表,共32个字符

方式为依为返回激活码每个字符在上表中的序数,如1的序数为15,f的序数为21。

c代码:

//=========================================

//

//   查表法返回相应字符的序号

//

//=========================================

int cmydlg::scankeytable(char t)

{

int   i=0;

for(i=0;i32;i )

{

if(t == (i))

return i;

}

return 0;

}

c:将上面返回的值,进行5次循环,求余数,返回‘0’或‘1’,作为下一函数的参数。在这我没用c代码,因为ip指令好像没有用c来表示的,还有位移指如rol等也不能c来表示….,函数名之所以叫bb0mod,是因为在驱动中这个function地址后三位是bb0

int cmy2008dlg::bb0mod(int iii, int sn)

{

__asm

{

cdq

mov eax,iii

mov ecx,8

ip ecx

mov ecx,edx

mov dl,1

shl dl,cl

mov eax,sn

and dl,al

neg dl

sbb edx,edx

neg edx

mov iii,edx

}

return iii;

}

d:将循环次数对8求余,根据上面的返回值‘1’或‘0’决定是‘与’或是‘或’操作。这里要用到一新字串:

unsigned char xorkey[56]=“x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00”

“x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00”;长度不需要这么长的,我测试用多写了。

void cmy2008dlg::ddemod(int keysnmod, int kkk)

{

__asm

{

mov eax,kkk

cdq

push 8

pop  ecx

ip ecx

mov ebx,1

mov ecx,edx

shl bl,cl

lea ecx,xorkey

add eax,ecx

cmp keysnmod,0

jz  andbyte

or  [eax],bl

jmp ddemodreturn

andbyte:

not bl

and [eax],bl

ddemodreturn:

}

return;

}

查表和以及上面两个函数调用情况如下:

for(int j=0;j30;j )

{

:scankeytable(char t);

for(int i=0;i5;i )

{

bb0mod(int iii, int sn);

ddemod(int keysnmod, int kkk);

}

}

e:上面执行结束后,情况如下图

}

激活码”123456789f123456789l123456789y”生成”af 12 11 78 a1 46 be 4a e0 85 9a fc 11 81”,这所以后面的计算,是因为下面的操作会将81后面的字符填为0,可能是不纳入计算(事实上好像是只计算0x10长度大小),

速个调用如下:

void cmy2008dlg::oncalc

{

updatedata(true);

cstring showmsg;

cstring activekey;

activekey=m_key1 m_key2 m_key3;

int   keysn=0;

int   keysnmod=0;

int   kkk=0;

cstring temp;

for(int j=0;j30;j )

{

keysn = scankeytable((j));

(“d  ”

密码法主题教育心得体会怎么写 密码法培训心得(3篇)

我们得到了一些心得体会以后,应该马上记录下来,写一篇心得体会,这样能够给人努力向前的动力。我们如何...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

确认删除?