IDA学习笔记
+ -

IDA的for循环

2024-01-10 3 0

自己写了一个测试小程序,拖到了IDA中反汇编。
其中一段反汇编代码如下:

.text:0041194D                 mov     [ebp+i], 0
.text:00411954                 jmp     short loc_41195F
.text:00411956 ; ---------------------------------------------------------------------------
.text:00411956
.text:00411956 loc_411956:                             ; CODE XREF: _main_0+A5↓j
.text:00411956                 mov     eax, [ebp+i]
.text:00411959                 add     eax, 1
.text:0041195C                 mov     [ebp+i], eax
.text:0041195F
.text:0041195F loc_41195F:                             ; CODE XREF: _main_0+84↑j
.text:0041195F                 cmp     [ebp+i], 0Ah
.text:00411963                 jge     short loc_411977
.text:00411965                 mov     eax, [ebp+i]
.text:00411968                 add     eax, 1
.text:0041196B                 mov     ecx, [ebp+i]
.text:0041196E                 mov     dword_41A138[ecx*4], eax
.text:00411975                 jmp     short loc_411956
.text:00411977 ; ---------------------------------------------------------------------------
.text:00411977
.text:00411977 loc_411977:                             ; CODE XREF: _main_0+93↑j
.text:00411977                 xor     eax, eax

这其实是一段典型的循环汇编代码。但为了方便快速的还原成C语言代码,我们需要对汇编代码进行分隔分析,掌握诀窍。以后就可以快速的实现FOR循环代码的还原。

112457655496

而真实的C代码如下:

    for (int i = 0; i < 10; i++)
    {
        a[i] = i + 1;
    }

其实这从汇编的角度来讲,i是执行i++之后,再和条件判断。

而FOR循环分为4部分,从上到下依次为:
1.初始化部分
2.变量变化部分i++
3.条件判断部分
4.循环内部代码

0 篇笔记 写笔记

Windbg 反汇编命令u/uf
汇编指令u,uf对指令的地址进行反汇编或对某一个函数进行反汇编u @$exentry L10L10表示控制显示0x10行反汇编,即16行0:001> u @$exentry L10notepad!WinMainCRTStartup:01006420 55 ......
内核事件等待KeWaitForSingleObject超时处理和IPR的完成例程
Windows内核中通过KeWaitForSingleObject等待事件完成,并且设置IPR的完成例程NTSTATUSIrpCompletionRoutine( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, ......
Windbg 格式化命令.formats
以多种格式显示表达式的值windbg默认为16进制.formats 1000:001> .formats 100Evaluate expression: Hex: 00000000`00000100 Decimal: 256 Octal: 0000000000......
MBR反汇编分析
window开机流程流程:加电—>BIOS—> MBR—> DPT—> pbr—> Bootmgr—> bcd—> Winload.exe—-—-> 内核加载–> 整个windows7系统细节在CPU上电之后,若由硬盘启动,则BIOS将硬盘的主......
使用ZwQuerySystemInformation函数枚举进程
使用ZwQuerySystemInformation函数枚举Windows系统进程typedef struct _SYSTEM_PROCESSES { ULONG NextEntryDelta; //构成结构序列的偏移量; ULONG......
DevCon update命令实现
int cmdUpdate(_In_ LPCTSTR BaseName, _In_opt_ LPCTSTR Machine, _In_ DWORD Flags, _In_ int argc, _In_reads_(argc) PTSTR argv[])/*++Routine Descript......
Windows驱动中读取注册表中的DWORD32值
ULONG GetRegisterMicChannelDWORD32(){ HANDLE hHandle = NULL; OBJECT_ATTRIBUTES oa; NTSTATUS statues; UNICODE_STRING path; UNICOD......
Windows内核提高KeSetTimer、KeWaitForSignelObject定时精度方法
KeSetTimer定时精度是因为windows系统的时钟分辨率仅为15ms,由于播放软件只是一个应用程序,十分依赖它的运行环境—操作系统。因此不得不提及Windows操作系统的时间片和时钟分辨率。软件经常使用的API函数GetTickCount () 返回自系统启动以来的ms数,由于系统分辨率的限......
Windows内核RtlZeroMemory反汇编分析
Windows驱动中一个简单的代码封装,对内存进行清空操作。NTSTATUS MyZeroMemory( PUCHAR pData, ULONG nLen){ RtlZeroMemory(pData, nLen); return STATUS_SUCCESS;}RtlZero......
批处理 FOR循环
讲FOR之前呢,咋先告诉各位新手朋友,如果你有什么命令不懂,直接在CMD下面输入:name /?这样的格式来看系统给出的帮助文件,比如for /? 就会把FOR命令的帮助全部显示出来!当然许多菜鸟同志都看不懂….所以才会有那么多批处理文章!!!!俺也照顾菜鸟,把FOR命令用我自己的方式说明下!......
批处理 FOR循环参数
FOR命令中有一些变量,他们的用法许多新手朋友还不太了解,今天给大家讲解他们的用法!先把FOR的变量全部列出来~I - 删除任何引号(“),扩展 %I%~fI - 将 %I 扩展到一个完全合格的路径名%~dI - 仅将 %I 扩展到一个驱动器号%~......
Windbg .formats命令
.formats命令用于对表达式进行格式化显示,相当于C语言的printf。.formats命令的前提是当前的数字是什么进制。可以通过命令n查看和设置。n=16时3: kd> nbase is 163: kd> .formats a0Evaluate expression:......
IDA的for循环
自己写了一个测试小程序,拖到了IDA中反汇编。其中一段反汇编代码如下:.text:0041194D mov [ebp+i], 0.text:00411954 jmp short loc_41195F.text:00......
精确获取系统时钟
uint64_t get_timestamp1(){ // struct timeval tm; // gettimeofday(&tm, NULL); // return (uint64_t)(tm.tv_sec*1000+tm.tv_us......
作者信息
我爱内核
Windows驱动开发,网站开发
好好学习,天天向上。
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!