## L15
在我们调试者(cracker)的眼中,当前运行的进程是这样的一个结构:

程序运行的流程就形如:start.exe运行一会(跳转到)→ api2处的函数 → api5处的函数 → 返回api2 → 返回start.exe运行一会 → 跳转到...不知道这样说你能否理解了?
点击Symbol标签,你就可以清晰的(*有时候不一定)看到整个进程的所有资源结构:


这是当前打开进程中使用的所有模块和它们的API。比如前面的图【L11-2】绿色圈出的ZwInformationThread:你就可以在打开的Symbol中搜索到这个API,也是按enter可以跳过去,这里就不演示了:

在搜索到的api上右键有一个toggle bp(切换断点),什么是断点我就不讲了,切换的含义就是把打开的断点变成关闭的,关闭的变成打开的。

先在回到CPU标签,你右键>search for>current moudle> constant >可以查找你当前打开页面的常量(这里的常量值汇编中的“立即数”)
current moudle是模块中的所有内存段
current rigion是在左下角打开的的内存区段这两个的区别,这个不太好解释(*涉及到进程的内存映像),其实就是一个程序分为.data,.text等段,rigion查找的是当前打开的段(就是左下角)内存显示的那些(memory map标签中切换打开的内存段),反汇编编译的是.text段的,搜module就是在.data+.text+idata+...全部的段里搜,搜的结果会更多一点。
反正你用current moudle就对了。
注:API是一个广义的名词,在当前上下文我们特指可以调用的“函数”。
为什么不用中文?我已经被条 角到对计算机相关的名词更敏感了,比如看到return,ref,stack,run,dump,memory,push,query,etc.脑子里有个一些专门的“通路”可以“秒解”,学计算机的懂得都懂,所以反应更快,更容易捕捉到信息,不是自己英文多好,而是真的这样看更舒服,不知道点哪里你只能自己翻译一下了,见谅。
前面提到的*有时候不一定是指:有些程序会【加壳】,所谓的壳就是一些保护进程不被调试的另外的程序。你理解为会让你看到的汇编代码变得乱七八糟无法难以跟踪难以理解就一种东西就对了。
当你在symbols里面看不到什么东西import的时候,你就要意识到知道程序加壳了,这边推荐你别焊了直接跑路呢,遇到困难直接放弃,这需要真正有逆向经验的人来脱壳,你现在弄和大学生军训完直接上战场开战斗机没有区别,让逆向大佬来搞就好(当然也有简单的壳)。