逆向课程第二讲,寻找main入口点
一丶识别各个程序的入口点
入门知识,识别各个应用程序的入口点
(举例识别VC 编译器生成,以及VS编译生成的Debug版本以及Release版本)
1.识别VC6.0 Debug版本
1.1 首先,新建一个VC debug版本的程序,然后F5运行,可以看到栈回溯窗口
1.2 而后通过栈回溯窗口,点击mainCRTStarup,查看main函数之前会调用什么API
确定之后,OD打开查看.
可以看到调用API的位置,但是怎么确定那个是入口点,我们知道, VC中的main函数是3个参数,那么我们只需要找到
三个push 然后一个Call的位置,则可以确定,(确定也是要你F7跟进去,看看代码是不是main函数的代码,或者参数传参是什么)
1.3确定main入口点
在上图可以看到,三个push,然后一个Call,那么我们跟进去查看,因为是Debug版本,所以已经提示出来参数是什么了
所以直接可以确定了.
1.4 F7跟进去查看
可以直接确定使我们的入口点
IDA查看一次
步骤和前边一样,先看入口点特征,Debug版本特征是调用API GetVersion
所以IDA中查看.
1.查看文本视图
2.展开文本视图
这里提示你要CTRL + 加号 展开
展开查看
3.根据特征,读取代码,确定main位置
因为是Debug所以有符号显示 下面直接看Release版本
2.查看VC6.0 Release版本
首先,特征是一样的,都是调用GetVersion
那么现在直接OD打开去分析.(当然IDA也可以,都是工具)
1.一样,先找特征
2.找到之后,因为我们写的是main,所以判断是main,只要找到三个push一个Call即可
已经找到了 F7 跟进去查看.
3.确认是不是.
可以看出,因为是Release版本,所以都给优化没了.确实使我们写的代码
3.查看VS系列 Debug版本(没个版本不一样,所以先看下特征这里是 VS 2015)
1.栈回溯,确定入口点特征
首先第一步,还是编写一段代码
然后通过栈回溯,查看入口的特征.
那么我觉着,这个是入口点的特征,而在tmainCRTStartup里面调用的wmain
那么此时OD打开的时候可以分析遇到的第二个call,然后在第二个call里面跟进去.
通过栈回溯,可以看到会调用这种API,而下方的截图则会调用wmain,所以OD打开,不断的跟,也是三个push 一个Call
2.OD分析
因为是Debug版本,有跳转表,也可以看到符号信息,所以直接跳转过来
跳转过来之后(看下图)
可以看到确实是两个Call,也就是我们上面分析的,然后进入第二个Call
3.确定入口点位置
F7跟进去,查找三个push 一个Call
找到了,我们跟进去查看,看看是否是入口点,
跟进去之后发现又有一层跳转表,没关系,F8 走过去
跟过来之后则会发现确实使我们入口点写的代码了
4. VS系列,查看Release版本
Release版本是一样的,直接IDA打开查看(换着工具看)
1.进去IDA,打开入口点,CTRL + 加号展开
CTRL + 加号展开不做演示,同上面分析一样.
查看反汇编
发现IDA直接跟过来的就是这个,那么此时好办了,我们知道main在它的下面,那么直接寻找三个push 一个Call即可.
找到了,双击_main确认一下.
我们刚才写的代码已经出来了
转载于:
作者:IBinary
出处:http://www.cnblogs.com/iBinary/
转载于:https://www.cnblogs.com/gd-luojialin/p/11219704.html
逆向课程第二讲,寻找main入口点相关推荐
- 《图像分类》概述,李飞飞经典CS231N2021《卷积神经网络视觉识别》课程第二讲!...
来源:专知本文多图,建议阅读5分钟本文深入探讨了基于神经网络的计算机视觉深度学习方法的细节. [导读 ]李飞飞老师的CS231N课程<卷积神经网络视觉识别>被奉为经典,最新2021季已经于 ...
- 国科大UCAS胡包钢教授《信息论与机器学习》课程第二讲:信息论基础一
来源:专知 信息论中最为基本的概念就是香农熵(第8页),由此可以导出信息论中其它各种定义,以至我们常规应用的其它经验式定义(以后会提到).学习信息论基础知识时要避免仅是概念与定义的简单记忆,要尽量结合 ...
- 戴戴戴师兄-数据分析课程笔记(第二讲)
总目录 课程地址http://xn--https-my2iwds253at07a//www.bilibili.com/video/BV1ZM4y1u7uF/?spm_id_from=333.337.s ...
- 计算机安全学第2版pdf,计算机安全学讲义_第二讲:分组密码.pdf
计算机安全学讲义_第二讲:分组密码.pdf 研究生课程 第二讲:分组密码 研究生课程 第二讲:分组密码 计算机安全学 通信系统保密模型 计算机安全学 对称密码体制-分组密码 Cryptography ...
- 学习逆向知识之用于游戏外挂的实现.第二讲,快速寻找植物大战僵尸阳光基址.以及动态基址跟静态基址的区别...
通过游戏外挂,学习逆向技术之快速寻找植物大战僵尸阳光基址.以及动态基址跟静态基址的区别 一丶静态基址. 动态基址. 基址的区别 通过上一讲超级马里奥的游戏外挂技术制作.我们学习到了静态基址.以及观看内 ...
- 程序定义了多个入口点。使用 /main (指定包含入口点的类型)进行编译
原文:请使用/main进行编译,以指定包含入口点类型 在使用VS工具初学C#的时候需要不停的写小程序,觉得每次都新建项目太过麻烦,所以试着把程序写在一个项目下面,结果编译的时候出错了,因为我每个小程序 ...
- 链表一:寻找环形链表的入口点
寻找环形链表的入口点 环形链表的入口点 1.首先怎么判断链表是否有环 (1)为什么slow走一步,fast走两步,他们一定会在环里面相遇,会不会永远追不上?请证明! (2)slow走一步,fast走3 ...
- 精品连载丨安卓 App 逆向课程之五 frida 注入 Okhttp 抓包下篇
本篇内容是「肉丝姐教你安卓逆向之 frida 注入 Okhttp 抓包系列的第三篇,建议配合前两篇一起阅读,效果更佳. 精品连载丨安卓 App 逆向课程之三 frida 注入 Okhttp 抓包上篇 ...
- 第二讲:Android系统构架分析和应用程序目录结构分析
2019独角兽企业重金招聘Python工程师标准>>> 本讲内容: Android系统构架简介 Android应用程序结构分析 点这里下载:Android学习指南第二讲源代码 一.A ...
最新文章
- 自学python用什么书-python自学用什么书
- 手机型号大全资料_电子元器件知识资料大全
- 移动App的发展趋势
- 编程方法学笔记:karel和java
- 15分钟构建超低成本数据大屏:DataV + DLA
- 从零打造一个程序员的mac
- 微星主板节能模式怎么关闭_技嘉小雕、微星迫击炮、华硕电竞特工三款主板对比...
- 阿里云IPV6解决方案
- 校赛第二轮 —— 国产电影保护月是国产电影之福 / 祸
- 王者荣耀的皮肤,你会怎么测试?
- 基于微信小程序的毕业设计题目(36)PHP电影院售票小程序(含开题报告、任务书、中期报告、答辩PPT、论文模板)
- 微信转发指定的图文消息到朋友圈(JAVA版)
- 爬虫学习笔记(用python爬取东方财富网实验)
- bmi计算器HTML,BMI计算器(示例代码)
- 地产中介门店10用户桌面云方案
- PHP给title=赋值变量 PHP title弹出字符串拼接变量
- 基于Java的文本相似度计算
- vscode - 史上最优秀的 IDE ?
- rd授权管理器不显示服务器,2008 r2 找不到RD授权管理器
- D - National Railway (DP)
热门文章
- A Survey on Knowledge Graph-Based Recommender Systems 知识图谱提升推荐系统准确性与可解释性ArXiv 2020
- labview周立功can通讯程序.rar_使用Labview进行CAN 通讯之dbc解析
- Tree树 递归查询,显示成JSON格式
- htop进程管理工具
- 小试牛刀:文本处理工具之grep、egrep详解
- C语言基础教程读书笔记2(第二章常量、变量、类型转换)
- 小记安装python的MySQLdb模块
- linux 架设J2EE网站过程分享之二 —— JDK安装
- 交换机的质量害死人呀!
- f4 stm32 神经网络_STM32神经网络开发工具箱将AI技术引入边缘和节点嵌入式设备...