查找main函数,在函数窗口Ctrl+F,搜索main
IDA 中有一个窗口叫做【字符串表】 该表收集了程序中所有字符串。
View => Open SubViews => Strings
双击搜索到的字符串
【1】是内存地址
【2】是IDA 为该地址对应数据取的一个标识符(或者理解成变量名)
【3】则是该内存对应的数据。
【右键】选择【 Jump to xref 】或 选中 aHiCtferInputYo 后直接按下快捷键【X】
会显示汇编窗口,两种形式,
图标视图
文本视图
转换伪代码方法: 在这段代码任意位置按下 Tab 键 或 F5 键
选中函数右键Rename Global item或者快捷键N
判断函数的返回值是否有意义。查找一下函数的所有交叉引用,确保这个函数每一处调用都用不到返回值
点击函数名,按下Y 键,将函数的返回值类型修改为void(也可以直接按下V键)
根据上下文信息判断参数或者变量的类型, 在标识符上按下Y 键,输入对应的类型
第一个元素地址处,右键,Array => Array element size 表示一个元素的大小,ArraySize 表示数组大小,根据上下文分析,dword_404040的元素大小为4字节,
数组长度为 32Array element size 可以通过调节第一个元素的大小来调整。在第一个元素地址上按下d 键切换大小。
修复后,元素数据以4字节整数解析,更加直观。
选择调试器"Local Windows debugger"
Start process
查看交叉引用,全局使用了一次
在反调试函数后代码中加断点,先运行程序,在"Attach to process"选择进程,