逆向课程第二讲,寻找main入口点
逆向课程第二讲,寻找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确认一下.
我们刚才写的代码已经出来了
逆向课程第二讲,寻找main入口点的更多相关文章
- PC逆向之代码还原技术,第二讲寻找程序入口点
PC逆向之代码还原技术,第二讲寻找程序入口点 一丶简介 程序逆向的时候.我们需要知道程序入口点.动态分析的时候以便于看是什么程序编写的. 比如VC++6.0 我们可以写一个程序测试一下 我们写一段代码 ...
- C# 一、语法结构、注释、命名空间、Main入口点、变量与常量、运算符、流程控制(循环)
一.代码结构 1)一个 C# 程序主要包括以下部分: 命名空间声明(Namespace declaration) 一个 class Class 方法 Class 属性 一个 Main 方法 语句(St ...
- 逆向实战第一讲,寻找OllyDbg调试工具的Bug并修复
逆向实战第一讲,寻找OllyDbg调试工具的Bug并修复 首先我们要知道这个OD的Bug是什么. 我们调试一个UNICODE的窗口,看下其窗口过程. 一丶查看OllyDbg 的Bug 1.1spy++ ...
- 逆向实用干货分享,Hook技术第二讲,之虚表HOOK
逆向实用干货分享,Hook技术第二讲,之虚表HOOK 正好昨天讲到认识C++中虚表指针,以及虚表位置在反汇编中的表达方式,这里就说一下我们的新技术,虚表HOOK 昨天的博客链接: http://www ...
- 不包含适合于入口点的静态"Main"方法
学习新建项目.此问题做为笔记. 错误 1 程序“admin.exe”不包含适合于入口点的静态“Main”方法 原因:原来创建项目的时候,用的是“空项目”,我以为这样就会生成类库,实际上,一开始准备运行 ...
- WPF编译时提示“...不包含适合于入口点的静态‘Main’方法 ...”
今天看了一下wpf的Application类方面的知识,一个windows应用程序由一个Application类的实例表示,该类跟踪在应用程序中打开的所有窗口,决定何时关闭应用程序(属性 Shutdo ...
- 如何为WPF添加Main()函数 程序入口点的修改
一般的.WPF的Main()函数是自动生成的,不过有时候我们需要为我们的应用程序传参.那么自动生成的Main()函数就不会满足我们的要求. 那么如何为WPF Application 设置Main()函 ...
- 在纯C工程的main函数之前跑代码(手工找到程序入口点, 替换为我们自己的函数)
在main函数之前跑代码的方法 方法: 手工找到程序入口点, 替换为我们自己的函数 写测试程序 // test.cpp : Defines the entry point for the consol ...
- Net Core通用主机项目报错 程序不包含适合于入口点的静态Main
Net Core通用主机的介绍: https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/host/generic-host?view=as ...
随机推荐
- 【个人笔记】《知了堂》express模块
NPM 包管理器 Node package module ==>简称npm 类似的bower 安装express 1.全局Npm install express -g 2.项目中安装 项目中 ...
- 第6章 Overlapped I/O, 在你身后变戏法 ---1
这一章描述如何使用 overlapped I/O(也就是 asynchronous I/O).某些时候 overlapped I/O 可以取代多线程的功用.然而,overlapped I/O 加上co ...
- 利用python多线程实现多个客户端与单个服务端的远程ssh
本次实验设计两个方面的代码,第一个是客户端,代码如下: import os from socket import * c = socket(AF_INET,SOCK_STREAM) c.connect ...
- ZOJ3541 The Last Puzzle
这道题是宁波集训的那道题,讲课时轻描淡写吧(应该是我听课不认真罢了),所以这样就要靠自己的理解了, dp[i][j][0]表示从左端点开始完成整个区间的最小花费dp[i][j][1]表示从右端点开始完 ...
- PHP CodeBase: 生成N个不重复的随机数
有25幅作品拿去投票,一次投票需要选16幅,单个作品一次投票只能选择一次.前面有个程序员捅了漏子,忘了把投票入库,有200个用户产生的投票序列为空.那么你会如何填补这个漏子? <?php /* ...
- 实战之elasticsearch集群及filebeat server和logstash server
author:JevonWei 版权声明:原创作品 实战之elasticsearch集群及filebeat server和logstash server 环境 elasticsearch集群节点环境为 ...
- Python 基础之函数、深浅copy,set及练习
三元运算符通常在Python里被称为条件表达式,这些表达式基于真(true)/假(not)的条件判断,在Python 2.4以上才有了三元操作. 语法格式: X if C else Y 有了三元表达式 ...
- C#直接发送打印机命令到打印机及ZPL常用打印命令 - 条码打印机
using System; using System.Collections.Generic; using System.Text; using System.Runtime.InteropServi ...
- [Python]Codecombat攻略之远边的森林Forest(1-40关)
首页:https://cn.codecombat.com/play语言:Python 第二界面:远边的森林Forest(40关)时间:2-6小时内容:if/else.关系操作符.对象属性.处理输入网页 ...
- 【node】使用nvm管理node版本
写在前面 nvm(nodejs version manager)是nodejs的管理工具,如果你想快速更新node版本,并且不覆盖之前的版本:或者想要在不同的node版本之间进行切换: 使用nvm来安 ...