郁金香汇编逆向与外挂(61、62)
2015-05-16 13:47
330 查看
知识点:
WM_COMMAND消息
窗口回调函数
菜单类CALL分析
Jiack调试软件
1、用Jiack打开扫雷程序。(用郁金香的OD打开跟随时看不到代码)
2、查看菜单中点击窗口。
3、窗口中右击刷新。
4、选择扫雷程序右击跟随ClassProc。
5、当我们选择扫雷程序中的菜单时,都会向主窗口的回调函数发送一个叫WM_COMMAND的信息。
6、设置调试条件断点。WM_COMMAND==msg。注意条件断点下错了也不会有提示。
7、再次访问菜单,则该断点会断下来。
8、根据窗口过程的参数可以看出。
第一个参数为窗口句柄。
第二个参数为消息WM_COMMAND。
第三个为菜单的ID。(关键部分)
第四个为控件的句柄。
9、用代码注入器注入信息。
push 0 (控件句柄)
push 20A (菜单ID)
push 0x111(WM_COMMAND)
push 601AC(窗口句柄)
call 01001BC9(注入的地址)
10、选择出入一次则扫雷程序会跳到中级(中级的地址为20A)。
扫雷程序中不同菜单选项的地址:
初级:209
中级:20A
高级:20B
自定义:20C
计算器程序菜单CALL分析:
1、用Jiack打开计算器程序。
2、点击运行直到左侧显示运行状态为止,这时计算器程序运行窗口显示出来。
3、跟随ClassProc。
4、在窗口程序中的第一句代码中下条件断点。(WM_COMMAND==msg).
5、在计算机的菜单栏中选择科学型,进入断点。
6、获取地址,用代码注入器注入相应信息。
基址分析
以扫雷程序为例:
用CE软件找扫雷程序中红旗数的基址。
1、打开ce软件和扫雷程序。
2、在ce中搜索红旗数的值。
3、根据红旗数一步步确定一个地址。
4、我们搜索到的地址是01005194 。这个地址一直指向红旗剩余数的值。
5、记下这个地址。
6、用Jiack打开扫雷程序。
7、在命令窗口中打入命令 dd 01005194 ,回车。
8、找到地址01005194的值为28 。28为十六进制与扫雷程序中的红旗数40相等。一般来说我们就可以认为这是一个基址。
基址还有另外一个特征。
9、在这个地址下一个内存访问的断点。
10、访问之后找到一个mov eax,dword ptr ds:[0x1005194]语句。
语句括号中的地址就是基址。这个地址就肯定是一个基址。以一个常量的形式存在于汇编代码中。
WM_COMMAND消息
窗口回调函数
菜单类CALL分析
Jiack调试软件
1、用Jiack打开扫雷程序。(用郁金香的OD打开跟随时看不到代码)
2、查看菜单中点击窗口。
3、窗口中右击刷新。
4、选择扫雷程序右击跟随ClassProc。
5、当我们选择扫雷程序中的菜单时,都会向主窗口的回调函数发送一个叫WM_COMMAND的信息。
6、设置调试条件断点。WM_COMMAND==msg。注意条件断点下错了也不会有提示。
7、再次访问菜单,则该断点会断下来。
8、根据窗口过程的参数可以看出。
第一个参数为窗口句柄。
第二个参数为消息WM_COMMAND。
第三个为菜单的ID。(关键部分)
第四个为控件的句柄。
9、用代码注入器注入信息。
push 0 (控件句柄)
push 20A (菜单ID)
push 0x111(WM_COMMAND)
push 601AC(窗口句柄)
call 01001BC9(注入的地址)
10、选择出入一次则扫雷程序会跳到中级(中级的地址为20A)。
扫雷程序中不同菜单选项的地址:
初级:209
中级:20A
高级:20B
自定义:20C
计算器程序菜单CALL分析:
1、用Jiack打开计算器程序。
2、点击运行直到左侧显示运行状态为止,这时计算器程序运行窗口显示出来。
3、跟随ClassProc。
4、在窗口程序中的第一句代码中下条件断点。(WM_COMMAND==msg).
5、在计算机的菜单栏中选择科学型,进入断点。
6、获取地址,用代码注入器注入相应信息。
基址分析
以扫雷程序为例:
用CE软件找扫雷程序中红旗数的基址。
1、打开ce软件和扫雷程序。
2、在ce中搜索红旗数的值。
3、根据红旗数一步步确定一个地址。
4、我们搜索到的地址是01005194 。这个地址一直指向红旗剩余数的值。
5、记下这个地址。
6、用Jiack打开扫雷程序。
7、在命令窗口中打入命令 dd 01005194 ,回车。
8、找到地址01005194的值为28 。28为十六进制与扫雷程序中的红旗数40相等。一般来说我们就可以认为这是一个基址。
基址还有另外一个特征。
9、在这个地址下一个内存访问的断点。
10、访问之后找到一个mov eax,dword ptr ds:[0x1005194]语句。
语句括号中的地址就是基址。这个地址就肯定是一个基址。以一个常量的形式存在于汇编代码中。
相关文章推荐
- 郁金香反汇编逆向与外挂(64、65)
- 郁金香反汇编逆向与外挂(68)
- 郁金香反汇编逆向与外挂(71)
- 郁金香汇编逆向与外挂(60)
- 郁金香反汇编逆向与外挂(66)
- 郁金香汇编逆向与外挂(63)
- 郁金香反汇编逆向与外挂(67)
- 郁金香2013网授汇编逆向与外挂 [ 91课,全 ]
- 紧急求助汇编、逆向工程人才帮忙!!
- 逆向知识-汇编寻址方式汇总
- 我学汇编之逆向系列
- 【安卓逆向】继续学习,体验dalvik汇编语言,并且尝试编译运行成功!
- 逆向基础---vc汇编(一)
- 反汇编逆向实例_while语句反汇编
- 自制反汇编逆向分析工具 迭代第六版本 (一)
- [教程]逆向反汇编第九课
- [教程]逆向反汇编第一课
- 逆向与反汇编工具
- 反汇编与逆向分析技术_笔记
- 逆向知识第十讲,循环在汇编中的表现形式,以及代码还原