时间问题,直接上代码:
void fnLoopDemo()
{
int i, j, k, l, m, n, x;
for(i = 0; i < 10; i++)
{
j = 1;
if(j)
{
k = 1;
while(k)
{
l = 1;
if(l)
{
for(m = 0; m < 5; m++)
{
x = 0;
}
for(n = 0; n < 5; n++)
{
x = 1;
}
x = 100;
goto _cw;
}
x = 200;
_cw:
__asm{}
}
_bw:
__asm{}
}
}
}
DASM结果如下:
void fnLoopDemo()
{
00416B00 55 push ebp
00416B01 8B EC mov ebp,esp
00416B03 81 EC 14 01 00 00 sub esp,114h
00416B09 53 push ebx
00416B0A 56 push esi
00416B0B 57 push edi
00416B0C 8D BD EC FE FF FF lea edi,[ebp-114h]
00416B12 B9 45 00 00 00 mov ecx,45h
00416B17 B8 CC CC CC CC mov eax,0CCCCCCCCh
00416B1C F3 AB rep stos dword ptr es:[edi]
int i, j, k, l, m, n, x;
for(i = 0; i < 10; i++)
00416B1E C7 45 F8 00 00 00 00 mov dword ptr [i],0
00416B25 EB 09 jmp fnLoopDemo+30h (416B30h)
00416B27 8B 45 F8 mov eax,dword ptr [i]
00416B2A 83 C0 01 add eax,1
00416B2D 89 45 F8 mov dword ptr [i],eax
00416B30 83 7D F8 0A cmp dword ptr [i],0Ah
00416B34 0F 8D 82 00 00 00 jge _bw+5 (416BBCh)
{
j = 1;
00416B3A C7 45 EC 01 00 00 00 mov dword ptr [j],1
if(j)
00416B41 83 7D EC 00 cmp dword ptr [j],0
00416B45 74 70 je _bw (416BB7h)
{
k = 1;
00416B47 C7 45 E0 01 00 00 00 mov dword ptr [k],1
while(k)
00416B4E 83 7D E0 00 cmp dword ptr [k],0
00416B52 74 63 je _bw (416BB7h)
{
l = 1;
00416B54 C7 45 D4 01 00 00 00 mov dword ptr [l],1
if(l)
00416B5B 83 7D D4 00 cmp dword ptr [l],0
00416B5F 74 4D je fnLoopDemo+0AEh (416BAEh)
{
for(m = 0; m < 5; m++)
00416B61 C7 45 C8 00 00 00 00 mov dword ptr [m],0
00416B68 EB 09 jmp fnLoopDemo+73h (416B73h)
00416B6A 8B 45 C8 mov eax,dword ptr [m]
00416B6D 83 C0 01 add eax,1
00416B70 89 45 C8 mov dword ptr [m],eax
00416B73 83 7D C8 05 cmp dword ptr [m],5
00416B77 7D 09 jge fnLoopDemo+82h (416B82h)
{
x = 0;
00416B79 C7 45 B0 00 00 00 00 mov dword ptr [x],0
}
00416B80 EB E8 jmp fnLoopDemo+6Ah (416B6Ah)
for(n = 0; n < 5; n++)
00416B82 C7 45 BC 00 00 00 00 mov dword ptr [n],0
00416B89 EB 09 jmp fnLoopDemo+94h (416B94h)
00416B8B 8B 45 BC mov eax,dword ptr [n]
00416B8E 83 C0 01 add eax,1
00416B91 89 45 BC mov dword ptr [n],eax
00416B94 83 7D BC 05 cmp dword ptr [n],5
00416B98 7D 09 jge fnLoopDemo+0A3h (416BA3h)
{
x = 1;
00416B9A C7 45 B0 01 00 00 00 mov dword ptr [x],1
}
00416BA1 EB E8 jmp fnLoopDemo+8Bh (416B8Bh)
x = 100;
00416BA3 C7 45 B0 64 00 00 00 mov dword ptr [x],64h
00416BAA EB 09 jmp _cw (416BB5h)
goto _cw;
00416BAC EB 07 jmp _cw (416BB5h)
}
x = 200;
00416BAE C7 45 B0 C8 00 00 00 mov dword ptr [x],0C8h
_cw:
__asm{}
}
00416BB5 EB 97 jmp fnLoopDemo+4Eh (416B4Eh)
_bw:
__asm{}
}
00416BB7 E9 6B FF FF FF jmp fnLoopDemo+27h (416B27h)
}
}
00416BBC 5F pop edi
00416BBD 5E pop esi
00416BBE 5B pop ebx
00416BBF 81 C4 14 01 00 00 add esp,114h
00416BC5 3B EC cmp ebp,esp
00416BC7 E8 BF A5 FF FF call @ILT+390(__RTC_CheckEsp) (41118Bh)
00416BCC 8B E5 mov esp,ebp
00416BCE 5D pop ebp
00416BCF C3 ret
--- 无源文件 -----------------------------------------------------------------------
在x = 100;这里,多了一条jmp跳转指令,怪哉怪哉!我项目代码多起来以后JMP的地址还不相同,搞得我都不知道是自己逻辑问题还是代码问题
抑或是性别问题,长相问题,人品问题,还是别的什么问题,其实微软很操蛋!
分享到:
相关推荐
在本文中,我们将深入探讨如何在Visual C++ 6.0(简称VC6.0)环境中使用libjpeg库来将BMP图像转换并压缩为JPEG格式。libjpeg是一个开源库,专为处理JPEG(Joint Photographic Experts Group)图像格式而设计。这个库...
这两个报告可能包含了他们构建汇编语言语法分析器的过程记录,以及遇到的问题和解决方案。通过阅读和分析这些报告,我们可以学习到实际操作中可能遇到的技术细节,例如错误处理、优化性能、处理复杂语法结构等。 ...
- **优势**:直接控制硬件,提高性能,处理特定硬件特性,解决C++无法直接处理的问题。 - **限制**:可移植性差,代码可读性降低,调试困难,过度使用可能导致代码维护难度增加。 4. **汇编指令的使用** 在内联...
在VC++(Visual C++)环境中,inline hook是hook技术的一种,它通过在编译时替换目标函数的代码来实现功能注入,这种方式效率高且隐蔽性强。本文将深入探讨VC inline hook的原理、实现方式及其应用。 ### 1. inline...
VC Inline Hook是一种在Visual C++环境下实现的代码注入技术,主要用于在不修改原函数代码的情况下,动态地改变程序的行为。这种技术通常应用于调试、性能监控、游戏修改等领域。以下是关于VC Inline Hook的一些详细...
2. **语法与指令**:VCMASM支持标准的x86汇编语法,包括指令集如数据处理指令(如ADD、SUB)、跳转指令(如JMP、JE)、控制流指令(如CALL、RET)等。开发者需要熟悉这些指令的用法和功能。 3. **宏和伪指令**:...
- **遗传算法**:模拟自然选择和遗传学原理解决问题的方法。 #### 九、三维图形编程 **9.1 概述** - **三维图形**:使用几何形状来模拟真实世界的物体。 **9.2 基本知识** - **9.2.1 初始化DXGraphics**:设置...
- **1999年**:DarkSpyrit提出使用系统核心DLL中的Jmp ESP指令完成跳转,以及M.Conover关于基于堆的缓冲区溢出教程的出现,表明了攻击技术正向更加隐蔽和复杂的方向发展。 #### 缓冲区溢出攻击背景知识与技巧 有效...
1. **VC6.0**:Visual C++ 6.0是一款经典的C/C++开发环境,提供了集成的编辑、编译、调试等功能。虽然它已经较为老旧,但在某些场景下仍然被使用。 2. **POJ系统**:POJ(Problem Online Judge)是一个在线评测系统,...
- **启动代码:** `_start`标签定义了启动点,通过跳转指令`jmp begin`实现。 - **系统初始化:** `cmain`函数负责初始化操作系统的各个组件,例如调用`InitShell()`函数初始化命令行界面。 - **系统退出:** 通过...
此命令会调用`makefile.vc`来编译项目,同时执行`setup-vc6`脚本。 3. **工程配置** 在解压后的目录中找到`jpeg.dsw`工程文件,双击打开并在Visual Studio中构建它。 - 在工程的设置中选择`C/C++`->`Code ...
1. **修改编译选项**:在 `jpeg.dsw` 工程中,通过“工程 -> 设置 -> C/C++ -> Code Generation”菜单,找到 “Processor” 和 “Use Run-Time Library” 两个选项,确保它们与你的主工程一致。 - 如果你的主工程...
其它不经常使用的加壳软体有ASPROTECT、PETITE 、NEOLITE、TELOCK等软体最多见的编程语言是Delphello,Visual Basic(略称VB),Visual C++(略称VC)了解些编程的常识,会让破解更加轻车熟道 底下来讲侦壳,此刻...
在Windows环境下,可以使用NMAKE工具,并且需要指定使用Visual C++环境的makefile文件(例如,fmakefile.vc)。在配置过程中,编译器可能会发出LNK4098错误,提示defaultlib"libcmt.lib"与其他库的使用存在冲突。...