深入探索汇编与C交互及文件I/O操作
1. 灵活调用程序的技巧
在汇编代码中,我们可以通过两种方式调用程序,下面的代码片段展示了这一点:
mov ebx, pull8 ; 将标签pull8代表的地址加载到EBX
call pull8 ; 调用pull8代表的地址
call ebx ; 调用EBX中存储的地址
这种做法的好处是可以将程序调用当作参数来处理。例如在 randtest 里,我们把很多代码提取到 puller 程序中,然后针对不同大小的随机数多次调用 puller 。具体操作是把正确的随机数程序地址加载到 EDI ,再传递给 puller :
; 创建并显示一个8位随机值数组
mov edi,pull8 ; 将随机数子程序的地址复制到edi
call puller ; 按照[pulls]中的要求提取尽可能多的数字
在 puller 程序里,通过 CALL EDI 指令调用所需的随机数程序:
puller:
mov esi,dword [pulls] ; 将提取计数放入ESI
.grab:
dec esi ; 递减ESI中的
超级会员免费看
订阅专栏 解锁全文
5

被折叠的 条评论
为什么被折叠?



