-
-
[原创]第一题和第二题
-
发表于: 2015-10-20 10:49 10923
-
详见附件:
第一题:
1.分析后可以看出,check方法有三处返回地址,分别在返回地址前加入log,重打包后执行,发现返回指令在此处是有效的
2.算法中大量使用了加密及反射调用,于是尝试从返回值出入手,加入log,将两个相比较的long打出来,通过日志可以看出,输入为100时分别为124850和520676,输入为200时,分别为124950和520676,猜测算法是
520676=input+124750
得出结果:input=395926
第二题:
1.将程序运行起来后,在ch函数上下断点,可以看出他调用74f19ddc位置,传入的第一个参数是输入的字符串。此函数调用中,会将输入的字符串做逐位加下标的操作,关键点在74f19190处,注意此时传入的参数,即hexview中76d9c680处。在该函数调用中,首先会对输入的字符串做一个与一个定值做逐位相加操作,该定值是:Ox1f,0xbc,0xda,0xff,0xe6,0x4c,0xbc,0x44,0xf5,0xb8,0x13,0xc8,0xec,0xa8,0xcd,0xbd,然后将其作为参数传入到加密函数74f18944 r5地址是76cba000,应该是动态申请的内存空间。
2.解密函数经过分析是一个aes加密算法,密钥为:0x6b.0xcd.0xc6.0x7a,0x6b,0x2b,0x7c,0x9d,0x8d,0xa4,0x59,0xb1,0xab,0x9d,0x06,0x80,解密完成后,通过对比密文判断是否成功
3.写出解密程序,最终解的结果为kboloy0
第一题:
1.分析后可以看出,check方法有三处返回地址,分别在返回地址前加入log,重打包后执行,发现返回指令在此处是有效的
2.算法中大量使用了加密及反射调用,于是尝试从返回值出入手,加入log,将两个相比较的long打出来,通过日志可以看出,输入为100时分别为124850和520676,输入为200时,分别为124950和520676,猜测算法是
520676=input+124750
得出结果:input=395926
第二题:
1.将程序运行起来后,在ch函数上下断点,可以看出他调用74f19ddc位置,传入的第一个参数是输入的字符串。此函数调用中,会将输入的字符串做逐位加下标的操作,关键点在74f19190处,注意此时传入的参数,即hexview中76d9c680处。在该函数调用中,首先会对输入的字符串做一个与一个定值做逐位相加操作,该定值是:Ox1f,0xbc,0xda,0xff,0xe6,0x4c,0xbc,0x44,0xf5,0xb8,0x13,0xc8,0xec,0xa8,0xcd,0xbd,然后将其作为参数传入到加密函数74f18944 r5地址是76cba000,应该是动态申请的内存空间。
2.解密函数经过分析是一个aes加密算法,密钥为:0x6b.0xcd.0xc6.0x7a,0x6b,0x2b,0x7c,0x9d,0x8d,0xa4,0x59,0xb1,0xab,0x9d,0x06,0x80,解密完成后,通过对比密文判断是否成功
3.写出解密程序,最终解的结果为kboloy0
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
赞赏
看原图
赞赏
雪币:
留言: