lxj8378 发表于 2015-8-12 08:32

拿到正确key后的分析

本帖最后由 lxj8378 于 2015-8-12 08:50 编辑

一开始没拿到正确注册码时,就开始瞎追
先说一下追的过程
1、对对话框api下断,看堆栈发现在0012F3E4处,向上翻发现有 “0012F390|0040267B返回到 52PoJie?0040267B 来自 52PoJie?0040A77F”右键跟随来到0040267B处
2、发现上面有个call,call上面有个jb(汇编指令,别多想),循环里有个用bl进行异域操作,执行0xD次,也就是13次,开始位置是0012F3E8,也就是对话框的文本的地址。像个解密过程。
3、再向上看,发现bl的值来自上面的一个循环,发现bl的值是来自一个很奇怪的地址,里面有些很乱的值,加起来就是bl的值。加的次数由esi决定。改变输入的注册码时,esi也会随着变化。地址的开始值00169990
4、在函数头部下断,发现在执行到004255A时eax指向我们输入的注册码,追进去,看到里面有个GetWindowTextLengthA,猜它可能是个读对话框的call
再就追不下去了。
看到@_BaZzi 的文章把正确的注册码输入后
1、发现在004025E1这句执行后,eax指向解密的UTF8编码。(原来根本不知道什么base64和UTF8编码),发现004025CF处是个base64转UTF8的函数。
2、0040253C、00402543、0040254A 、00402551这几句应该是"0o我是用户o0"用0xBE异或后的编码,如果改了以后可以显示其它字符。(猜测)
3、如果自己想通过改程序自己弄一个注册码的话,可以先弄个字串,转成UTF8编码,逐个字节相加,生成一个异或码,然后把上面字一段"0o我是用户o0"的异或后的内容改掉,就可以改变对话框的内容,注册码是字串的base64值。(猜测)


通过这个追码的过程,知道还有base64,UTF8编码,要不得追到苍老师家里去{:301_997:},一会去验证一下自己的猜测

Me丨丶晓贝 发表于 2015-8-12 08:57

沙发~ 抢沙发....卤煮加油!

Aonk 发表于 2015-8-12 09:01

支持楼主

1151425395 发表于 2015-8-12 10:41

楼主打字辛苦了{:301_1001:}
页: [1]
查看完整版本: 拿到正确key后的分析