逆向入门--简单win32CK逆向手记
2017-09-11 17:25
190 查看
最近入坑逆向不就,这个算是真正意义上的第一个CrackMe遂记录逆向过程
一个经典的输入密码并验证的小程序,先直接运行!
随便的输入密码,显然不对,弹框 incurrent 的提示框
跟着搜索结果,找到Ctrl+G 找到内存位置
在这里我们找到了真相,可以通过反汇编窗口很简单的看到这个。
这段看着逻辑简单清晰,通过 je 跳转到 inCurrent 的MsgBox,
爆破点Found!
那么我们通过直接修改寄存器,或者修改汇编指令成为jnz即可实现对程序的爆破,效果如下
je的跳转是由于 FZ 这个标志位被置 1 所以发生跳转,那么我们向上找代码,看看在哪里这个寄存器位被置一
由于截图问题哈,这个关键一句没接上。。。
cmp bx,si
这一句就是比较ebx的地位,和esi寄存器的低位,从而根据结果设置了标志位
再往上,我可可以看到 OD 自动注释的关键代码,红色的_vbaVarCmpEq更是说明了一切,很显然是个字符串比较的调用
__vbastrcomp 比较两个字符串,类似于 Window’s API lstrcmp
然后查询函数的refer,得到上述的描述。
重要知识回顾 : 函数是从右往左压栈的,所以最先压入的,是最后一个参数,然后是倒数第二个。
这里,在面的寄存器信息提示窗里面,已经显示出了这个压入栈的地址对应的Unicode的字符串,正是我们输入的“密码”
然后Call 这个函数进行Cmp的比较
其实这里使用了一个投机取巧的方法,cmp 既然是比较那么 比较源,和比较目的必然是在栈中存放,那么咱们找找就好
果然不如所料,在这里就找到了咱们的用户名密码
激动的试一试
特别是函数压栈这一块,也是提升了自己的认知
从右向左压栈
返回值永远在eax里
对于win32程序有时候寄存器不够返回值存储,那么后面会压入一个returnBuffer
初观界面
一个经典的输入密码并验证的小程序,先直接运行!
随便的输入密码,显然不对,弹框 incurrent 的提示框
开始分析
直接拖入OD,搜索工具搜索 Incurrent 这个字符串跟着搜索结果,找到Ctrl+G 找到内存位置
在这里我们找到了真相,可以通过反汇编窗口很简单的看到这个。
这段看着逻辑简单清晰,通过 je 跳转到 inCurrent 的MsgBox,
爆破点Found!
那么我们通过直接修改寄存器,或者修改汇编指令成为jnz即可实现对程序的爆破,效果如下
深入分析
因为这个CrackMe是要求拿到用户名和密码的,所以爆破实现是不行的,那么继续 读代码je的跳转是由于 FZ 这个标志位被置 1 所以发生跳转,那么我们向上找代码,看看在哪里这个寄存器位被置一
由于截图问题哈,这个关键一句没接上。。。
cmp bx,si
这一句就是比较ebx的地位,和esi寄存器的低位,从而根据结果设置了标志位
再往上,我可可以看到 OD 自动注释的关键代码,红色的_vbaVarCmpEq更是说明了一切,很显然是个字符串比较的调用
__vbastrcomp 比较两个字符串,类似于 Window’s API lstrcmp
然后查询函数的refer,得到上述的描述。
重要知识回顾 : 函数是从右往左压栈的,所以最先压入的,是最后一个参数,然后是倒数第二个。
这里,在面的寄存器信息提示窗里面,已经显示出了这个压入栈的地址对应的Unicode的字符串,正是我们输入的“密码”
然后Call 这个函数进行Cmp的比较
其实这里使用了一个投机取巧的方法,cmp 既然是比较那么 比较源,和比较目的必然是在栈中存放,那么咱们找找就好
果然不如所料,在这里就找到了咱们的用户名密码
激动的试一试
bingo!
结果如图小结
作为自己 的第一次 的CK 虽然不是很完美,但是也算是勉强成功特别是函数压栈这一块,也是提升了自己的认知
从右向左压栈
返回值永远在eax里
对于win32程序有时候寄存器不够返回值存储,那么后面会压入一个returnBuffer
相关文章推荐
- 简单入门正则表达式 - 第八章 捕获群和逆向引用
- PHP入门手记-简单实现网页密码验正
- 安卓逆向入门之如何连接夜神与AndroidKiller,以及一个简单crackme
- 简单的位运算入门,适合不知道什么是位运算的新手看看!
- 正则引擎入门——正则文法匹配可以简单快捷(三)
- lucene入门-简单的WEB搜索界面
- Asp.Net Core WebAPI入门整理(二)简单示例
- 简单的XPath入门
- 简单逆向分析使用案例(5)--CrackMe_04.exe 获取用户名和密码
- testng入门教程(简单易懂)
- 消息中间件RabbitMQ入门到进阶之简单队列(simple)
- 一款简单的QQ盗号蠕虫逆向分析 --发文于2013-7-23
- CTF 【每日一题20160627】简单的ELF逆向
- Vuex简单入门
- PostgreSQL 数据操作入门,简单对比MySQL
- iOS开发入门之UIPickerView控件的简单使用
- Zend Framework2.3.3入门简单实例-登录功能
- python机器学习——KNN算法简单入门(真的很简单!)
- 关于MATLAB入门的简单记录11 符号运算
- linux C简单入门