首页
社区
课程
招聘
[原创]第二十七题分析
发表于: 2016-12-25 10:13 4625

[原创]第二十七题分析

loudy 活跃值
10
2016-12-25 10:13
4625
    简单分析定位到此处,获取键盘按键事件,取输入字符串,且从代码看,输入至少长度为11才能进入正常注册流程。
    看IDA中反编译的C语言伪代码,如下,更清楚,可以看到,取输入字符串后即对403020处代码进行解码,此过程按代码描述为,依次取输入字符串中的字符(至少11个),每个字符依次与403020处每个BYTE值(20个)异或,结果回存403020处;简化为,输入字符串中所有字符依次异或的值记为x1,x1与403020处20个BYTE依次异或结果回存403020处。
    继续看伪代码,如下,可以看到程序读取了401540处0x2C个字节,利用403020处20个字节值进行解码运算后回存,然后执行401540处函数。伪代码展示该解码过程为,依次取403020处(20个字节)每个字节值,该值与0x5E相乘后取低字节,该低字节依次与401540处(0x2C个)每个字节异或,结果回存401540;简化为,依次取403020处(20个字节)每个字节值,该值与0x5E相乘后取低字节,所有该低字节依次异或,值记为x2,x2与401540处每个字节依次异或,结果回存。
    看403020处原始值和401540处原始值,如下,
    由于401540处为函数开始,一般函数开始都是一个push指令,指令值为0x6A,猜测上文所提x2为0x6A^0xAE=0xC4,用C4对401540处解码,结果如下。
    可知猜测完全正确,下面求上文所提x1,可知x1取值范围为0x00-0xFF,写代码如下。
    运行得到如下结果,可知x1取值范围为{0x1e,0x3e,0x5e,0x7e,0x9e,0xbe,0xde,0xfe}中某一值。
上传的附件:
收藏
免费 1
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//