`
hulianwang2014
  • 浏览: 757352 次
文章分类
社区版块
存档分类
最新评论
  • bcworld: 排版成这样,一点看的欲望都没有了
    jfinal

分析没有main的exe程序(二)

 
阅读更多

分析没有main的exe程序

标题 分析没有main的exe程序(二)
关键字 C,汇编
出处 http://blog.csdn.net/heyangbin
上篇用C++和windos sdk搭配,这次不妨试试C++和汇编搭配。工具MASM32或RadAsm(推荐RadAsm),CMD。首先是一段汇编代码:

.586
.model flat,stdcall
option casemap:none

.data
.code
extern C myentry: near
extern C TerminateProcess@8: near
extern C GetCurrentProcess@0: near

public STARTCODE

STARTCODE PROC NEAR C


callmyentry

push eax
call GetCurrentProcess@0
push eax
call TerminateProcess@8

STARTCODE endp
end STARTCODE

保存为Test.asm,在CMD下键入ML.EXE /c /coff /Cp /nologo /I"C:/RadASM/Masm32/Include" "test.asm"(注C:/RadASM/Masm32/Include路径是函数头文件路径)编译得到Test.obj

下面是一段C++代码:

#include <Windows.h>
intmyentry(void)
{
return0;
}

保存为main.cpp,在CMD下键入CL /cmain.cpp编译得到main.obj

然后输入如下命令:LINK.EXE /SUBSYSTEM:WINDOWS /RELEASE /VERSION:4.0 /LIBPATH:"C:/RadASM/Masm32/Lib" /OUT:"test.exe" "test.obj""main.obj"得到test.exe.

下面我们将它反汇编:dumpbin/disasm test.exe得到如下

00401000: E8 1B 00 00 00 call 00401020
00401005: 50push eax
00401006: E8 23 00 00 00 call 0040102E
0040100B: 50 push eax
0040100C: E8 17 00 00 00call 00401028
00401011: CCint 3
00401012: CCint 3
00401013: CC int 3
00401014: CCint 3
00401015: CC int 3
00401016: CC int 3
00401017: CCint 3
00401018: CCint 3
00401019: CCint 3
0040101A: CC int 3
0040101B: CC int 3
0040101C: CC int 3
0040101D: CC int 3
0040101E: CC int 3
0040101F: CC int 3
00401020: 55 push ebp
00401021: 8B EC mov ebp,esp
00401023: 33 C0 xor eax,eax
00401025: 5D pop ebp
00401026: C3 ret
00401027: CC int 3
00401028: FF 25 04 20 40 00 jmp dword ptr ds:[00402004h]
0040102E: FF 25 00 20 40 00 jmp dword ptr ds:[00402000h]
我们可以看到

00401000: E8 1B 00 00 00 call 00401020
00401005: 50push eax
00401006: E8 23 00 00 00 call 0040102E
0040100B: 50 push eax
0040100C: E8 17 00 00 00call 00401028

是Test.asm的实现,代码从00401000执行,call之后进入我们定义的myentry

00401020: 55 push ebp
00401021: 8B EC mov ebp,esp
00401023: 33 C0 xor eax,eax
00401025: 5D pop ebp
00401026: C3 ret
00401027: CC int 3

此段代码是main.cpp的实现,我们可以在main.cpp中添加要实现的代码,而非一定要在main函数中执行。

分享到:
评论

相关推荐

    CustomPSourceP(0.99.28).zip_main.exe_source main.exe

    这个压缩包可能是为了提供给开发者用于二次开发或维护 "main.exe",或者是为了便于用户了解和研究程序的工作方式。解压并分析这些源代码,可以学习到编程语言的使用、软件架构设计、模块化编程以及错误处理等多方面...

    matlab编写的程序打包发布生成exe的方法

    然而,在实际应用中,我们经常需要将 Matlab 编写的程序打包发布生成可执行文件(exe),以便在没有 Matlab 环境的机器上运行。下面将详细介绍 Matlab 编写的程序打包发布生成exe的方法。 方法一:使用命令行方法 ...

    java2exe(java打包为exe程序)

    虽然Java2EXE可以提供方便,但打包的.exe文件也可能被逆向工程分析,暴露源代码。因此,对于商业软件,可能需要采取额外的保护措施,如代码混淆和数字签名。 总之,Java2EXE是Java开发者将程序转化为易于分发和执行...

    Hex文件查看器,解压运行里面main.exe文件即可,打开文件以16进制显示文件的内容。

    "解压运行里面main.exe文件即可"说明这是一个可执行的Windows程序,用户只需将压缩包解压后运行名为`main.exe`的文件,即可启动Hex查看器。 描述中提到的“无需安装,无需注册”,意味着这个Hex查看器是便携式的,...

    tt端11.70.28可用的全汉化无壳的main.exe(解决爆卡问题)

    本文讨论的"tt端11.70.28可用的全汉化无壳的main.exe(解决爆卡问题)",是一个涉及游戏客户端更新的具体案例,它不仅表明了一个游戏版本的迭代,还反映出游戏优化和用户界面本地化的趋势。 首先,tt端这个名词可能...

    DOS软件EXE2BIN的C源程序代码

    在DOS操作系统环境中,"EXE2BIN"是一个经典的实用工具,它能够将可执行的.EXE文件转换成纯二进制的.BIN文件。这种转换有时在处理低级磁盘映像、创建启动盘或者进行其他需要原始二进制数据的场景中是必要的。本文将...

    实现对C程序设计语言的源程序(自定)的词法分析.zip

    该词法分析器能实现对自己输入的类C语言源程序中的所有单词进行分类,指出其所属类型,实现简单的词法分析操作。需解压后打开Microsoft Visual Studio运行,或者直接打开词法分析\词法分析\Debug文件夹里面的.exe...

    CreateProcess拦截exe程序

    在这个场景中,"CreateProcess拦截exe程序"指的是通过API Hook来拦截`CreateProcess`函数,这是一种Windows API,用于创建新的进程和其初始线程。下面我们将深入探讨`CreateProcess`、API Hook的基本概念以及如何...

    灰色预测模型exe程序.rar

    这个"灰色预测模型exe程序"压缩包包含了用于执行灰色预测及相关分析的可执行文件`main.exe`。下面我们将深入探讨灰色预测模型及其相关应用。 灰色预测模型(Grey Prediction Model,简称GM模型)由邓聚龙教授于20...

    IDA pro逆向工具的使用以及逆向分析程序实例操作

    6.附带4个解密案例程序,包括三个exe文件和一个linux程序的逆向实操 环境: IDA pro7.6, linux, vc++ 适合人群: 具备一定编程基础,作业时间不够的学生,ida初学者 阅读建议: IDA pro逆向工具的初步入门,此...

    一个EXE文件的启动过程

    6. **初始化**:加载完成后,系统会调用程序的入口点,通常是`WinMain`或`main`函数。在此之前的初始化步骤可能包括初始化全局变量、设置堆栈指针、处理`.cctor`(类型初始化)等。 7. **执行代码**:程序的执行从...

    Java打包程序转换为 windows exe

    3. **嵌入Java运行时**:JSmooth会自动检测用户的系统是否已安装Java,并根据需要内置一个轻量级的Java运行时环境,确保程序在没有Java环境的机器上也能运行。 4. **生成EXE文件**:结合分析结果和配置文件,...

    JAVA程序打包成exe文件

    - 在“Main Class”选项卡中指定程序的主类。 - 在“JRE System”选项卡中指定所需的JRE版本和路径。 - 在“Jar Files”选项卡中添加需要的.jar文件和.class文件。 - 在“Resources”选项卡中添加程序所需的资源...

    利用LEX自动生成词法分析程序

    实验二 词法分析器 一、实验目的 掌握词法分析器的构造原理,掌握手工编程或LEX编程方法之一。 二、实验内容 编写一个LEX源程序,使之生成一个词法分析器,能够输入的源程序转换为单词序列输出。 三、实验环境 ...

    MainCode Decrypter samsat F1 by zamoranoss

    3. **Project1.exe** - 应用程序的可执行文件,即MainCode Decrypter samsat F1程序本身。 4. **Unit1.dfm** - Delphi中的表单文件,保存了界面设计和组件的状态。 5. **Project1.cfg** - Delphi项目的配置文件,...

    恶意ChatGPT应用程序分析报告

    8. **程序入口点**:虽然在main函数中没有发现直接的资源释放操作,但在main函数执行之前,有额外的代码被执行。 9. **预main代码**:这部分代码是在C#中编译时设定的,位于Costura命名空间内的'-'命名空间,可能...

    exe4j打包软件

    这样,即便目标计算机没有安装Java运行环境,程序也能正常运行,因为exe4j会自动包含必要的JRE组件。 2. **多配置支持**:exe4j支持创建多个执行配置,针对不同的需求和环境设置不同的启动参数和选项,如最小化的...

    VC任意程序界面源码

    此外,如果程序没有报错,但也没有任何反应,可能是由于消息处理机制出现问题。MFC通过消息映射机制处理各种窗口消息,你需要检查`ON_MESSAGE`、`ON_COMMAND`、`ON_BN_CLICKED`等宏是否正确设置,以确保消息能被正确...

    C语言程序设计基本概念习题

    连接目标程序生成可执行程序,后缀名为“.exe”。可执行程序可以直接被计算机执行。 编译和连接过程 C语言程序的编译和连接过程是一个复杂的过程。首先,源程序被编译器编译生成目标程序,然后目标程序被连接器连接...

    使用flex编写一个词法分析器

    我们可以使用flex语言编写一个词法分析器,然后使用flex.exe对其进行编译,得到一个C语言的源代码文件,该文件可以被编译成一个可执行文件,以便进行词法分析。 在这个实验中,我们定义了三个词法单元:INTEGER、ID...

Global site tag (gtag.js) - Google Analytics