小编L. *_*ang的帖子

启动谷歌浏览器并通过pywinauto输入网址的最佳方法是什么

我从博客(http://technapstar.blogspot.fi/2014/07/automation-with-pywinauto.html)中了解到关于启动谷歌浏览器并通过 pywinauto 输入网址的方法如下:

Python 3.6.1rc1 (v3.6.1rc1^0:e0fbe5feee4f9c00f09eb9659c2182183036261a, Mar  4 2017, 20:00:12) [MSC v.1900 64 bit (AMD64)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> import pywinauto
>>> pywinauto.__version__
'0.6.2'
>>> from pywinauto.application import Application
>>> app = Application().start("chrome.exe")

Warning (from warnings module):
  File "D:\Python\lib\site-packages\pywinauto\application.py", line 982
    UserWarning)
UserWarning: 32-bit application should be automated using 32-bit Python (you     use 64-bit Python)
>>> app.window_(title='New Tab')
<pywinauto.application.WindowSpecification object at 0x0000000002FFABE0>
>>> app.window_().TypeKeys('{F6}')
<pywinauto.controls.hwndwrapper.DialogWrapper object at 0x0000000004258320>
>>> app.window_().TypeKeys('{ESC}')
<pywinauto.controls.hwndwrapper.DialogWrapper …
Run Code Online (Sandbox Code Playgroud)

python pywinauto

5
推荐指数
1
解决办法
5830
查看次数

我的 Linux 可执行程序中的段 00 是什么(64 位)

这是一个很简单的汇编程序,12执行完就返回。

$ cat a.asm
        global _start

        section .text
_start: mov rax, 60    ; system call for exit
        mov rdi, 12    ; exit code 12
        syscall
Run Code Online (Sandbox Code Playgroud)

它可以正确构建和执行:

$ nasm -f elf64 a.asm && ld a.o && ./a.out || echo $?
12
Run Code Online (Sandbox Code Playgroud)

但是a.out的大小很大,超过4k:

$ wc -c a.out
4664 a.out
Run Code Online (Sandbox Code Playgroud)

我尝试通过阅读精灵内容来理解它:

$ readelf -l a.out

Elf file type is EXEC (Executable file)
Entry point 0x401000
There are 2 program headers, starting at offset 64

Program Headers:
  Type           Offset             VirtAddr           PhysAddr
                 FileSiz …
Run Code Online (Sandbox Code Playgroud)

linux assembly linker elf ld

3
推荐指数
1
解决办法
69
查看次数

从iso映像启动为什么引导加载程序的内存地址不是0x7c00

我写了一个小bootloader用于学习目的,它会打印出bootloader第一条指令的内存地址,肯定是0x7c00。看下面的汇编源代码运行良好。

boot.s

.code16
.global init
init:
  mov $0x07c0, %ax
  mov %ax, %ds
  mov $0x07e0, %ax
  mov %ax, %ss
  mov $0x2000, %sp

  call next
next:
  pop %bx
  sub $(next-init), %bx  # starting point of memory address, now stored in %bx
  call print_register
  jmp .

print_register:  # always print out value in %bx
  mov %bh, %cl
  shr $0x4, %cl
  and $0x0f, %cl
  call print_digit
  mov %bh, %cl
  and $0x0f, %cl
  call print_digit
  mov %bl, %cl
  shr $0x4, %cl
  and $0x0f, %cl
  call …
Run Code Online (Sandbox Code Playgroud)

x86 assembly osdev bootloader iso-image

1
推荐指数
1
解决办法
289
查看次数

标签 统计

assembly ×2

bootloader ×1

elf ×1

iso-image ×1

ld ×1

linker ×1

linux ×1

osdev ×1

python ×1

pywinauto ×1

x86 ×1