在ELF文件格式中,我们有一个Alignment字段,Segment Header Table即Program Header Table.
在 Windows PE 文件格式的情况下,他们将其带到下一个级别,节有两个对齐值,一个在磁盘文件中,另一个在内存中。PE 文件头指定了这两个值。
我对这种对齐一无所知。我们需要它做什么?如何以及在哪里使用它?同样,我不知道什么是二进制文件格式上下文中的对齐,但我们为什么需要它?
我的客户要求我编写一个自定义加密可执行文件,以防止许可系统轻易破解.现在,我明白这是一种虚假的安全感,但尽管如此,他仍然坚持这一点.
所以,我挖掘了我对可移植可执行文件的了解,并提出了这个想法:
跳到那里我有一个问题.我怎样才能做到这一点?如果我要设置一个函数指针,那么签名是什么?加载的可执行文件的main()函数的签名?或者我需要求助于集会吗?
我知道在加载代码后可能需要更正绝对地址.如何检查是否需要,以及如何实际执行此操作?
编辑:在Windows上工作并使用GCC进行编译.如有必要,我可以切换Microsoft编译器.
编辑2:澄清:我知道它几乎没有意义.我认为这代表任何类型的DRM.这取决于我的客户决定,尽管我警告他,但他仍然想要这个.
提前致谢.
我对Java知之甚少.我正在尝试读取一个包含int的文件和一个名为"Automobile"的类的各种实例.但是,当我反序列化它时,程序抛出一个ClassNotFoundException,我似乎无法理解为什么.
这是代码:
try {
FileInputStream fin = new FileInputStream(inputFile);
ObjectInputStream input = new ObjectInputStream(fin);
conto = input.readInt();
Automobile[] macchine = new Automobile[conto];
for(int i = 0; i < conto; i++) {
macchine[i] = (Automobile)input.readObject();
}
String targa;
System.out.print("\nInserire le cifre di una targa per rintracciare l'automobile: ");
targa = sc1.nextLine();
for(int i = 0; i < conto; i++) {
if(macchine[i].getTarga().equals(targa))
System.out.println(macchine[i]);
}
} catch(IOException e) {
System.out.println("Errore nella lettura del file "+inputFile);
} catch(java.lang.ClassNotFoundException e) {
System.out.println("Class not found");
} …Run Code Online (Sandbox Code Playgroud) 每篇文章都说.init_array部分是一个函数数组,但根据我的经验,它不是.
这是我为Android编译的libc.so的.init_array:
$ prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-objdump -s -j .init_array out/target/product/e910/obj/SHARED_LIBRARIES/libc_intermediates/LINKED/libc.so
out/target/product/e910/obj/SHARED_LIBRARIES/libc_intermediates/LINKED/libc.so: file format elf32-littlearm
Contents of section .init_array:
42000 e1620100 ffffffff 75940200 00000000 .b......u.......
Run Code Online (Sandbox Code Playgroud)
它包含4个字(小端):
000162e1
ffffffff
00029475
00000000
Run Code Online (Sandbox Code Playgroud)
000162e1并且00029475看起来像一些函数指针:
000162e0 <__libc_preinit>:
* as soon as the shared library is loaded.
*/
void __attribute__((constructor)) __libc_preinit(void);
void __libc_preinit(void)
{
162e0: b510 push {r4, lr}
* Note that:
* - we clear the slot so no other initializer sees its value.
* - __libc_init_common() will change the TLS area so the …Run Code Online (Sandbox Code Playgroud) 在THREE.js中,如果我有多次调用JSONLoader来加载这样的多个对象(简化示例):
function init() {
var loader = new THREE.JSONLoader();
loader.load("mesh1.js", createScene);
loader.load("mesh2.js", createScene);
}
function createScene( geometry ) {
if (geometry.filename == "mesh1.js") {
mesh1 = new THREE.Mesh( geometry, material );
scene.add( mesh1 );
} else if (geometry.filename == "mesh2.js") {
mesh2 = new THREE.Mesh( geometry, material );
scene.add( mesh2 );
}
}
Run Code Online (Sandbox Code Playgroud)
如何确定回调时返回的网格,特别是当它们经常无序到达时?
我正在尝试使用单个通用回调函数处理多个返回的网格.返回的几何中是否有一些属性指示我可以测试的原始文件名?
或者也许有一种更优雅的方式?也许为每个调用创建一个新的THREE.JSONLoader对象将有助于回调函数确定哪个网格已到达?
我感谢任何帮助/想法!谢谢!
我正在关注Lars Vogella的教程:http://www.vogella.com/articles/AndroidSQLite/article.html#todo
但我希望它可以在API 8上运行.我在API 11+上工作并执行以下操作以使其在API 8上运行.在Android Tools中我添加了一个支持库,并添加了以下导入:
import android.support.v4.app.ListFragment;
import android.support.v4.app.LoaderManager;
import android.support.v4.content.CursorLoader;
import android.support.v4.content.Loader;
import android.support.v4.widget.CursorAdapter;
import android.support.v4.widget.SimpleCursorAdapter;
Run Code Online (Sandbox Code Playgroud)
但Eclipse仍然给我错误:
The method getLoaderManager() is undefined for the type TodosOverviewActivity
Run Code Online (Sandbox Code Playgroud)
在方法中:
private void fillData() {
// Fields from the database (projection)
// Must include the _id column for the adapter to work
String[] from = new String[] { TodoTable.COLUMN_SUMMARY };
// Fields on the UI to which we map
int[] to = new int[] { R.id.label };
getLoaderManager().initLoader(0, null, …Run Code Online (Sandbox Code Playgroud) 在32位系统中,每个进程实际上具有2 ^ 32个字节的CONTIGUOUS地址空间.那么为什么链接器生成的最终可执行代码需要可重定位.有什么要求,因为生成的所有地址都是进程自己的地址空间中的虚拟地址,而其他进程不能使用相同的地址空间.因此,该过程可以放在它想要的任何地方.为什么要重新定位?
早上好
我开发了一个小型的angular2-client-app,它有路由.路由创建如下:
app.routes.ts
import { provideRouter, RouterConfig } from '@angular/router';
import { ContactComponent } from './components/contact.component/contact.component';
import { Home } from './components/home.component/home.component';
import {StudentRoutes} from './components/student.component/student.routes';
import {LecturerRoutes} from "./components/lecturer.component/lecturer.routes";
import {ProcessRoutes} from "./components/process.component/process.routes";
import {SchoolRoutes} from "./components/school.component/school.routes";
export const routes: RouterConfig = [
{ path: '', component: Home },
...ProcessRoutes,
...StudentRoutes,
...LecturerRoutes,
...SchoolRoutes,
{ path: 'contact', component: ContactComponent }
];
export const APP_ROUTER_PROVIDERS = [
provideRouter(routes)
];
Run Code Online (Sandbox Code Playgroud)
所以现在我的客户可以从组件到组件进行路由.
我的所有组件都扩展了一个父组件:base-component.ts
基component.ts
import { Component, Injectable, Inject, Input, Output, EventEmitter, OnDestroy, …Run Code Online (Sandbox Code Playgroud) 我正在尝试遵循一些教程和文档,并将webpack构建为我的sass文件分成css文件.
这一切都有效,只要我在require中证明完全相对路径:
require("../sass/ss.scss")
但我想用它:
require("./ss.scss")
然后我在配置中将'sassLoader'注释掉,我收到错误:
[1] "sassLoader" is not allowed
正如您所看到的,我一直在尝试使用内联设置:
sourceMap&includePaths[]=' + (PATHS.sass)
但他们被忽略了.
我究竟做错了什么?
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const validate = require('webpack-validator');
const merge = require('webpack-merge');
const ExtractTextPlugin = require('extract-text-webpack-plugin');
const PATHS = {
app: path.join(__dirname, 'app'),
js: path.join(__dirname, 'app', 'js'),
sass: path.join(__dirname, 'app', 'sass'),
build: path.join(__dirname, 'build')
};
const common = {
// Entry accepts a path or an object of entries.
// We'll be using the latter form given it's
// …Run Code Online (Sandbox Code Playgroud)我正在尝试在我的react native应用中实现加载器动画,但是单击动画后它不会触发加载器,尽管动画已经更改为true。
在下面查看我的代码。
componentWillMount(){
this.hideLoader();
}
showLoader = () => { this.setState({ showLoader:true }); };
hideLoader = () => { this.setState({ showLoader:false }); };
doSignup = () => {
this.showLoader();
}
render() {
console.log(this.state.showLoader);
return (
<View>
<TouchableOpacity style={{ marginTop: 25 }} onPress={this.doSignup}>
<View style={[ styles.button, { backgroundColor: '#5a0060' } ]}>
<Text style={{ fontSize: 20, color: Colors.white }}>Sign Up Now</Text>
</View>
</TouchableOpacity>
<View style={{ position: 'absolute', top: 0, bottom: 0, right: 0, left: 0 }}>
<ActivityIndicator animating={this.state.showLoader} size="small" …Run Code Online (Sandbox Code Playgroud)