-
-
[原创]010Editor算法分析
-
发表于:
2019-11-16 22:34
5951
-
应用程序名称:010Editor.exe
MD5值:67399a3650be615df420393758c799cd
SHA1值:95cc3dbfef9781c73d147c44e179edbafac37f42
简单功能介绍:
16进制修改、文本修改、模板解析各种文件格式、对比文件
系统环境:win7 32位虚拟机
工具:vs2017、OD、EXEINFOPE、010Editor
010算法分析
2.1 先用ExeinfoPE查看程序的一些基本信息,可以猜出这是用VS2013写的,语言是C++,eax作为返回值,ecx传递this指针。
2.5现在我们有两种选择,一是根据给出的错误信息,搜索对应的字符串,二是下API断点,栈回溯分析。我们这里先用简单点的字符串搜索试试,如果搜索不到,或者有多处,我们再改用第二种方法
2.6如图,已经搜索到用户名或密码无效的字符串,并且查找下一个没有了,那应该就是我们要找的关键位置了。
2.7双击进入反汇编窗口,分析上下文,在上方找打了疑是注册成功的字符串
2.8继续往上看,找到关键跳转
2.9,到这里我们nop掉跳转,应该就能实现暴力破解了,这次我们要分析算法,所以继续往上跟,我们发现比较cmp edi,0xDB是跳转来的。
2.10转到跳转过来的位置
2.11发现上下两个位置都调用了这个call,更加说明了这是一个关键call,要想注册成功,需要这个call的返回值为0xDB
2.12我们双击进去这个call里进行进一步的分析
2.13在这个call里面我们可以看到有多种返回结果,找到我们要的返回结果0xDB,将光标移动到其上的pop edi,发现是通过跳转到达这里,转到跳转处
2.14跳转的成立的条件是上面最近的一个call的返回值必须为0x2D,所以这也是个关键的call,再次双击进去分析
2.16我们往上看ESI的值是哪来的,发现ESI的值有三种,其中就有我们需要的0x2D
2.17我们将光标移动到mov esi,0x2D处,发现有两处跳转到达这里
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课